USAGE 句

USAGE 句は、コンピュータ・メモリまたはファイル・レコード内のデータ項目のフォーマットを指定します。

一部の環境では、データ項目のファイル・レコード・フォーマットは、USAGE 句によって指定されたコンピュータ・メモリ・フォーマットと異なる場合があります。この状況は、異なるデータ保存フォーマットをもつ COBOL 以外のファイル・システムに、インターフェースを通してアクセスしている場合に発生する可能性があります。例えば、Acu4GL は SQL を使用して COBOL 以外のファイル・システムにアクセスし、そのプロセスでは、データの変換が発生します。

注:データ保存の動作に影響を与えるには、多くのコンパイラ・オプションがあります。これらのオプションの詳細については、ACUCOBOL-GT のユーザーズガイドの 2.1.9『データ記憶オプション』を参照してください。

一般的なフォーマット

[ USAGE IS ] {COMPUTATIONAL                                 }
{COMP                                          }
{COMPUTATIONAL-1                               }
{COMP-1                                        }
{COMPUTATIONAL-2                               }
{COMP-2                                        }
{COMPUTATIONAL-3                               }
{COMP-3                                        }
{COMPUTATIONAL-4                               }
{COMP-4                                        }
{COMPUTATIONAL-5                               }
{COMP-5                                        }
{COMPUTATIONAL-6                               }
{COMP-6                                        }
{COMPUTATIONAL-X                               }
{COMP-X                                        }
{COMPUTATIONAL-N                               }
{COMP-N                                        }
{BINARY                                        }
{PACKED-DECIMAL                                }
{DISPLAY                                       }
{INDEX                                         }
{POINTER                                       }
{FLOAT                                         }
{DOUBLE                                        }
{SIGNED-SHORT                                  }
{UNSIGNED-SHORT                                }
{SIGNED-INT                                    }
{UNSIGNED-INT                                  }
{SIGNED-LONG                                   }
{UNSIGNED-LONG                                 }
{HANDLE [ OF {WINDOW                       } ] }
{SUBWINDOW                    }
{FONT [font-name]             }
{control-type                 }
{THREAD                       }
{MENU                         }
{VARIANT                      }
{LAYOUT-MANAGER [layout-name] }

構文規則


  1. 左の列は、右側の用語に対する一般的な省略形を示します。
    COMP      COMPUTATIONAL
     
    COMP-1    COMPUTATIONAL-1
    
    COMP-2    COMPUTATIONAL-2
    
    COMP-3    COMPUTATIONAL-3
    
    COMP-4    COMPUTATIONAL-4
    
    COMP-5    COMPUTATIONAL-5
    
    COMP-6    COMPUTATIONAL-6
    
    COMP-X    COMPUTATIONAL-X
    
    COMP-N    COMPUTATIONAL-N
    
  2. USAGE 句は、レベル番号 66、78、および 88 以外のデータ記述項で使用できます。
  3. USAGE 句は、外部の浮動小数点データ項目とともに使用できません。
  4. USAGE 句がグループ項目のデータ記述項にある場合、下位の項目で表示される USAGE 句は同じタイプである必要があります。
  5. COMP、COMP-1、COMP-2、COMP-3、COMP-4、COMP-5、COMP-6、BINARY、または PACKED-DECIMAL 項目の PICTURE 文字列には、シンボル「9」、「S」、「V」、および「P」のみを含めることができます。COMP-6 の項目は、「S」シンボルを使用できません。
  6. COMP-X または COMP-N 項目の PICTURE 文字列には、すべての「9」シンボルまたはすべての「X」シンボルのみを含めることができます。
  7. USAGE IS INDEX データ項目のデータ記述項には、BLANK WHEN ZERO、JUSTIFIED、PICTURE、および VALUE IS の句を含めることができません。
  8. レベル 88 の項目は、USAGE IS INDEX データ項目に指定できません。
  9. USAGE IS POINTER データ項目のデータ記述項には、BLANK WHEN ZERO、JUSTIFIED、または PICTURE の句を含めることができません。POINTER データ項目は指定された値の句をもつ場合がありますが、その値は NULL という語でなければなりません。
  10. USAGE IS FLOAT または USAGE IS DOUBLE データ項目のデータ記述項には、BLANK WHEN ZERO、JUSTIFIED、または PICTURE の句を含めることができません。FLOAT または DOUBLE データ項目には、VALUE 句がある場合があります。その場合、値は浮動小数点リテラル、数字リテラル、または ZERO という語になります。次に、作業場所節のデータ項目の例を示します。
    01  F-DATA-1  USAGE IS FLOAT 
    VALUE IS 3.97E+24.
  11. SIGNED-INT、UNSIGNED-INT、SIGNED-SHORT、UNSIGNED-SHORT、SIGNED-LONG、UNSIGNED-LONG は、総称して「C 型」データ・タイプと呼ばれます。これらのデータ・タイプは、C プログラミング言語にあるデータ・タイプに類似しています。

    C 型データ・タイプのデータ記述項には、BLANK WHEN ZERO、JUSTIFIED、または PICTURE の句を含めることができません。

  12. Control-type は、LABEL や ENTRY-FIELD など、コンパイラに認識されているグラフィカル制御タイプ名のいずれか、または ActiveX、COM、または .NET 制御の名前です。
  13. USAGE HANDLE データ項目のデータ記述項には、BLANK WHEN ZERO、JUSTIFIED、または PICTURE の句を含めることができません。VALUE 句が含まれる場合、指定する値は NULL という語である必要があります。
  14. Font-name は、DEFAULT-FONT、FIXED-FONT、TRADITIONAL-FONT、SMALL-FONT、MEDIUM-FONT、または LARGE-FONT のいずれかの識別子です。
  15. 「-Df」オプションまたは「-Cv」オプションのいずれかを使用すると、コンパイラは COMP-1 および COMP-2 をそれぞれ FLOAT および DOUBLE として処理することにご注意ください。詳細については、『ACUCOBOL-GT 移行ガイド』の 5.4 節を参照してください。
  16. Layout-name は、システムの標準レイアウト管理者のうちの 1 人の名前です。現在、これは LM-RESIZE になります。

一般規則


  1. グループ・レベルで書かれた USAGE 句は、そのグループ項目の下位にあるすべての基本項目に適用されます。
  2. USAGE 句が指定されていない場合、USAGE IS DISPLAY が示されます。
  3. USAGE IS DISPLAY 項目の内部フォーマットは ASCII です。
  4. インデックス項目のフォーマットは、32 ビットの符号付き 2 進数です。サイズは常に 4 で、-2147483647 ~ 2147483647 の範囲の値を保持します。6.0.0 より前のバージョンとの互換性のためにコンパイル・スイッチを使用する場合(例えば -Z52)、インデックス項目は 16 ビットの符号なし 2 進数、サイズは常に 2 で、0 ~ 65535 の値を保持します。
  5. COMP-1 データ項目のフォーマットは、16 ビットの符号付き 2 進数です。正当な値の範囲は、-32767 ~ 32767 です。データ項目のサイズは常に 2 バイトで、データの上位の半分は最も左のバイトに保存されます。項目を記述する PICTURE 文字列は関連がありません。他の数値データ・タイプとは異なり、値が項目の物理的保存を超えた場合に、COMP-1、COMP-X、または COMP-N データ項目でのみ、サイズ・エラーが発生します (言い換えれば、サイズ・エラーが決定されると、項目の PICTURE 内の「9」の数が無視されます)。
  6. COMP-2 (10 進数の保存) の場合、それぞれの桁は 10 進数形式で 1 バイトで保存されます。値に符号が付いている場合、その符号に追加の末尾バイトが割り当てられます。COMP-2 の保存は、USAGE DISPLAY と同じで、各バイトから上位 4 ビットが除去されます。
  7. COMP-3 (パック 10 進数の保存)の場合、各バイトに 2 桁が保存されます。値に符号が付いていない場合でも、符号に追加のハーフ・バイトが割り当てられます。符号は最も右の位置に配置され、負の場合、その値は 0x0D です。他のすべての値は正として処理されます (ただし、下記の規則 18 を参照)。項目のサイズ (黙示的な符号のサイズを含む) を 2 で割ると、その実際のサイズになります (小数部は切り上げ)。
  8. COMP-4 項目のフォーマットは、2 の補数の 2 進数 (小数点のない値) です。COMP-4 の値は、機種依存性のないフォーマットで保存されます。このフォーマットでは、値の最上位部分を最も左の位置に配置し、最下位部分を最も右の位置に配置します。データ項目が占めるバイト数は、その PICTURE 内の「9」の数およびさまざまなコンパイル時間オプションの存在によって異なります。例えば、プログラムが 31 桁をサポートするようにコンパイルされた場合、18 個を超える「9」を含めることができます。次の表に概要を示します。
    「9」の数 デフォルト -D1 -Dm -D7
    1-2 2 1 1 1
    3-4 2 2 2 2
    5-6 4 4 3 3
    7 4 4 4 3
    8-9 4 4 4 4
    10-11 8 8 5 5
    12 8 8 6 5
    13-14 8 8 6 6
    15-16 8 8 7 7
    17-18 8 8 8 8
    19 12 12 9 8,9
    20 12 12 9 9
    21 12 12 9 9
    22 12 12 10 10
    23 12 12 10 10
    24 12 12 11 10,11
    25 12 12 11 11
    26 12 12 11 11
    27 12 12 12 12
    28 12 12 12 12
    29 16 16 13 13
    30 16 16 13 13
    31 16 16 13 13
    注:2 つの値が与えられた場合、小さいほうの値は符号のないデータ項目に適用され、大きいほうの値は符号が付いたデータ項目に適用されます。
  9. COMP-5 は、主に固有データの保存を予期する外部プログラムと通信するために使用されます。

    COMP-5 データ項目のフォーマットは、データが機種依存性のあるフォーマットで保存されることを除いて、COMP-4 データ項目と同じです。データはホスト・マシン固有の順序で保存されます。例えば、PIC S9(9) COMP-5 データ項目はホスト・マシン上の 32 ビットの 2 進ワードに相当し、PIC S9(20) COMP-5 項目は 64 ビットのワードに相当します。

    注:異なるマシンには異なる固有のバイト順があるため、COMP-5 フィールドに保存されたデータは、他のマシンには移動できない場合があります。多くのマシン( 68000、ほとんどの RISC) では、COMP-5 は COMP-4 と同じです。他のマシン (80x86、VAX) では、バイト順が逆である以外同じです。

    COMP-5 データ項目の VALUE 句は、機種依存性のないフォーマットで保存され、データ項目にロードされるときに調整されます。これによって、マシンが異なる場合でも、値は同じであることが保証されます。

    COMP-5 項目への算術的および非算術的保存において切り捨てが必要な場合、ACUCOBOL-GT は、デフォルトで PICTURE 句で与えられた桁数に 10 進数で切り捨てます。「--TruncANSI」コンパイラ・オプションを使用して、COMP-5 項目の割り当てられた保存領域の容量にまで 2 進数での切り捨てを強制的に行うことができます。「-Dz」および「--noTrunc」オプションも切り捨てを行います。詳細については、Book 1 の項 2.1.9 『データ記憶オプション』を参照してください。

    COMP-5 であるレベル 01 およびレベル 77 データ項目は、コンパイル時の設定にかかわらず、適切なマシン境界に自動的に同期化されます。これによって、整列を考慮しなくても、これらの項目を C サブルーチンに安全に渡すことができるようになります。

    COMP-5 が PIC X(n) データ項目とともに使用され、英数字の値が割り当てられた場合、結果は不定です。例えば、次のコード・フラグメントでは、NUMは不定の数を持ち、その結果、最後の行の値は「100」になります。

    NUM PIC X(5) COMP-5.
    ALPHANUM PIC X(9).
    MOVE "ABC" TO NUM.
    MOVE "1,000" TO NUM.
    MOVE ALPHANUM TO NUM.
    MOVE "100" TO NUM.

    COMP-5 とともに使用される PIC X(n) データ項目には、符号を付けることができません。

  10. COMP-6 項目のフォーマットは、符号がなく、符号にスペースが割り当てられていないことを除いて、COMP-3 項目と同じです。桁数が奇数の場合、パックする前に数値の左端にゼロを追加します。したがって、1 バイトあたり 2 つの 10 進数字があり、項目の実際のサイズは、その PICTURE のサイズを 2 で割って切り上げることによって求められます。
  11. COMP-X データ項目は、「9」シンボルのみか「X」シンボルのみで構成されるピクチャ文字列で記述する必要があります。いずれの場合でも、データ項目は符号のない 2 進整数として処理され、その内部記憶は COMP-4 データ項目の場合と同じです。「X」シンボルが項目の記述に使用される場合、項目に割り当てられるバイト数は、ピクチャ文字列での「X」シンボルの数と同じです。代わりに「9」シンボルが使用される場合、割り当てられるバイト数は、そのサイズの数を保持するために必要な最小バイト数です。例えば、「PIC 99」データ項目には 1 バイト割り当てられ、「PIC 9(9)」データ項目には 4 バイト割り当てられます。

    項目のピクチャ文字列での「9」シンボルの数にかかわらず、COMP-X 項目に保存できる最大値は、それに割り当てられたバイト数で決定されます (最大 18 桁、または 31 桁のサポートがある場合には最大 31 桁)。例えば、1 バイトで構成される COMP-X 項目は、0 ~ 255 の範囲の数を保持できます。2 バイトの COMP-X の数字は、0 ~ 65535 を保持できます。サイズ・エラーは、データ項目が物理的に保持できないほど値が大きい場合にのみ、COMP-X 項目で発生します。COMP-X が PIC(X) データ項目とともに使用される場合、最大値は PIC X(8) です(この最大値は、31 桁のサポートがある場合には PIC X(16) に引き上げられます)。

  12. COMP-N データ項目は、データが機種依存性のないフォーマットではなく、ホスト・マシンに固有のフォーマットで保存されることを除いて、COMP-X データ項目と同じです。
  13. PACKED-DECIMAL として記述されるデータ項目は、COMP-3 と同じです。コンパイル時間オプションを使用して、符号のない PACKED-DECIMAL を COMP-6 として処理できます。
  14. デフォルトでは、BINARY データ項目は COMP-4 データ項目と同じです。その代わりに、コンパイル時間オプション「-D5」は、BINARY データ項目を COMP-5 として処理します。
  15. VAX/COBOL 互換性モードでは、COMP データ項目は COMP-4 と同じで、バイナリ・データとして処理されます。RM/COBOL 互換性モードでは、COMP は COMP-2 と同じです。コンパイル時間オプションを使用して、デフォルトの動作を変更できます。
  16. ポインタ・データ項目は、符号のない数値データ項目として処理されます。内部フォーマットは、各マシンによって異なります。ポインタ・データ項目は、他のデータ項目のアドレスを保持するように意図されています(SET 文を参照)。ポインタ・データ項目では VALUE 句が指定されている場合がありますが、指定された値は NULL という語でなければなりません。これは、ポインタが現在いずれの項目も示していないことを示します。ポインタが初期値を明示的に与えられない場合、その初期値は任意になります。

    ポインタ・データ項目は 8 バイトを占めます。これは 64 ビットのマシン上でアドレスを保持するための十分なスペースを提供します。より小さいマシンでは、ランタイムはポインタ・データ項目の最初の 4 バイトのみを使用します (後続の 4 バイトは未使用のままメモリ内に残る)。「-Dw」コンパイル時間オプションを使用して、ポインタ・データ項目に割り当てられたスペースを調整できます。64 ビットのマシンを使用しないことがわかっている場合には、この方法で記憶容量を節約することができます。

    ポインタは条件式で使用できます。条件式では、ポインタは相互に、または値 NULL と比較できます。ポインタに関連する比較は、「等しい」または「等しくない」のいずれかである必要があります(「大きい」および「小さい」という比較は許可されていない)。

    POINTER 項目であるレベル 01 およびレベル 77 データ項目は、コンパイル時の設定にかかわらず、適切なマシン境界に自動的に同期化されます。これによって、整列を考慮しなくても、これらの項目を C サブルーチンに安全に渡すことができるようになります。

    自動同期化を除いて、USAGE POINTER データ項目は、すべての点において、USAGE UNSIGNED-LONG データ項目と同様に処理されます。これで、現在のすべてのマシンが正しく処理されます。この動作は、将来のマシンの要件を満たすために変更される可能性があります。

  17. 浮動小数点データ項目は、機種依存性のあるフォーマットで保存されます。USAGE FLOAT 項目では、4 バイトが割り当てられています。USAGE DOUBLE 項目は 8 バイトを占めます。

    USAGE FLOAT または DOUBLE であるレベル 01 およびレベル 77 データ項目は、コンパイル時の設定にかかわらず、適切なマシン境界に自動的に同期化されます。これによって、整列を考慮しなくても、これらの項目を C サブルーチンに安全に渡すことができるようになります。

  18. COBOL の ANSI 定義では、数字フィールドに符号をどのように保存すべきかについて述べていません (SIGN IS SEPARATE の場合を除く)。ACUCOBOL-GT では、コンパイル時間オプション「-Dca」、「-Dcb」、「-Dci」、「-Dcm」、「-Dcn」、「-Dcr」、および「-Dcv」を使用することによって、代わりの符号保存規則を選択できます。符号保存規則の指定は、データをエクスポートおよびインポートしているときに役立つことがあります。詳細については、『ユーザーズガイド』の 2.1.9『データ記憶オプション』を参照してください。

    保存規則は、USAGE DISPLAY、COMP-2、および COMP-3 データ・タイプでのデータの表示方法に影響を与えます。標準の ASCII 保存である USAGE DISPLAY では、符号が桁位置に組み込まれている場合、その桁は次の表に従って符号化されます。

    USAGE DISPLAY

    桁の値 -Dca、

    -Dcb、

    -Dcm、

    -Dcr

    -Dci、

    -Dcn

    -Dca、

    -Dci、

    -Dcn

    -Dcb

    -Dcm

    -Dcr

    0 '0' '{' '}' '@' 'p' ' ' (スペース)
    1 '1' 'A' 'J' 'A' 'q' '!'
    2 '2' 'B' 'K' 'B' 'r' '"' (二重引用符)
    3 '3' 'C' 'L' 'C' 's' '#'
    4 '4' 'D' 'M' 'D' 't' '$'
    5 '5' 'E' 'N' 'E' 'u' '%'
    6 '6' 'F' 'O' 'F' 'v' '&'
    7 '7' 'G' 'P' 'G' 'w' ''' (一重

    引用符)

    8 '8' 'H' 'Q' 'H' 'x' '('
    9 '9' 'I' 'R' 'I' 'y' ')'
    注:

    シンボル「{」および「}」がないシステムとのインポートの互換性のために、USAGE DISPLAY を使用する項目を読み取る場合、シンボル「[」および「?」は「{」に相当するとみなされ、シンボル「]」、「:」、および「!」は、「}」に相当するとみなされます。

    次の 2 つの表は、「-Dca」、「-Dcb」、「-Dci」、「-Dcm」、「-Dcn」、「-Dcr」、および「-Dcv」の保存規則を使用している場合の COMP-2 および COMP-3 項目の符号表示を示します。COMP-2 では、末尾バイトが符号に確保されます。COMP-3 では、末尾ハーフバイトが符号に確保されます。

    USAGE COMP-2

    -Dca 正 x'0B'
    -Dcb/-Dci/-Dcm/-Dcn/-Dcr 正 x'0C'
    -Dca/-Dcb/-Dci/-Dcm/-Dcn/-Dcr 負 x'0D'

    USAGE COMP-3

    -Dca 正 x'0F'
    -Dcb/-Dci/-Dcm/-Dcr 正 x'0C'
    -Dca/-Dcb/-Dci/-Dcm/-Dcr 負 x'0D
    -Dca/-Dcb/-Dci/-Dcm/-Dcr 符号なし x'0F'
    -Dcv 符号なし x'0C'
  19. C などの他のプログラミング言語との通信を簡略化する整数データには、6 つの USAGE タイプがあります。これらのタイプは、機種依存性のあるデータを処理するための移植可能な方法を提供するように設計されています。6 つの USAGE タイプは、3 つのクラスのマシン・データ(「ショート・ワード」、「ワード」、および「ロング・ワード」)を処理します。これらの 3 つは、C データ・タイプの「short」、「int」、および「long」に相当します。これらの各データ・タイプには、符号ありバージョンと符号なしバージョンがあります。

    これらの USAGE タイプは、(USAGE INDEX や POINTER と同様に) PICTURE 句なしで指定されます。

    タイプの名前は次のとおりです。

    SIGNED-SHORT UNSIGNED-SHORT
    SIGNED-INT UNSIGNED-INT
    SIGNED-LONG UNSIGNED-LONG

    これらはそれぞれマシンに固有のバイト順を使用して保存される 2 進値を表します。PICTURE 句がないため、これらの項目のサイズ・チェックは、バイト境界でのみ行われます。これらのデータ・タイプは、自動的に同期化されます。

    これらのデータ・タイプの珍しい特性は、そのサイズが必ずしもコンパイル時に設定されないことです。その代わりに、これらの項目のサイズは実行時に決定されます。これによって、これらの項目をホスト・マシンの作業特性に一致させることができます。例えば、SIGNED-LONG データ項目は、DEC Alpha マシンで動作する場合には 64 ビットを含みますが、Intel 80486 ベースのマシンで動作する場合には 32 ビットを含みます。このため、対象の環境にかかわらず、別の言語 (C など) で書かれた外部ルーチンと有効に通信できる 1 つのプログラムを書くことができます。

    メモリを配置するために、コンパイラはこれらの各データ・タイプに最大サイズを割り当てます。これは項目が占めるバイト数です。ランタイムでは、これらの項目は、ホスト・マシンの特性に合わせてサイズが縮小される場合があります。次に、残りのバイトは FILLER として処理されます。「-Dw」コンパイル・オプション(『ユーザーズガイド』の 2.1.9『データ記憶オプション』を参照)は、これらのタイプの最大サイズを決定します。

    USAGE -Dw32 -Dw64
    SIGNED-SHORT

    UNSIGNED-SHORT

    2* 2*
    SIGNED-INT

    UNSIGNED-INT

    4 4
    SIGNED-LONG

    UNSIGNED-LONG

    4* 8

    アスタリスクが付いている表項目は、固定サイズの項目を示します。固定サイズの項目は、対象のマシンにかかわらず同じサイズです。アスタリスクのない項目は、サイズが不定です。これらの項目は、最大で表に示したバイト数のスペースを占めます。

    注:上の表に示したサイズは、ACUCOBOL-GT を実行する現在のすべてのマシンおよび今後予測されるマシンを対象として含みます。将来のアーキテクチャでは、これらの項目に割り当てられた最大サイズを変更しなければならなくなる可能性があります。

    実行環境では、これらの項目は、すべての点で、適切なサイズをもつ固定サイズのデータ項目であるかのように動作します。

    例えば、次のコード・フラグメント:

       77  LONG-1         SIGNED-LONG.
    77  SIZE-1         PIC 9.
    
    SET SIZE-1 TO SIZE OF LONG-1.
    DISPLAY SIZE-1.

    は、32 ビットのマシンで動作する場合には「4」を印刷しますが、64 ビットのマシンで動作する場合には「8」を印刷します。

    次の例では、各バイトは 2 つの 16 進数字または一重引用符付き文字によって表されます。各値はさまざまなフォーマットで表示されます。USAGE DISPLAY も、さまざまな SIGN オプションを使用して表示されます。次の例では、デフォルトの ACUCOBOL-GT 符号保存規則を使用します。

    PIC 9(3) VALUE 123.
    TRAILING            '1'   '2'   '3'
    TRAILING SEPARATE   '1'   '2'   '3'
    LEADING             '1'   '2'   '3'
    LEADING SEPARATE    '1'   '2'   '3'
    COMP-1                    00    7B
    COMP-2              01    02    03
    COMP-3                    12    3F
    COMP-4                    00    7B
    COMP-5(68000)             00    7B
    COMP-5(8086)              7B    00
    COMP-6                    01    23
    
    
    PIC S9(3) VALUE -123.
    TRAILING                 '1'   '2'   'L'
    TRAILING SEPARATE  '1'   '2'   '3'   '-'
    LEADING                  'J'   '2'   '3'
    LEADING SEPARATE   '-'   '1'   '2'   '3'
    COMP-1                         FF    85
    COMP-2             01    02    03    0D
    COMP-3                         12    3D
    COMP-4                         FF    85
    COMP-5(68000)                  FF    85
    COMP-5(8086)                   85    FF
    COMP-6             illegal
    
    
    PIC 9(5)V9 VALUE 12345.6.
    TRAILING             '1'   '2'   '3'   '4'   '5'   '6'
    TRAILING SEPARATE    '1'   '2'   '3'   '4'   '5'   '6'
    LEADING              '1'   '2'   '3'   '4'   '5'   '6'
    LEADING SEPARATE     '1'   '2'   '3'   '4'   '5'   '6'
    COMP-1               illegal
    COMP-2               01    02    03    04    05    06
    COMP-3                           01    23    45    6F
    COMP-4                           00    01    E2    40
    COMP-5(68000)                    00    01    E2    40
    COMP-5(8086)                     40    E2    01    00
    COMP-6                                 12    34    56
    
    PIC S9(5)V9 VALUE -12345.6.
    TRAILING                '1'  '2'  '3'  '4'  '5'  '0'
    TRAILING SEPARATE  '1'  '2'  '3'  '4'  '5'  '6'  '-'
    LEADING                 'J'  '2'  '3'  '4'  '5'  '6'
    LEADING SEPARATE   '-'  '1'  '2'  '3'  '4'  '5'  '6'
    COMP-1               illegal
    COMP-2             01   02   03   04   05   06   0D
    COMP-3                            01   23   45   6D
    COMP-4                            FF   FE   1D   C0
    COMP-5(68000)                     FF   FE   1D   C0
    COMP-5(8086)                      C0   1D   FE   FF
    COMP-6               illegal
  20. HANDLE データ項目は、COBOL でのそれ自身のデータ・クラスおよびカテゴリを構成します。内部では、これらは整数値として保存され、使用されるときに数字と同様に動作します。通常、HANDLE データ項目は、浮動ウィンドウやグラフィック制御など、動的に作成されたオブジェクトのハンドルを保存するために使用されます。

    HANDLE データ項目には、型付きと汎用の 2 つの形式があります。OF 句を除外すると、汎用ハンドルを作成します。OF 句を含めると、型付きハンドルを作成します。

  21. HANDLE データ項目を使用できるのは、明示的に許可された場合、MOVE 文、CALL 文 (パラメータとして) の一部として、またはブール式の場合のみです。
  22. 汎用ハンドルは、ハンドルが許可されるあらゆる状況で使用できます。MODIFY 文のソースとして汎用ハンドルを使用する場合、その文では、制御特有のプロパティまたはスタイル名を使用できません。これは、汎用ハンドルが任意のタイプの制御と関連付けることができるからです。この場合、コンパイラは、スタイルおよびプロパティの名前のどのセットが有効であるのかを判断できません。
  23. 型付きハンドルは、任意のハンドルが許可されている文か、または対応するタイプのオブジェクトを指している場合に使用できます。例えば、HANDLE OF WINDOW は、DISPLAY LABEL 文内のハンドルとして使用できません。その代わり、汎用ハンドルまたは HANDLE OF LABEL のいずれかを使用する必要があります。型付きハンドルを使用すると、コンパイラは適切な場合、関連付けられたスタイルおよびプロパティの名前を認識できます。また、型付きハンドルは、ハンドルを適切な状況で使用するようにするためにコンパイル時間チェックを提供するだけでなく、ハンドルの使用目的に関する追加情報を提供することによって、プログラムの可読性も向上させます。
  24. ハンドルは比較して使用される場合があります。意味のある比較は 2 つしかありません。NULL と等しいか等しくないかをチェックすることと、別のハンドル・データ項目と比較することです。NULL のハンドル値は、常に無効なハンドルを示します。
  25. ハンドルは、4 バイトの 2 進整数として内部で保存されます。この情報はプログラムのデバッグ中に役立つことがあります(ハンドルの値をデバッガで検査できます)。ただし、プログラムにおけるこの定義は今後変更される可能性があるため、この定義に依存することは避けてください。
  26. ハンドル・データ項目は、4 バイトの境界で自動的に同期化されます。この状況は「-Dl」コンパイル時間オプション (同期化の量を制限) の設定にかかわらず発生するため、ご注意ください。ランタイム・システムでは、このレベルの整列は、一部のマシン上でのバス・エラーの生成を防ぐ必要があります。
  27. font-name が指定された場合、USAGE 句によって記述されたデータ項目は、対応するフォント・ハンドルによってプログラム起動時に初期化されます。これは次の文をプログラムの始まりに配置した場合と同様に機能します。
    ACCEPT data-item FROM STANDARD OBJECT "font-name"

    この場合、data-item は USAGE 句によって記述されたデータ項目で、font-name は USAGE 句内の font-name と同じです。