データ記憶オプション

データ記憶オプションを使用して、特定のデータ項目の動作とデータ項目を保存する方法を制御します。

ccbl (Windows) または ccbl32 および ccbl64 (UNIX) をコマンド・ラインから使用するかまたは ACUOPT コンパイラ指令を使用するとき、Enterprise Developer で次のコンパイラ・オプションがサポートされます。

オプション 定義
-D1 このオプションでは、データ項目 (その基本となるタイプはバイナリ) が 1 桁か 2 桁のみの場合に、そのデータ項目が 1 バイトで保存されます。通常、そのようなデータ項目は 2 バイトで保存されます。
-D2 このオプションでは、COMPUTATIONAL データ項目があたかも COMPUTATIONAL-2 として宣言されたかのように扱われます。これは、RM/COBOL 互換モードを使用する場合にデフォルトになります。
-D5 このオプションでは、BINARY として宣言されたデータ項目があたかも COMPUTATIONAL-5 として宣言されたかのように扱われます。これにより、その値が、通常使われる機種依存性のないバイト順ではなく、ホスト・マシンのネイティブのバイト順で保存されます。このオプションは、移植可能でないプログラムを生じる場合があるので、慎重に使用してください。
-D6 このオプションでは、PACKED-DECIMAL として宣言された符号なしのデータ項目があたかも COMPUTATIONAL-6 として宣言されたかのように扱われます。コンパイラは符号用の記憶域を生成しないので、バイトの半分を節約できます。
-D7 このオプションでは、Micro Focus COBOL で使用されるバイナリ保存規則の 1 つに一致させることができます。その規則は ACUCOBOL-GT -Dm 規則と同じですが、PIC 9(7) データ項目 (符号なし) が 4 バイトでなく 3 バイトで保存され、PIC 9(12) データ項目 (符号なし) が 6 バイトでなく 5 バイトで保存される点が異なります。このオプションを使うとき、バイナリ項目のサイズは次のように決まります (表の値はデータ項目に占有されるバイト数)。
Number of          Signed             Unsigned 
9's in PIC         Storage            Storage
1 - 2              1                  1
3 - 4              2                  2
5 - 6              3                  3
7                  4                  3
8 - 9              4                  4
10 - 11            5                  5
12                 6                  5
13 - 14            6                  6
15 - 16            7                  7
17 - 18            8                  8
-Da このオプションでは、レベル 01 およびレベル 77 データ項目のデータ整列係数を指定できます。通常、レベル 01 およびレベル 77 のデータ項目は 4 バイトの境界で整列されます (係数 4)。これは 32 ビット・アーキテクチャに最適です。このオプションに目的の係数を続けることで、別の整列境界を指定できます。その場合、同じ引数の一部として -Da の直後に 1 桁の数値として続けて指定する必要があります。例えば、-Da8 は、データを 8 バイトの境界で整列する必要があることを指定し、これにより 64 ビット・マシンでパフォーマンスを向上できます。
-Db このオプションでは、COMPUTATIONAL データ項目があたかも BINARY データ項目として宣言されたかのように扱われます。VAX COBOL 互換モードを使用するとき、これはデフォルトになります。
-DCa このオプションでは ACUCOBOL-GT の保存規則が選択されます。これはデフォルトの設定です。この規則には、RM/COBOL (RM/COBOL-85 でなく) および以前のバージョンの ACUCOBOL-GT によって作成されたデータとの互換性もあります。また生成されるコードは多少高速になります。
-DCb このオプションでは、MBP COBOL の符号保存規則が選択されます。なお、USAGE DISPLAY の MBP COBOL 符号保存規則は、IBM COBOL および他の COBOL の一部で使用される符号保存規則と直接競合します。このため、MBP フォーマットの符号付き USAGE DISPLAY 項目は、プログラムが -Dcb によってコンパイルされるときのみに正しく解釈されます。これは、コンパイル時に適合しない符号規則が指定された場合であっても通常はランタイムが正しい値を抽出できる他の符号規則とは異なります。

また MBP COBOL には COMP-2 記憶域タイプがないことにも注意してください。ACUCOBOL-GT が実装する規則 (正:X"0C"、負:X"0D") が選択されたのは、MBP COBOL がその規則を使用する他の COBOL の符号保存と最もよく適合するからです。

