COBOL(パート4)-IFと彼の友人...

プログラムの構造(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年。






All Articles