可変長 DBCS グラフィック・フィールド

DBCS グラフィック・データ・タイプと組み合わせて可変長フィールドを使用して、可変長 DBCS グラフィック・データを指定できます。 可変長 DBCS グラフィック・データを指定するには、CRTCBLMOD コマンドまたは CRTBNDCBL コマンドの CVTOPT パラメーターに *VARCHAR および *PICXGRAPHIC を指定するか、 または PROCESS ステートメントに VARCHAR オプションおよび CVTPICXGRAPHIC オプションを指定します。

CVTOPT(*NOVARCHAR *NOPICGGRAPHIC)、CVTOPT(*NOVARCHAR *PICGGRAPHIC)、CVTOPT(*NOVARCHAR *NOPICXGRAPHIC) または CVTOPT(*NOVARCHAR *PICXGRAPHIC) のどれかを指定した場合、ILE COBOL コンパイラーが可変長 DBCS グラフィック・データ項目を検出すると、プログラムの内容は次のようになります。

               06 FILLER            PIC X(2n+2).
     *              (Variable-length field)

n は DDS フィールドの中の文字数です。

CVTOPT(*VARCHAR *NOPICGGRAPHIC) または CVTOPT(*VARCHAR *NOPICXGRAPHIC) を指定した場合、ILE COBOL コンパイラーが可変長 DBCS グラフィック・データ項目を検出すると、プログラムの内容は次のようになります。

               06 NAME
     *              (Variable-length field)
                  49 NAME-LENGTH        PIC S9(4) COMP-4.
     *                         (Number of 2-byte characters)
                  49 FILLER             PIC X(2n).

n は DDS フィールドの中の DBCS 文字の数です。

CVTOPT(*VARCHAR *PICXGRAPHIC) を指定した場合、ILE COBOL コンパイラーが可変長 DBCS グラフィック・データ項目を検出すると、プログラムの内容は次のようになります。

               06 NAME
     *              (Variable-length field)
                  49 NAME-LENGTH        PIC S9(4) COMP-4.
     *                         (Number of 2-byte characters)
                  49 NAME-DATA          PIC X(2n).

n は DDS フィールドの中の DBCS 文字の数です。

CVTOPT(*VARCHAR *PICGGRAPHIC) を指定した場合、ILE COBOL コンパイラーが可変長 DBCS グラフィック・データ項目を検出すると、プログラムの内容は次のようになります。

               06 NAME
     *              (Variable-length field)
                  49 NAME-LENGTH        PIC S9(4) COMP-4.
     *                         (Number of 2-byte characters)
                  49 NAME-DATA          PIC G(n) DISPLAY-1.

n は DDS フィールドの中の DBCS 文字の数です。

可変長 DBCS グラフィック・フィールドの使用例

図 111 は、DDS ファイルで可変長 DBCS グラフィック・データ項目を定義する例です。 図 112 は、*PICXGRAPHIC を指定した形式 2 の COPY ステートメントを使用した ILE COBOL プログラムと、そのプログラムがコンパイルされた結果のリストです。 図 113 は、*PICGGRAPHIC を指定した可変長 DBCS グラフィック・データ項目を使用した ILE COBOL プログラムです。

図 111. 可変長グラフィック・データ・フィールドを定義する DDS ファイル
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
     A          R SAMPLEFILE
     A*
     A            VARITEM      100          VARLEN
     A*
     A            TIMEITEM        T         TIMFMT(*HMS)
     A            DATEITEM        L         DATFMT(*YMD)
     A            TIMESTAMP       Z
     A*
     A            GRAPHITEM    100G
     A            VGRAPHITEM   100G         VARLEN
