COBOLの紹介-パート3

残念ながら、前の記事でいくつかの重要なキーワードを示すのを忘れていました。

分割するため。

WS-AによるWS-Bの分割WS-RESULT REMAINDER <変数>の提供。

REMAINDERを使用して、部門からのRESIDUEが書き込まれる変数を指定します。

数学演算の場合:

また、操作後にROUNDEDを追加すると、余分なテールを単に「破棄」するのではなく、結果が丸められるようになります。
WS-BにWS-Aを追加して、WS-RESULT ROUNDEDを提供します。

そして今、私たちは新しいことを学び続けています。 変数値の奇妙な派生の驚きを払拭するという約束を果たすために、今回はPICTURE IS(別名PIC)と変数フォーマットを分析します。


そして、再びデータ部に戻ります。
変数の説明がある行をもう一度考えてみましょう。
01-変数のレベル。
WS-Bは変数の名前です。
PICは、変数の形式の説明が後に続くことを示すキーワードです。古い形式はPICTURE ISです。
9(3)-変数「9」の文字のタイプとその番号「3」。

レベル変数。
通常の変数の場合、ユーザーは01から49までのレベルと77までのレベルにアクセスできます。変数のレベルは、変数のグループ内の階層を表します。 例えば
01顧客記録。
05顧客名PIC X(10)。
05 CUSTOMER-ADDRESS PIC X(30)。

レベル77は、変数をELEMENTARYとして宣言します。つまり、サブ変数を持つことはできません。
レベル88では、変数を条件付きとして、かなり洗練された機能的な形式で宣言します。次回はさらに詳しく説明します。
コンパイラの製造元によって導入された、または現在必要のないレベルがいくつかあります。

変数の名前。
変数名は数字、文字、および「-」で構成できますが、「-」で始まってはなりません。
変数名は30文字以下にする必要があります。

可変形式の説明。
COBOLの変数にはどのような記述文字が存在するかを検討してください。
それらは、「通常」と「編集」の2つのグループに分けられます。

通常のものには
9-1桁。

Vは、整数部と小数部を分離する記号です(各変数に1回だけ適用できます)。

S-「±」記号は、変数の形式の最初の文字である必要があります(各変数で1回のみ使用できます)。

Xは1つの英数字、つまり 数字、文字、スペース、特別。 文字。

Aは、単一文字の記号またはスペースです。

シンボルの編集-それらのおかげで、計算に関与しない変数が説明されますが、変数の表示/印刷の外観を微調整できます。

Z-すべての先行ゼロが削除されるという違いで9'kiを置き換えます。

$-コンパイラに指定された「通貨記号」、デフォルトでは基本的にドル記号は、説明の最初の文字としてのみ使用されます。 一度だけ使用できます。 その値は、環境部で設定されます。 助けを借りて

*はZの類似物ですが、先行ゼロは*に置き換えられます。

-(マイナス)-最初と最後の両方の文字で指定できますが、一度だけ指定できます。 数値が負の場合はマイナスが表示され、そうでない場合は空のスペースが表示されます。

+(プラス)は「-」(マイナス)に類似していますが、正の数の場合は「+」が表示され、負の数の場合は「-」が表示されます。

。 (ドット)は小数点です。 その場所に正確に「ポイント」が表示されます。

、(コンマ)-コンマ。 たぶん変数に少し。

/(スラッシュ)-スラッシュ記号。 たぶんいくつか。 日付で一般的な「スラッシュ」を出力します。

0(ゼロ)-「ゼロ」。 この時点で0が表示されます。

B(空白から、空)-「スペース」。

しかし最も重要なことは、理解できるように、これらすべてのシンボルが組み合わされており、非常に柔軟なフォームとタイプを取得できるようにすることです。 ここには実際には1つのルールしかありません-数値変数は18文字、英数字-160文字を超えてはなりません。 しかし、ここでも、コンパイラとそのパラメータに大きく依存しています。

おいしい追加またはPIC'a後の人生!
さらに、フォーマットの後に変数を記述する場合、追加の「オプション」を追加できます。

BLANK WHEN ZERO-変数が0の場合、ゼロではなく空のスペースが代わりに表示されます。
VALUE「値」-特定の値をすぐに変数に割り当てます。

