USAGE 句 (ACUCOBOL-GT)

USAGE 句は、コンピューター メモリまたはファイル レコード内のデータ項目の形式を指定する。

一部の環境では、データ項目のファイル レコード形式は、USAGE 句で指定したコンピューター メモリ形式と異なる場合がある。これは、データ格納形式が異なる COBOL 以外のファイル システムに、何らかのインターフェイスを介してアクセスしている場合に発生する可能性がある。たとえば、Acu4GL は SQL を使用して COBOL 以外のファイル システムにアクセスするが、そのプロセスではデータの変換が発生する。

注: コンパイラ オプションには、データ格納の動作に影響を与えるものが多数ある。これらのオプションの詳細については、ACUCOBOL-GT の互換性セクションの「データ記憶オプション」を参照。

一般形式

[ 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 データ項目には VALUE 句が指定されている場合があるが、その値は語 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 サブルーチンに安全に渡せる。

    PIC X(n) データ項目で COMP-5 を使用して、英数字の値を割り当てた場合、結果は未定義となる。たとえば、次のコード フラグメントでは、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 項目では、そのデータ項目が物理的に保持できるよりも値が大きい場合にのみサイズ エラーが発生する。PIC(X) データ項目で COMP-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 など) で書かれた外部ルーチンと効率的に通信できる単一のプログラムを記述できる。

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

    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 進数または 1 つの一重引用符付き文字によって表される。各値はさまざまな形式で表示される。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. ハンドルは比較で使用される場合がある。意味のある比較は、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 と同じである。