最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

7.13.*INZSRについて

[ Previous ] [ HOME ] [ Upper ] [ Next ]


皆さんは、*INZSRを利用してますか。昔はこのサブルーチン無かったんですよ。NEWS 3X/400 (今のNEWS/400) Feb.1991の記事に面白いものがありました。Jennifer Hamiltonさん(IBMトロント研究所の言語開発チームメンバー)の記事です。

元々*INZSRは1P出力前に実行したい内容をコードする目的だったのです。つまりO-SPECで1Pとすると、C-SPECをスキップして、まず印刷してしまいます。すると時間の印刷ができません。UDATEはO-SPECに定義できるのですが、時間はRPGではTIME命令で取り出すしかありません。そこで、1P出力する前に実行するサブルーチンをIBMは追加したのです。(V1R3.0)。

ところで、この*INZSRも気を付けるべき点があります。

  1. 一つは、LRをオンにしないで、RETURNした後で、再びそのプログラムを呼び出した場合です。2度目以降は、*INZSRを通過しません。LRをしてない場合は、ファイルカーソルやRPG内部のフィールドの値などすべて残ってしまいますが、*INZSRは、一度実行されたという記録が残るので、2度目は実行されません。困るのなら、*INZSRは使わず通常のサブルーチンにするか、2度目以降は強制的にEXSR *INZSRをします。
  2. もう一つは、サイクルの場合、最初のレコードが読まれる前に、*INZSRが実行されますので、*INZSRの中で、プライマリーファイルのレコードの処理はしてはいけません。

以上の2つの点に気を付ければ、とても便利なコードです。どんどん使いましょう。


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送