FORMAT OF 特殊レジスター

PROCEDURE DIVISION の FORMAT OF 句は、FORMAT OF 特殊レジスターと呼ばれる 暗黙的な特殊レジスターを作成します。このレジスターの内容は、ID によって参照 されるデータ項目の FORMAT リテラルと等価です。FORMAT OF 特殊レジスターは、日時クラスのデータ項目に対してのみ指定することができます。 この特殊レジスターの長さは、当該のデータ項目用の FORMAT 句内で指定されるリテラルまたはロケールによって決まります。

FORMAT OF 特殊レジスターには次のような暗黙の定義が入っています。
    USAGE DISPLAY, PICTURE X(n)
    where n equals the number of bytes of the implicit or explicit
    FORMAT literal.
例として、以下の日付データ項目 date2 用のデータ記述記入項目について考えてみます。
    05 date2 FORMAT DATE IS '%d,%m,%y'.
以下の MOVE ステートメントは、組み込み関数 CONVERT-DATE-TIME を使用して日付データ項目 date3 を日付データ項目 date2 の形式に変換します。 FORMAT OF 句は、その内容が %d,%m,%y となる暗黙特殊レジスターを作成します。
    MOVE FUNCTION CONVERT-DATE-TIME(date3, DATE, FORMAT OF date2)
              TO alpha-num-date.
この例では、特殊レジスターの長さは 8 文字です。
次の規則が適用されます。
  • FORMAT OF 特殊レジスターは、変更不能であり、FORMAT 非数字リテラルが使用可能な PROCEDURE DIVISION においてのみ指定可能。
  • FORMAT OF 句を使って参照される ID ごとに別個の FORMAT OF 特殊レジスターが 1 つずつ存在する。