図 112. 可変長 DBCS グラフィック・データ項目と *PICXGRAPHIC を使用する ILE COBOL プログラム
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/PGM1            ISERIES1   06/02/15 14:31:24        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
           000100 process varchar datetime cvtpicxgraphic
     1     000200 Identification division.
     2     000300   Program-id.  pgm1.
           000400
     3     000500 Environment division.
     4     000600 Configuration section.
     5     000700   Source-computer.  ibm-iSeries.
     6     000800   Object-computer.  ibm-iSeries.
     7     000900 Input-output section.
     8     001000   File-control.
     9     001100     Select file1
    10     001200       assign to database-samplefi                                                       00/08/15
    11     001300       organization is sequential
    12     001400       access is sequential
    13     001500       file status is fs1.
           001600
    14     001700 Data division.
    15     001800 File section.
    16     001900 fd  file1.
    17     002000 01  record1.
           002100 copy dds-all-formats of samplefi.                                                       00/08/15
    18    +000001       05  SAMPLEFI-RECORD PIC X(546).                                        <-ALL-FMTS
          +000002*    I-O FORMAT:SAMPLEFILE FROM FILE SAMPLEFI   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    19    +000004       05  SAMPLEFILE    REDEFINES SAMPLEFI-RECORD.                           <-ALL-FMTS
    20    +000005           06 VARITEM.                                                        <-ALL-FMTS
          +000006*                  (可変長フィールド)                                         <-ALL-FMTS
    21    +000007                49 VARITEM-LENGTH   PIC S9(4) COMP-4.                         <-ALL-FMTS
    22    +000008                49 VARITEM-DATA     PIC X(100).                               <-ALL-FMTS
    23    +000009           06 TIMEITEM              PIC X(8).                                 <-ALL-FMTS
          +000010*                  (時刻フィールド)                                           <-ALL-FMTS
    24    +000011           06 DATEITEM              PIC X(8).                                 <-ALL-FMTS
          +000012*                  (日付フィールド)                                           <-ALL-FMTS
    25    +000013           06 TIMESTAMP             PIC X(26).                                <-ALL-FMTS
          +000014*                  (タイム・スタンプ・フィールド)                             <-ALL-FMTS
    26    +000015           06 GRAPHITEM             PIC X(200).                               <-ALL-FMTS
          +000016*                  (グラフィック・フィールド)                                 <-ALL-FMTS
    27    +000017           06 VGRAPHITEM.                                                     <-ALL-FMTS
          +000018*                  (可変長フィールド)                                         <-ALL-FMTS
    28    +000019                49 VGRAPHITEM-LENGTH                                          <-ALL-FMTS
          +000020                                    PIC S9(4) COMP-4.                         <-ALL-FMTS
          +000021*                  (2 バイト文字の数)                                         <-ALL-FMTS
    29    +000022                49 VGRAPHITEM-DATA  PIC X(200).                               <-ALL-FMTS
          +000023*                  (グラフィック・フィールド)                                 <-ALL-FMTS
    30     002200 Working-Storage section.
    31     002300 77  fs1      pic x(2).
           002400
    32     002500 Procedure division.
           002600 Mainline.
    33     002700     stop run.
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *
図 113. 可変長 DBCS グラフィック・データ項目と *PICGGRAPHIC を使用する ILE COBOL プログラム
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/DBCSPICG        ISERIES1   06/02/15 14:48:02        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
           000100 process varchar datetime cvtpicggraphic                                                 00/08/21
     1     000200 Identification division.
     2     000300   Program-id.  dbcspicg.                                                                00/08/21
           000400
     3     000500 Environment division.
     4     000600 Configuration section.
     5     000700   Source-computer.  ibm-iSeries.
     6     000800   Object-computer.  ibm-iSeries.
     7     000900 Input-output section.
     8     001000   File-control.
     9     001100     Select file1
    10     001200       assign to database-samplefi                                                       00/08/15
    11     001300       organization is sequential
    12     001400       access is sequential
    13     001500       file status is fs1.
           001600
    14     001700 Data division.
    15     001800 File section.
    16     001900 fd  file1.
    17     002000 01  record1.
           002100 copy dds-all-formats of samplefi.                                                       00/08/15
    18    +000001       05  SAMPLEFI-RECORD PIC X(546).                                        <-ALL-FMTS
          +000002*    I-O FORMAT:SAMPLEFILE FROM FILE SAMPLEFI   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    19    +000004       05  SAMPLEFILE    REDEFINES SAMPLEFI-RECORD.                           <-ALL-FMTS
    20    +000005           06 VARITEM.                                                        <-ALL-FMTS
          +000006*                  (可変長フィールド)                                         <-ALL-FMTS
    21    +000007                49 VARITEM-LENGTH   PIC S9(4) COMP-4.                         <-ALL-FMTS
    22    +000008                49 VARITEM-DATA     PIC X(100).                               <-ALL-FMTS
    23    +000009           06 TIMEITEM              PIC X(8).                                 <-ALL-FMTS
          +000010*                  (時刻フィールド)                                           <-ALL-FMTS
    24    +000011           06 DATEITEM              PIC X(8).                                 <-ALL-FMTS
          +000012*                  (日付フィールド)                                           <-ALL-FMTS
    25    +000013           06 TIMESTAMP             PIC X(26).                                <-ALL-FMTS
          +000014*                  (タイム・スタンプ・フィールド)                             <-ALL-FMTS
    26    +000015           06 GRAPHITEM             PIC G(100) DISPLAY-1.                     <-ALL-FMTS
          +000016*                  (グラフィック・フィールド)                                 <-ALL-FMTS
    27    +000017           06 VGRAPHITEM.                                                     <-ALL-FMTS
          +000018*                  (可変長フィールド)                                         <-ALL-FMTS
    28    +000019                49 VGRAPHITEM-LENGTH                                          <-ALL-FMTS
          +000020                                    PIC S9(4) COMP-4.                         <-ALL-FMTS
          +000021*                  (2 バイト文字の数)                                         <-ALL-FMTS
    29    +000022                49 VGRAPHITEM-DATA  PIC G(100) DISPLAY-1.                     <-ALL-FMTS
          +000023*                  (グラフィック・フィールド)                                 <-ALL-FMTS
    30     002200 Working-Storage section.
    31     002300 77  fs1      pic x(2).
           002400
    32     002500 Procedure division.
           002600 Mainline.
    33     002700     stop run.
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *