17.20.フラグ=旗=標識 | |||||||||
標識って何?RPGのc仕様書の中に「標識」という言葉が出てきます。これは、 「プログラムの内部で、オンかオフかで、動きの制御をする為の特殊なフィールド」 のことです。RPG独特の機能です。
RPGでは、この標識は、次のごとくに、コーディングしていきます。
その他あり... これらは、 c仕様書の中で記述される部分により、「制御レベル」、「条件標識」、「結果の標識」の3種類に分かれます。 たとえば、L1という標識も、有る場合は、「条件標識」となり、ある時は「制御レベル標識」となります。
標識の2つの状態(オンとオフ)の指定;「~がオンだったら、オフだったら」この標識は、オンとオフの2種類の状態が有ることを、理解して下さい。 「オンだったら、このようにする」、「オフだったら、このように動く」、とプログラムの中で定義する事で、「条件分岐」をしていくのです。 下図を見て下さい。標識90が、オンの時とオフの時で、実行している内容が、分かれていますね。条件により、ロジックが分岐していますね。
さて、今、お話ししたように、RPGでは、標識というと、3種類あります。
です。暗記して下さい。ここでは、最初の2つに注目します。なぜなら、RPGサイクルに、大きく関与しているのが、「条件標識」と「レベル標識」だからです。 標識のコーディング例
条件標識の例さて、この明細サイクルで部分で使われる、標識で、左側から9カラムくらいに有るものを、「条件標識」といいます。上の例では、
のOFが「条件標識」です。記述された行を、実施するか、否かを制御していますね。上の例を、日本語で言うと、
となります。もし、OFFの時にしたいならば、
と指定します。Nは否定のNotのNです。上の例を、日本語で言うと、
となります。(実際では、あまり、オーバーフローがオフの時、という指定は無いですけど...) 制御レベルの例同じソースの中で、
のL1が、制御レベルです。この記述部分は、仕様書のコードCの直後ですね。重要なのは、RPGで、この部分にL1とか、L2とか記述すると、それは「合計演算」の時にして欲しい事を記述していることになります。そうです。「明細演算」と「合計演算」との区別は、Cの隣にLxが無ければ「明細演算」、Cの隣にLxが有ると「合計演算」となります。このコーディングを日本語で表現すると、
となります。 また、この制御レベルで「L1がオフだったら」を記述する方法はありません。もし、「制御レベルでNot L1」ということは、つまり、「合計演算では何もしないで、スキップして、明細演算で何かをする事」になります。だから、この場合、何も記述しないで、明細演算部分で、動作を記述すれば良いことになります。 その他の条件標識の指定の仕方
これは、95がオフの場合は、RRN01に数字を+1しています。さらに、95がオフの場合は、SFL01を書き出しています。もし、95がオンの場合は、この2つの処理はしません。(このRRN01に数字を加算したり、SFL01を書き出したり、なんて事の意味はまだ気にしないで下さいね。)このコードと同じ動きをする指定方法が、他にもあります。
これは、*IN95が*OFFと同じ場合は、RRN01に数字を+1しています。その後、SFL01を書き出しています。もし、*IN95が*ONと同じ場合は、この2つの処理はしません。*ONと*OFFはこのあと、すぐに説明しますね。 この、*INxxという表現も、使われます。標識そのものは同じものですが、記述の仕方が異なっているだけです。つまり、 *INxxは、仕様書に記入するとき、条件標識の位置を使わず、演算項目1、命令語、演算項目2の位置に記入する方法で使われます。 N95は、*IN95 IFEQ *OFFとして、表記出来るわけです。 さらに、
という、表記もできます。でも、あまり最後の方式(DO文)は、使われていません(日、米ともに)。まあ、ここでは、条件標識を理解してもらえれば、良いですので、どれがいいの、悪いの、は、ここでは取り上げません。あなたの会社の先輩に聞いてみて下さい。まずは、どれか一つの指定方法を学んで下さい。 *INのバリエーション*INの形式はよく使います。これらは、演算項目1、または、演算項目2、または、結果のフィールドで、使います。7 〜 8桁の制御レベル標識や9 〜 17桁の条件付け標識、そして54 〜 59桁の結果の標識では、*INの形式で指定はできません。この他の例を上げますと、
この他にもありますが、今の段階ではこんなところを覚えておきましょう。これは、あくまで、表記方法が2種類あって、各々がc仕様書の中で、使われるところがちがうのだよ、よ言っているだけです。表の中で※は、指定できるけど、普通は使わないものです。たとえば、L1を結果の標識で、変更してしまうことはしません。 もし、全ての標識を見たい方は、RPG標識の一覧を見て下さい。 形象定数:*ONと*OFFここで、皆さんに覚えて欲しいプログラム上の、約束事があります。
これは、理屈では無く、暗記して下さい。たとえば、95という標識が、オンの場合、その特殊なフィールドには、「1」が入っていて、オフの場合は、「0」が入っています。これを記述するとき、'1'でも良いし、*ONでも良いのです。'0'でも良いし、*OFFでも良いのです。*ONや*OFFは、形象定数です。(まあ、予約語みたいなものです。コンパイラーがプログラマーの為に準備した、定数です。) したがって、先ほどの例を、下のように、書くことが出来ます。
と、
は同じ事です。
起立、礼、着席 1999/4/10 |
|
You are at K's tips-n-kicks of AS/400
|
|
|||
|
|