CL

197. CLPの進化形

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の進化が大きいことがおわかり頂けただろうか?