RPG

495. %MAXの使い方

%MAXはいくつかの候補のうちの最大値を選択する組込み関数である。

RPGだけでなく他の言語でも最大値を求める関数はサンプル・ソースなどに
数多く取り上げられているが何故かC言語のライブラリー関数にも
用意されていない。
SQLでも MAX関数が用意されているほどポピュラーな関数である。

[TESTMAX : %MAXサンプル・ソース]

ソースはこちらから

0001.00 H DFTNAME(TESTMAX) DATEDIT(*YMD/)                                     
0002.00 F******** %MAX のテスト ********************************************  
0003.00 F*                                                                    
0004.00 F*****************************************************************    
0005.00 D SU1             S              4S 0 INZ(30)                         
0006.00 D SU2             S              4S 0 INZ(78)                         
0007.00 D SU3             S              4S 0 INZ(45)                         
0008.00 D MAX             S              4S 0                                 
0009.00 D MAXC            S              4A                                   
0010.00 D ANS             S              1A                                   
0011.00                                                                       
0012.00  /FREE                                                                
0013.00    MAX  = %MAX(SU1: SU2: SU3);                                        
0014.00    MAXC = %EDITC(MAX:'Z');                                            
0015.00    DSPLY ('MAX = ' + MAXC) '' ANS;                                    
0016.00  /END-FREE                                                            
0017.00 C                   SETON                                        LR   


  

RPGでもいつかは提供されるものと思っていたがようやくOS Ver7.5
%MAXという組込み関数が標準装備されるようになった。
遅きに失したくらいである。

IBMもこのことにも早くから気づいたいたようでOS Ver7.2からPTFとして
提供されるよになったが Ver7.2~ 7.4でも標準としてILE-RPGの
中には組み込まれずに専らPTFとして提供のみであって
ようやくVer7.5で使えるようになった。
 
ただしVer7.2~7.4のユーザーではPTFは適用されていても
SEUで%MAXを使うとエラーとして扱われてしまう。
もちろん Ver7.2~7.4のRPG解説書には %MAX は紹介されてない。
しかしコンパイルしてみると正しく%MAXも組み込まれて
コンパイルすることができる。
_