RPG

563. どれがやさしいと感じる?

①文字列 DSP40 に ‘MSG’という文字列を入れる

 RPG III       MOVEL 'MSG'     DSP40
 C言語         strcpy 'MSG' DSP40
 CLP           CHGVAR &DSP40 VALUE('MSG')
 FF-RPG        DSP40 = 'MSG';

②文字列 DSP40 に文字列 CMDSTRを追加する

 RPG III           CAT CMDSTR     DSP40
 C言語        strcat(DSP40, CMDSTR);
 CLP          CHGVAR DSP40 VALUE(&DSP40 *TCAT &CMDSTR)
 FF-RPG       DSP40 = %TRIMR(DSP40) + 'MSG';

③文字列 DSPA と 文字列 DSPB を結合して CMDSTR に入れる

RPG III      DAPA   CAT  DSPB       CMDSTR
C言語     strcat(CMDSTR, DSPA);
             strcta(CMDSTR, DSPB);
CLP          CHGVAR &CMDSTR VALUE(&DSPA *TCAT &DSPB)
FF-RPG       CMDATR = %TRIMR(DSPA) + DSPB;

============================================================

[総評]

C言語では文字列のコピーは strcpy, 結合は strcat, または strncat
を使う。
CLPでは文字列の結合は *CAT または *TCATを使う。
RPG の場合でも文字列の結合は CAT または MOVE などを駆使する。
これらにくらべて FF-RPG は + 記号だけで結合することがでる。
FF-RPG が一番、直観的で初めて見る人でも意味がわかる。

FF-RPG (=FreeFormat) は文字列の結合も + で表せるし
数字の加算ももちろん + 記号で表すことができる。
これに比べてRPG III ではMOVE や MOVELなど複数回の組み合わせが
必要になったりするのでプログラマーの書き手の個性が現れやすい。
C言語も strcat や strcpy というMOVEに代わる演算なので
これも覚えなければならない演算である。
+ 記号で表現するほうがはるかにわかりやすい。
FF-RPGでさらに望むことは一行に複数の演算を書くことが
できないことである。
C言語はFF-RPGと同じように行末に; (=セミコロン)で終わるので
一行に複数行を記述することができる。
FF-RPGは複雑に見えないようにするためか
一行に複数の演算を記述することはできない。
ただしその一方で%LEN, %SIZEなどの組込み関数の種類が増えて
便利になってきている。
C言語もVC, Javaなどもほとんど言語として進化していないが
RPGだけは進化し続けている。
RPGを古いというのはRPGの進化を勉強していない自分自身が
古い人の言うことである。

RPGより生産性の高くてやさしい言語があるとすれば
Pythonだけである。