RPG

507. 数字から文字へのMOVE は? (2)

昨日の数字を文字にゼロ消去しないでMOVEする方法の
解決案が出た。
_

0006.00 D NO#             S              2S 0 INZ(2)
0007.00 D FLD2            S              2A         
 :
  /FREE
     FLD2 = %RIGHT('00' + %CHAR(NO#):2); 
  /END-FREE

[解説]

先頭に十分な個数分の ‘0’ を入れておいて
%CHAR で変換した文字列の右橋の桁数分を
取得するというものである。

この方法であればフリー・フォーマットの一行だけで
スマートに解決することができる。
ただし

  C                MOVE NO#        FLD2

をフリー・フォーマットで表現したものだと読み手が
すぐに理解できるかというとそうではない。
OS Ver7.1 からは /FREE や /END-FREE の記述は
必要ないので無理やりにも

  C                MOVE NO#        FLD2

と記述しておいたほうが意図は読み手に伝わりそうである。
プログラムを記述するときに大切なことは
第三者にもロジックの意図が伝わりやすいようにと
意識することが大切である。
なぜならそのプログラムを書いた本人でさえも
時間が経てば忘れてしまって自分も第三者になってしまうからである。

_