RPG

571. 次のRPGの進化は

 
 
Javaなどの他の言語に比べてRPGはリリース毎に進化している。
次のRPGの進化に期待するのは一行に複数命令を
記述することができるようにすることだろう。
 
 
現在のフリー・フォーマットでは

/FREE
   SRCDTA = OE + %SUBST(VALUE:POS-2:2); 
   P = 3;                               
   KJ = 0;                              
   ITER;  
/END-FREE                              

のような記述を (/FREEの記述は必ずしも必要でない)

 /FREE
   SRCDTA = OE + %SUBST(VALUE:POS-2:2);
   P = 3; KJ = 0; ITER;
 /END-FREE

と書くことができるようになれば
ソース・ステートメントは短くなるし
書き方によっては非常に見やすくする。
 
 
フリー・フォーマットで文末を示す文字「;」(=セミコロン)を
入れることになっているので
コンパイラーにとっても問題はないと簡単に実現することが
できるはずである。
この文末の「;」(=セミコロン)はC言語の文末の「;」(=セミコロン)と全く同じでありC言語では変数の定義を

  char job[10], user[10], jobnbr[6], outq[10], outqlib[10], date[6];
  char type[1], prtdev[10], langid[3], cntryid[2], ccsid[5];        
  char dftccsid[5], cymddate[7], sbmmsgq[10], sbmmsgqlib[10];       
  char jobid[ID_LEN], ascnbr[6], m_ccsid[5], ref[133];              
  decimal(5, 0) dftCCSID;                                           

のように文字「,」(=カンマ)で区切って複数個をまとめて
定義することができるし演算命令も

  tombr[10] = 0x00;                                   
  trim(file); trim(tofile); trim(tolib); trim(tombr); 

のようにtrim関数を一行のうちに複数同時に定義することができる。
演算命令の最後には;」(=セミコロン)を必ずつけるわけだから
一行にいくつもの演算命令を入れても簡単に識別することができる。
逆になぜ初めから複数演算をサポートしなかったのかが
不思議なくらいである。
RPGのフリー・フォーマットはC言語を標榜しているようなところがあるので
最初から複数命令をサポートしていても良かった。
RPGのフリー・フォーマットは祖言語に近づいてきていて
それでしてC言語より直観的でやさしい記述になってきている。
米国IBMからのアンケートが来れば方々してみようと思う。

次のリリースではフリー・フォーマットでは
一行に複数の演算命令を書くことができるように
なるかも知れないのは自然な進化の流れである。
この機能は実現して欲しいものであると同時に進化の過程で
やがては実現されることと思う。
 _