CLPが進化して効率良くなったのは
(1) DEFINED定義
変数をRPGのDS(=DataStrinture)と同じように
構造化して定義できるようになった。
ほとんどのCLPで DEFINEDを利用している。
これはひとつのフィールドを複数のサブ・フィールドに分割して
同時定義できる方法である。くわしくは「155.フィールドの多重定義をするDEFINED」
この定義は弊社でもほとんどのCLPで利用している。
(2)サブ・ルーチン
CLPでCALLSUBRでサプ・メーチンが定義できるようになり
特に一番最初だけ実行するサブ・ルーチンを
RPGの *INZSR と同じように INZSUBRサブ・ルーチンとして
定義してパラメータの処理などするようにすれば
本体のロジックが見やすくなった。
くわしくは「115.CLP でもサブ・ルーチン」
(3) 変数 *INT
変数として *INT(=4バイトの整数: C言語の 10I,0と互換)
が定義できるのでAPIのINT定義に使うことができる。
(4)複数個のDCLF定義
ファイル定義として DCLFが複数個定義できるようになったので
RPGのように複数のファイルを同時に扱うことができるようになった。
「121.データ・ベースをCLPで保守する」
(5) LOOP処理
CLPでもDO-LOOPとしてLOOP文がRPGと同じように使うことができるように
なったのは使いやすくなっている。
「192.CLPでもLOOP演算」
(6) RUNSQLによるSQLの実行
CLP内部でもRUNSQLを使ってSQL文を実行することができるので
いちいちRPGやCOBOLを作らなくてもCLPだけでファイルへの
レコードの追加/変更/削除を行うことができる。
「43.RUNSQLコマンド」
(7)ポインタの定義
変数に対するポインタやポインタを基底とする変数の定義も
できるようになったのでAPIの変数に使えるようになった。
APIを使って高度なプログラムを開発するには
ポインタとNULL(=0x00)の理解は必須である。
NULLを理解していないとAPIは使えない。
CLPでAPIを扱うにはC言語の開発経験があったほうがよい。
「148.CLPでポインタを学習する(1)」
…このようにCLPの進化は目覚ましてものがある。
IBM iが古いと宣う人は古い技術しか知らない、つまりその人が古いのである。
Javaなどバグを抱えたままの言語よりIBM iははるかに進化している。
現在、開発中の弊社の最新の製品でも90%以上がCLPによって
開発されておりRPGやC言語は3%程度しか使われていない。
(これはもちろん弊社がRPGやC言語が苦手ということではない)
サービス・プログラム(*SRVPGM)やサブ・ファイルの表示にだけは
C言語やRPGによって開発されている。
サブ・ファイルの処理はRPGが最も適しているし
スプール・ファイルはストリーム・ファイルなのでRPGでは無理があり
動的な長さの変数の扱いには限度がある。
スプール・ファイルの処理に最も適しているのはやはりC言語である。
また今、流行のAIとのREST APIによね通信はPythonが最適である。
PythonがAI開発に向いているといわれるのはREST APIの扱いに
優れているからである。
新製品:Chao!! では主要なモジュールはPythonが製品のコアになっている。
いずれにせよ CLPの進化が大きいことがおわかり頂けただろうか?