-DCi このオプションでは IBM の保存規則が選択されます。IBM COBOL と互換性があり、同時に他の RM/COBOL-85 などとも互換性があります。また X/Open COBOL 標準とも互換性があります。
-DCm このオプションでは Micro Focus の保存規則が選択されます。Micro Focus ASCII の符号保存オプション (Micro Focus のデフォルト) を使用する場合に、Micro Focus COBOL と互換性があります。
-DCn このオプションでは、異なる数値フォーマットが使用されます。フォーマットは、-Dci オプションを使用する場合に使われるフォーマットと同じです。ただし正の COMP-3 項目は X"0C" ではなく X"0B" を正の符号値として使用します。このオプションには NCR COBOL との互換性があります。
-DCr このオプションでは Realia 符号保存規則が選択されます。S9(n) 変数の符号情報は Realia COBOL の規則を使用して保存され、その規則の 2 進 10 進変換は Realia コンパイラが実行する変換と同じです。
-DCv このオプションでは、VAX COBOL と互換性のある数値符号フォーマットが作成されます。これらのフォーマットは IBM フォーマットと同一ですが、符号なし COMP-3 フィールドは X"0F" ではなく X"0C" を符号位置に置く点が異なります。COBOL についての ANSI の定義では、符号を数値フィールドに保存する方法は規定されていません (ただし SIGN IS SEPARATE の場合を除く)。このため、COBOL ベンダによって異なる規則が使われています。-Dca-Dci-Dcm-Dcn、または -Dcv の各オプションを使用することで、別の符号保存規則を選択できます。このような選択は次の場合に便利です。
  • データを別の COBOL システムにエクスポートし、符号保存規則を適合させる必要がある場合。
  • 別の COBOL システムからデータをインポートし、そのデータに符号付きデータを含むキー・フィールドが含まれている場合。キーは英数字として扱われるので、不正な符号保存規則を使用すると ACUCOBOL-GT は READ を実行するとき適合するキーを見つけることができません。
保存規則は、USAGE DISPLAY、COMP-2、および COMP-3 データ・タイプでのデータの表示方法に影響を与えます。
-Dd31 このオプションは、31 桁まで、または 16 バイトまでのデータ項目をサポートします。このオプションが有効なとき、PIC で X シンボルまたは 9 シンボルを通常の 18 個ではなく 31 個まで使用できます。「X」シンボルのみを含むピクチャを持つ COMP-X または COMP-N データ項目の最大バイト数は、通常の 8 ではなく 16 です。中間結果は通常の 20 桁ではなく 33 桁まで計算されます。
-Df このオプションでは、コンパイラが COMP-1 および COMP-2 として宣言されるデータ項目を扱う方法が変わります。一部のコンパイラは COMP-1 および COMP-2 を使用して、単精度および倍精度の浮動小数点データ項目を指定します。ただし、ACUCOBOL-GT は COMP-1 および COMP-2 に異なる意味を割り当て、FLOAT および DOUBLE を使用して浮動小数点データ項目を指定します。-Df を使用する場合、コンパイラは COMP-1 として宣言されたデータ項目をあたかも FLOAT として宣言されたかのように扱い、COMP-2 として宣言されたデータ項目を DOUBLE として宣言されたかのように扱います。-Df オプションには、次のような対応があります。
COMP-1   FLOAT    single precision
COMP-2   DOUBLE   double precision
-Df オプションを使う場合、元々別のコンパイラ用に記述されたコード、つまり COMP-1 および COMP-2 を使用して浮動小数点データ項目を指定するコードを、容易にコンパイルできるようになります。-Df オプションでは、このようなコードを、COMP-1 および COMP-2 を FLOAT および DOUBLE に変換することなくコンパイルできます。
-Dl1/2/4/8 このオプションでは、SYNCHRONIZED データ項目に使用される最大整列係数を制限できます。通常、同期されたデータ項目はそのタイプに応じて、2、4、または 8 バイトの境界で整列されます。このオプションでは、使用する係数の上限を指定できます。この場合、同じ引数の一部として -Dl の直後に 1 桁の数値として続けて指定します。例えば、-Dl4 は、最大同期境界を 4 バイト境界に指定します。88/Open COBOL 仕様に準拠するプログラムを作成する場合、-Dl4 を指定する必要があります。
-Dm このオプションでは、基本となるタイプがバイナリのあらゆるデータ個目が、それを保持するのに必要な最小バイト数で保存されます。通常、バイナリ・タイプは 2、4、または 8 バイトで保存されます。このオプションでは、1 から 8 のどのバイト数でも保存できます。
-Dq QUOTE リテラルが二重引用符 (") でなくアポストロフィ、つまり一重引用符として扱われます。ただし、QUOTE を常に二重引用符として扱う HP e3000 TRANSFORM 動詞は例外となります。
-Ds このオプションでは、SIGN 句を持たない USAGE DISPLAY 数値項目が、あたかも SIGN IS TRAILING SEPARATE 句によって記述されたかのように扱われます。RM/COBOL の一部バージョンでは、このような動作になります (2.0 より前の全バージョンおよび以降の一部バージョン)。
-Dv このオプションでは、どのデータ項目の初期化にも使用するデフォルトのバイト (初期値) を指定できます。指定しない場合、プログラムのロード時にデータ項目は初期化されません。このオプションには、等号 (=) と、使用するバイトの 10 進値を続ける必要があります (現在のすべてのプラットフォームで、これは目的の文字の ASCII 値です)。例えば、メモリを NULL 文字で埋めるには、-Dv=0 を使用します。メモリを ASCII 空白文字で埋めるには、-Dv=32 を使用します。
-Dw32 このオプションは、システムのビット配列との互換性についてチェックされます。
-Dw64 このオプションは、システムのビット配列との互換性についてチェックされます。