プログラムの構造(http://habrahabr.ru/blogs/atnikvariat/115813/)、単純な算術関数(http://habrahabr.ru/blogs/atnikvariat/115821/)および変数の説明(http: //habrahabr.ru/blogs/atnikvariat/115849/)さらに進んでいきます!
今回は、条件の利点に精通します(また、最後に知識のための追加の小さな贈り物を受け取ります)。
だから、プログラミングに少しでも興味がある人なら誰でも、ほとんどすべてのYaPにあることを覚えていると思います-IF(If)などの演算子は、確かにCOBOLにあります。
どのように記録されますか?
IF <条件>
<アクション1>
(オプションのELSE)
END-IF。
ご注意 これは重要です:
COBOLの各式は「。」(ドット)で終了しますが、IFは1つの式と見なされるため、ここのドットはEND-IFの後にのみ配置されます。
注意してください!
可能な条件は次のとおりです。
1.変数のデータ型を確認します。
数値(IS NUMERIC)-変数に数値が含まれていることを確認します。
アルファベット順(ISアルファベット順)-変数に文字とスペースのみが含まれていることを確認します。
アルファベット(大文字)およびアルファベット(大文字)(IS ALPHABETIC-UPPERおよびALPHABETIC-LOWER)-大文字のみ、または大文字とスペースのみが含まれていることをそれぞれ確認します。
入力されたデータの正確さと、検出されたエラーの対応する処理を検証するために使用され、使用されています。
例えば
WS-Aが数値の場合
WS-AからWS-Bへの移動
その他
ディスプレイ「エラー!」
END-IF。
2.比較:
演算子(完全表記)、省略表記、意味
より大きい>より大きい
次より大きくない>
より小さい<より小さい
未満ではない<未満ではない
等しい=等しい
等しくない=等しくない
より大きいまたは等しい>> =以上
より小さいか等しい<=以下
そして、数字の比較ですべてが明確であれば、文字変数の比較を明確にする必要があります。 COBOLは、右端に追加されたスペースを使用して、比較された値を同じサイズに調整します。 その後、ASCII、EBCDIC(メインフレーム上)、またはコンパイラーによって指定された別のエンコーディングに従って、文字ごとの比較が左端の文字から始まります。
テキスト入力が>「オレンジ」の場合
「オレンジ」の表示
テキスト入力の表示
その他
テキスト入力の表示
「オレンジ」の表示
END-IF。
アップルに入ると、オレンジより「小さく」なりますが、アップルは「大きく」なります。
3.番号の符号を確認します。
IS POSITIVE-正の数。
IS NEGATIVE-数値は負です。
IS ZERO-数値はゼロです。
IS NOT POSITIVE-数値は正(0または負)ではありません。
負ではない-数値は負ではありません(0または正)。
ゼロではない-数値はゼロではありません。
例:
100をWS-RESULTに移動します。
「WS-RESULT IS」、WS-RESULTを表示します。
WS-RESULTがゼロでない場合
「WS-RESULTはゼロではありません!」
END-IF。
WS-RESULTがゼロの場合
「WS-RESULT IS ZERO!」と表示します
END-IF。
WS-RESULTが正でない場合
「WS-RESULTはポジティブではありません!」
END-IF。
WS-RESULTが負でない場合
「WS-RESULTは負ではありません!」
END-IF。
WS-RESULTが正の場合
「WS-RESULT IS POSISTIVE!」と表示します
END-IF。
WS-RESULTが負の場合
「WS-RESULTはゼロではありません!」
END-IF。
この場合の出力は次のようになります。
WS-RESULTは000100です
WS-RESULTはゼロではありません!
WS-RESULTは負ではありません!
WS-RESULTは正です!
4.条件付き変数の使用:
前のレッスンの1つで、変数88のレベルに言及しました。今度は、より密接に対処するときです。 このタイプの変数には説明がありません;宣言するとすぐに初期化され、別の変数のサブレベルにしかできません。 他のプログラミング言語のCASEの特定の類似物として使用され、IFがチェックされる値を保存します。 例:
DATA DIVISIONで説明し、初期化します。
01 NUMBER-CHECK PIC S9。
88 NC-ONEバリュー1。
88 NCゼロ値0。
88 NCマイナス値-1。
PROCEDURE DIVISIONで使用します。
NUMBER-CHECKを受け入れます。
NC-ONEの場合
「NUMBER-CHECK IS ONE」と表示します
END-IF。
NCマイナスの場合
「NUMBER-CHECK IS MINUS」と表示
END-IF。
NCゼロの場合
「NUMBER-CHECK IS ZERO」と表示します
END-IF。
仕組み:
NC-ONE、NC-MINUS、NC-ZEROはNUMBER-CHECKに割り当てられた変数です。IFNC-ONEを使用すると、コンパイラは実際に「置換」します
NUMBER-CHECK = 1の場合
VALUEに加えて、VALUES <value-of> THRU <value-to>を使用できます。この場合、88 NC-ONE VALUES 1 THRU 10では、NUMBER-CHECKに1〜10の範囲で保存された値がチェックされます。
上記に加えて、IFはNOT、AND、およびORをサポートします。たとえば、IF NOT WS-A = WS-BまたはIF((WS-A = WS-B)AND(WS-A = WS-RESULT))OR(WS-RESULT = WS-B)。
コメントで質問や提案を待っています。
次の会議まで! 今後さらに多くの興味深いことがあります)
ボロンツォフ「nerfur」ビャチェスラフ。 2011年。