分割するため。
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年。