他にもありますが、それらに言及することは役に立たないでしょう。
それでは、それらをすべて異なる形で感じてみましょう。

 000100識別部。
 000200プログラムID。 変数テスト。
 000300著者。 私
 000400環境部門。
 000500データ部。
 000600ワーキングストレージセクション。
 000,700 01人間容器。
 000800 05人名写真A(30)。
 000 900 05ヒューマンアドレスPIC X(160)。
 001000 77平方メートルPIC 9(18)。
 001100 77正方形価格PIC 9(15)V9(2)。
 001150 77フラット価格PIC 9(15)V9(2)。
 001200 77税率PIC 9(2)。
 001300 77 TAX-SUMM PIC 9(15)V9(2)。
 001350 77負の値PIC S9(10)V9(6)。
 001400 * --- OOOOMG!  ---
 001500 77スクエアメーターアウトPIC Z(17)9。
 001600 77スクエアプライスアウトPIC Z(14)9.Z(2)。
 001650 77 FLAT-PRICE-OUT-1 PIC Z(3)、Z(3)、Z(3)、Z(3).9(2)。
 001660 77 FLAT-PRICE-OUT-2 PIC Z(3)BZ(3)BZ(3)BZ(3).9(2)。
 001700 77 TAX-PERCENT-OUT PIC Z(2)。
 001800 77 TAX-SUMM-OUT PIC Z(14)9.9(2)。
 001900 77 NEGATIVE-VALUE-OUT-1 PIC + Z(10).9(6)。
 002000 77負の値の出力2 PIC -Z(10)。*(6)。
 002100 * --------------------------------
 002200手続き部。
 002,300から。
 002400ディスプレイ「名前を入力してください:」。
 002500人名を受け入れます。
 002550ディスプレイ「アドレスを入力してください:」。
 002600人名を受け入れます。
 002700 DISPLAY「フラットの平方メートルを入力してください:」。
 002800平方メートルを受け入れます。
 002900表示「平方メートルの価格を入力してください:」。
 003000正方形の価格を受け入れます。
 003100 DISPLAY「税の割合を入力してください:」
 003200税率を受け入れます。
 003300表示「本当に大きな負の値を入力してください:」。
 003400負の値を受け入れます。
 003500ディスプレイ「---------------------------------------」。
 003600「」を表示します。
 003700人名を表示します。
 003800人名を表示します。
 003900「SQUARE-METERS:」、SQUARE-METERSを表示します。
 004000スクエアメーターをスクエアメーターに移動します。
 004100「SQUARE-METERS-OUT:」、SQUARE-METERS-OUTと表示されます。
 004200「SQUARE-PRICE:」、SQUARE-PRICEを表示します。
 004300 SQUARE-PRICEからSQUARE-PRICE-OUTに移動します。
 004400「Square-price-out:」、Square-price-outを表示します。
 004500平方料金を平方料金で乗算する。
 004600「フラット価格:」、フラット価格を表示します。
 004700 FLAT-PRICE-OUT-1 FLAT-PRICE-OUT-2にFLAT-PRICEを移動します。
 004800「FLAT-PRICE-OUT-1:」、FLAT-PRICE-OUT-1を表示します。
 004850「FLAT-PRICE-OUT-2:」、FLAT-PRICE-OUT-2を表示します。
 004900「TAX-PERCENT:」、TAX-PERCENTを表示します。
 005000 TAX-PERCENTからTAX-PERCENT-OUTに移動します。
 005100「TAX-PERCENT-OUT:」、TAX-PERCENT-OUTと表示されます。
 005200ディスプレイ「TAX-SUMM:」、TAX-SUMM。
 005300 TAX-SUMMからTAX-SUMM-OUTに移動します。
 005400「TAX-SUMM-OUT:」、TAX-SUMM-OUTを表示します。
 005500「負の値:」、負の値を表示します。
 005600負の値を負の値のアウト1負の値のアウト2に移動します。
 005700「Negative-Value-OUT-1:」、NEGATIVE-VALUE-OUT-1を表示します。
 005800「Negative-Value-OUT-2:」、NEGATIVE-VALUE-OUT-2を表示します。
 005900実行を停止します。


その結果、何が得られますか。

名前を入力してください: 
スラバ
住所を入力してください: 
モスクワ15
フラットの平方メートルを入力してください: 
 44
平方メートルの価格を入力してください: 
 1234123
税率を入力してください: 
 20
本当に大きな負の値を入力してください: 
 -123123213213
 ---------------------------------------
 
スラバ                         
モスクワ15                                                                                                                                                       
平方メートル:000000000000000044
平方メートルアウト:44
スクエア価格:000000001234123.00
スクエアプライスアウト:1234123.00
フラット価格:000000054301412.00
 FLAT-PRICE-OUT-1:54,301,412.00
 FLAT-PRICE-OUT-2:54 301 412.00
税率:20
税引出し:20
 TAX-SUMM:000000000000000.00
税抜き:0.00
負の値:-3123213213.000000
負の値のアウト-1:-3123213213.000000
負の値の出力-2:-3123213213.000000


ご覧のとおり、「フォーマット済み」変数と生変数の出力は異なり、カスタマイズ可能です。

当然、これはあなただけの権利ではなく、変数をいじってそれらがどのように動作するかを見る義務です。

ところで、プログラムの出力を注意深く見ると、非常に不快な「些細なこと」に気付いたかもしれません。変数に収まらない値です。もしこれが起こらなかったら、実験してみてください。

次の会議まで! 今後さらに多くの興味深いことがあります)

ボロンツォフ「nerfur」ビャチェスラフ。 2011年。

Source: https://habr.com/ru/post/J115849/


All Articles