6

私は s9(5)v99 を探していましたが、別の情報を得て、はっきりとはわかりません。誰かが変換する方法または式を示してもらえますか。ありがとう

4

4 に答える 4

20

ここで示したのはPICTURE、COBOL データ宣言の句部分です。

COBOL のデータ宣言は少し奇妙で、慣れるまでに時間がかかります。ここに、 COBOL データ宣言に関する入門チュートリアルへのリンクがあります。これで始められるはずです。

質問で指定した PICture 句は、次の特性を持つ数値項目を定義しています。

  • S- リーディングサイン
  • 9(5)- 小数点以下 5 桁
  • V- 暗黙の小数点
  • 99- 暗黙の小数点以下 2 桁

基本的に、-99999.99 から +99999.99 までの値を保持できる数値変数を定義するように COBOL コンパイラに指示します。コンパイラがこの要求を正確にどのように満たすかは、特定のUSAGE句によって異なります。ただし、固定小数点位置を含む数値項目の場合、「通常の」使用法はPACKED-DECIMALorですCOMP-3(これらは同じことを意味する別の名前です)。このリンク は、パック 10 進数データのストレージ表現に関する入門情報を提供します。

パック 10 進数データは、小数点以下の桁数を固定しなければならない数値計算を行う場合に便利です。

レポートまたは端末へのパック 10 進数データの書き込みは、特にうまく機能しません。DISPLAY最初に、それを有効な形式に変換する必要があります。これにはMOVE、パック 10 進値をUSAGE DISPLAY属性を持つ別の変数に ing することが含まれます。パック 10 進変数が呼び出され PACKED-DECIMAL-NBR、値 -2345.01 を保持していたとします。次のように保持する表示変数を定義できます。

01    DISPLAY-NBR     PIC +++,++9.99.

次に、含まれる値を書き込み/表示するときが来たら、次のPACKED-DECIMAL-NBRようにします。

MOVE PACKED-DECIMAL-NBR TO DISPLAY-NBR
DISPLAY DISPLAY-NBR

MOVE、パック 10 進数を、レポートまたは端末で表示できる文字表現に変換します。値-2,345.01が表示されます。

于 2010-07-15T20:36:33.567 に答える
2

Cobol の S は、符号付き数値フィールドの定義です (つまり、正または負になる可能性があります)。たとえば、S999 は符号付き 3 桁の数値 (バイナリ) です。問題は S が想定されていることであり、ほとんどの COBOL コンパイラでは、符号がマークされる方法は、プラスまたはマイナスを表すために最後の文字を別の文字で「オーバーパンチ」することです。この結果、ascii ブラウザーでフィールドを見ると、奇妙な文字が表示されます。すなわち。MINUS 500 は、基になる文字に応じて、この 50C または 50} のように見えます。

于 2013-01-28T22:54:50.453 に答える
0

PIC S9(5)v99数値形式ではありません。これは、データがどのように保存され、そこで何を意味するかの説明です。たとえば、「-0010000」として格納されている数値は、-100.00 を意味します。

正確に何を達成しようとしていますか?decimal-100.00 を COBOL プログラムに送信しようとしていますか?


PIC -99,999.00 数値形式です数値が負の場合は先頭にマイナス記号を使用し、小数点の前に 5 桁を使用し、3 桁の間にカンマ、小数点、2 桁後に使用することを指定します。フィールドに格納された数値は、PIC S9(5)V99合理的にフィールドに移動される場合がありPIC -99,999.00ます。

于 2010-07-15T16:40:41.083 に答える