変更の始まり

このリリースの新機能について

この節では、7.2 の ILE RPG における機能強化について説明します。

自由形式の、制御ステートメント、ファイル・ステートメント、定義ステートメント、およびプロシージャー・ステートメント
  • 自由形式の制御ステートメントは、CTL-OPT で始まり、 セミコロンで終わります。自由形式の制御ステートメントを参照してください。
     CTL-OPT OPTION(*SRCSTMT : *NODEBUGIO)
             ALWNULL(*USRCTL);
  • 自由形式のファイル定義ステートメントは、DCL-F で始まり、 セミコロンで終わります。自由形式のファイル定義ステートメントを参照してください。
    下記のステートメント は次の 3 つのファイルを定義しています。
    1. 入力および更新用にオープンされる外部記述 DISK ファイル。
    2. 入力および出力用にオープンされる外部記述 WORKSTN ファイル。
    3. レコード長が 132 のプログラム記述 PRINTER ファイル。
     DCL-F custFile usage(*update) extfile(custFilename);
     DCL-F screen workstn;
     DCL-F qprint printer(132) oflind(qprintOflow);
  • 自由形式のデータ定義ステートメントは、DCL-CDCL-DSDCL-PIDCL-PR、 または DCL-S で始まり、セミコロンで終わります。自由形式の定義ステートメントを参照してください。
    下記の ステートメントは、いくつかの項目を定義しています。
    1. 名前付き定数 MAX_ELEMS
    2. 可変長の独立文字フィールド fullName
    3. 整数サブフィールド num と UCS-2 サブフィールド address を含む、修飾されたデータ構造。
    4. プロシージャー「Qp0lRenameUnlink」のプロトタイプ。
     DCL-C MAX_ELEMS 1000;
     DCL-S fullName VARCHAR(50)
                    INZ('Unknown name');
     DCL-DS ds1 QUALIFIED;
       num INT(10);
       address UCS2(100);
     END-DS;
     DCL-PR Qp0lRenameUnlink INT(10) EXTPROC(*DCLCASE);
        oldName POINTER VALUE OPTIONS(*STRING);
        newName POINTER VALUE OPTIONS(*STRING);
     END-PR;
  • 自由形式のプロシージャー定義ステートメントは、DCL-PROC で始まり、 セミコロンで終わります。プロシージャーを終了するために END-PROC ステートメント が使用されます。自由形式のプロシージャー・ステートメントを参照してください。

    次の 例は、自由形式のサブプロシージャー定義の例です。

     DCL-PROC getCurrentUserName EXPORT;
        DCL-PI *n CHAR(10) END-PI;
        DCL-S curUser CHAR(10) INZ(*USER);
    
        RETURN curUser;
     END-PROC; 
  • /FREE 指示および /END-FREE 指示は必要ではなくなりました。コンパイラーはそれらを無視します。
  • 自由形式ステートメントと固定形式ステートメントを混在させることができます。
             IF endDate < beginDate;
    C                   GOTO      internalError
             ENDIF;
             duration = %DIFF(endDate : beginDate : *days);
             . . .
    C     internalError TAG
英数字データの CCSID のサポート
  • モジュールのデフォルト英数字 CCSID として、UTF-8 および 16 進を含めて、より多くの CCSID を設定できるようになりました。
  • 英数字データを CCSID を指定して定義できます。サポートされる CCSID は次のとおりです。
    • 1 バイトおよび混合バイトの EBCDIC CCSID
    • 1 バイトおよび混合バイトの ASCII CCSID
    • UTF-8
    • 16 進数
    CCSID 定義キーワードを参照してください。
外部英数字サブフィールドの CCSID
外部記述データ構造に対して CCSID(*EXACT) を使用して、 英数字サブフィールドの CCSID がファイル内のフィールドの CCSID と 同じである必要があることを示します。
16 進データでは CCSID 変換は実行されない
16 進データの暗黙的または 明示的変換では CCSID 変換は許可されていません。
16 進データには、次のものがあります。
  • 16 進数リテラル
  • CCSID(*HEX) を指定して定義された英数字データおよびグラフィック・データ
  • ファイルに対して DATA キーワードが有効であり、かつ、ファイル内のフィールドの CCSID が 65535 である場合、 外部記述ファイル用のバッファー内にある英数字データおよびグラフィック・データ
  • ファイル内のフィールドの CCSID が 65535 である場合、 CCSID(*EXACT) を指定して定義された外部記述データ構造内の英数字データおよびグラフィック・データ
連結のための暗黙的な変換
コンパイラーは、連結式のために、英数字データ、グラフィック・データ、および UCS-2 データ の間の暗黙的な変換を実行します。変換を参照してください。
ジョブ CCSID への変換なしでのデータベース・ファイルのオープン
制御キーワード OPENOPT(*NOCVTDATA) またはファイル・キーワード DATA(*NOCVT) を 使用することによって、データベース・ファイルがオープンされるときに、英数字データおよびグラフィック・データに 対するジョブ CCSID からの変換およびジョブ CCSID への変換が入出力操作の際に実行されないようにオープンされることを指定できます。 OPENOPT (* {NO }INZOFL * {NO }CVTDATA)を参照してください。
デフォルト CCSID、日付形式、または時刻形式の一時的な変更
/SET 指示と /RESTORE 指示を使用することによって、 日付形式、時刻形式、および CCSID のデフォルト値を設定できます。 /SETを参照してください。
%SUBDT によって戻される長さの制御
任意指定のパラメーターである %SUBDT の第 3 パラメーターを使用して、 結果の桁数を指定できます。 例えば、%SUBDT(MyDate:*YEARS:4) と指定すると、年数の値を 4 桁の値として戻すことができます。

%SUBDT (日付、時刻、またはタイム・スタンプの一部の取り出し)を参照してください。

タイム・スタンプ・データの精度向上
タイム・スタンプ・データは、0 から 12 桁の秒の小数部を含むことができます。 タイム・スタンプ・データ・タイプを参照してください。
オープン・アクセス・ファイル
オープン・アクセス・ファイルは、オペレーティング・システムではなく、ユーザー作成のプログラムまたはプロシージャー によってすべての処理が行われるファイルです。このプログラムまたはプロシージャーは「オープン・アクセス・ハンドラー」または 単に「ハンドラー」と呼ばれます。HANDLER キーワードがハンドラーを指定します。オープン・アクセス・ファイルを参照してください。
XML-INTO の新規オプション
  • "ns" オプションおよび "nsprefix" オプションによって XML 名前空間がサポートされます。ns オプションおよび nsprefix オプションを参照してください。
  • サブフィールド名に使用することを RPG がサポートしていない文字を含む XML 名 が "case=convert" オプションによってサポートされます。case オプションを参照してください。
ソース文字がターゲット文字セット中に存在しない場合はデータ逸失を起こす CCSID 変換のサポート
制御仕様キーワード CCSIDCVT(*EXCP : *LIST)。 CCSIDCVT(*EXCP | *LIST)を参照してください。
  • CCSIDCVT(*EXCP) を使用すると、ソース文字と一致するものがターゲット文字セット中にないことが原因で CCSID 変換で データ逸失が起こった場合には例外を取得することができます。
  • CCSIDCVT(*LIST) を使用すると、モジュール内のすべての CCSID 変換のリストを取得でき、 リスト中の各変換についてデータ逸失の可能性があるかどうかが診断メッセージで示されます。
RPG コンパイラーが日付データ、時刻データ、およびタイム・スタンプ・データ を処理中に妥当性検査ステップをスキップすることを許可する VALIDATE(*NODATETIME)

制御仕様書キーワード VALIDATE(*NODATETIME) を使用すると、 RPG コンパイラーは、妥当性検査を行わずに、日付データ、時刻データ、およびタイム・スタンプ・データ を文字データとして扱うことができます。VALIDATE(*NODATETIME)を参照してください。

これによって、 日付、時刻、およびタイム・スタンプに関する一部の操作のパフォーマンスが向上する可能性があります。

警告: 妥当性検査ステップを スキップすることによって重大なデータ破壊問題が起こる場合があります。この機能を使用するのは、日付データ、時刻データ、およびタイム・スタンプ・データ が常に有効であるという確信がある場合に限定するべきです。
変更の始まり
表 1. 7.2 で変更された言語要素: 制御仕様書キーワード
要素 説明
CCSID キーワード
  • CCSID(*EXACT) は、モジュール内のすべての英数字データの CCSID に注意するよう コンパイラーに指示します。
    • 英数字リテラルおよびグラフィック・リテラルの CCSID はソース・ファイルの CCSID です。
    • 英数字データには常に CCSID があると見なされます。

    CCSID(*EXACT) が指定されていない場合、 RPG コンパイラーは、リテラル、変数、または、データベース・ファイルの入力バッファーおよび出力バッファー に入っているデータの CCSID に関して誤った想定を行う可能性があります。

    CCSID(*EXACT)を参照してください。
  • CCSID(*CHAR:ccsid) は、*HEX、*UTF8、ASCII CCSID、および EBCDIC CCSID をサポートします。
DFTACTGRP キーワード 自由形式制御仕様があり、ACTGRP、BNDDIR、または STGMDL キーワードのうちの少なくとも 1 つが 使用されている場合、DFTACTGRP(*NO) が想定されます。DFTACTGRP(*YES | *NO)を参照してください。
OPENOPT キーワード OPENOPT(* {NO}CVT) は、データベース・ファイルに対する DATA キーワード のデフォルトを制御します。
  • OPENOPT(*CVT) は、DISK および SEQ ファイルに DATA キーワードが指定されていない場合は DATA(*CVT) が 想定されることを示します。
  • OPENOPT(*NOCVT) は、DISK および SEQ ファイルに DATA キーワードが指定されていない場合は DATA(*NOCVT) が 想定されることを示します。
OPENOPT (* {NO }INZOFL * {NO }CVTDATA)を参照してください
変更の終わり
変更の始まり
表 2. 7.2 で変更された言語要素: 指示
要素 説明
/FREE および /END-FREE 指示 自由形式コードの始まりと終わりを示すためのこれらの指示は、 必要ではなくなりました。コンパイラーはこれらを無視します。/FREE... /END-FREEを参照してください。
変更の終わり
変更の始まり
表 3. 7.2 で変更された言語要素: 定義仕様書キーワード
要素 説明
CCSID キーワード
  • 英数字データに対してサポートされます
  • 外部記述データ構造に対してサポートされ、英数字サブフィールドの CCSID を制御できます
DTAARA キーワード 自由形式定義では、次のとおりです。
  • *VAR は使用されません。引用符で囲まずに指定されている名前は、 変数または名前付き定数の名前であると想定されます。
  • データ構造の場合、それがデータ域データ構造であることを指定 するには、*AUTO を使用します。IN、OUT、および UNLOCK 命令を使用してデータ域が操作可能であることを指定するには、*USRCTL を 使用します。

DTAARA キーワードを参照してください。

EXTFLD キーワード 自由形式のサブフィールド定義では、次のとおりです。
  • パラメーターは任意指定です。
  • パラメーターが引用符で囲まずに指定されている場合、 前に定義済みの名前付き定数の名前であると想定されます。

EXTFLD{(フィールド名) }を参照してください。

EXTNAME キーワード 自由形式のデータ構造定義では、次のとおりです。
  • ファイル名パラメーターまたは形式名パラメーターが引用符で囲まずに指定されている 場合、前に定義済みの名前付き定数の名前であると想定されます。

EXTNAME(ファイル名{:形式名}{:*ALL| *INPUT|*OUTPUT|*KEY})を参照してください。

EXPORT および IMPORT キーワード 自由形式定義では、次のとおりです。
  • 外部名に対して *DCLCASE を指定できます。これは、 外部名が独立フィールドまたはデータ構造の指定方法と、大/小文字混合文字が同じである ことを含めて、同一であることを示します。

EXPORT{(外部名)}および IMPORT{(外部名)}を参照してください。

EXTPROC キーワード 自由形式のプロトタイプ定義またはプロシージャー・インターフェース定義では、次のとおりです。
  • 外部プロシージャー名またはメソッド名に対して *DCLCASE を指定できます。これは、 外部名が、プロトタイプまたはプロシージャー・インターフェースの指定方法と、 大/小文字混合文字が同じであることを含めて、同一であることを示します。
  • プロシージャー・インターフェース名が *N と指定されている場合は、 外部名は DCL-PROC ステートメントから取得されます。

EXTPROC({*CL|*CWIDEN|*CNOWIDEN| {*JAVA:クラス名:}}名前)を参照してください。

LIKE キーワード 自由形式定義で、LIKE キーワード には長さ調整を指定する任意指定の第 2 パラメーターがあります。

LIKE(名前 {: 長さ調整 })を参照してください。

LEN キーワード 自由形式定義では、 データ構造定義に対してのみ LEN キーワードの使用が許可されています。 他の自由形式定義では、長さはデータ・タイプ・キーワードの一部として 指定されます。

LEN(長さ)を参照してください。

CLASS、DATFMT、 PROCPTR、TIMFMT、および VARYING キーワード これらのキーワードは、自由形式定義では使用されません。 これらのキーワードによって指定される情報は、関連するデータ・タイプ・キーワードの 一部として指定されます。
FROMFILE、 PACKEVEN、および TOFILE キーワード 自由形式定義では、これらのキーワードの使用は許可されません。
OVERLAY キーワード パラメーターに、自由形式サブフィールド定義のデータ構造の名前 を指定することはできません。代わりに POS キーワードが使用されます。

POS(開始位置)を参照してください。

変更の終わり
変更の始まり
表 4. 7.2 で変更された言語要素: リテラル
要素 説明
タイム・スタンプ・リテラル タイム・スタンプ・リテラルは、0 から 12 桁の秒の小数部を含むことができます。

リテラルを参照してください。

変更の終わり
変更の始まり
表 5. 7.2 で変更された言語要素: ステートメントの順序
要素 説明
ファイルおよび定義ステートメント ファイル・ステートメントと定義ステートメントを混在させることができます。

RPG IV の仕様書タイプを参照してください。

変更の終わり
変更の始まり
表 6. 7.2 で変更された言語要素: 組み込み関数
要素 説明
%CHAR オペランドがタイム・スタンプの場合、 戻り値の長さはタイム・スタンプのバイト数に基づきます。 形式が *ISO0 の場合、バイト数は、14 から 26 の間です。 形式が *ISO の場合、バイト数は、19、または 21 から 32 の間です。

%CHAR(日付|時刻|タイム・スタンプ {: 形式})を参照してください。

%DEC オペランドがタイム・スタンプの場合、 桁数は 14 から 26 の間であり、タイム・スタンプに含まれる秒の小数部の桁数に基づきます。

日付、時刻、またはタイム・スタンプ式を参照してください。

%DIFF オペランドがタイム・スタンプの場合、 任意指定の第 4 パラメーターが、戻される秒の小数部の桁数を指定します。

%DIFF (2 つの日付、時刻、またはタイム・スタンプ値の差)を参照してください。

%SECONDS %SECONDS を使用してタイム・スタンプに秒数を加算する場合、 パラメーターには小数点以下の秒数を指定する小数部も指定できます。

%SECONDS (秒数)を参照してください。

%SUBDT
  • 任意指定の第 3 パラメーターは、結果の桁数を指定します。
  • 第 1 オペランドがタイム・スタンプで、第 2 オペランド が *SECONDS の場合、任意指定の第 4 オペランドは、結果に含まれる秒の小数部の桁数を示します。

%SUBDT (日付、時刻、またはタイム・スタンプの一部の取り出し)を参照してください。

%TIMESTAMP
  • 最初のパラメーターにタイム・スタンプを指定できます。
  • 最初のパラメーターに *SYS を指定できます。
  • 最初のパラメーターが、日付、タイム・スタンプ、または *SYS である場合、 任意指定の第 2 パラメーターには、秒の小数部の桁数を示す 0 から 12 までの値を 指定できます。
  • 最初のパラメーターが文字または数値の場合、任意指定の第 3 パラメーター には、秒の小数部の桁数を示す 0 から 12 までの値を 指定できます。

%TIMESTAMP (タイム・スタンプへの変換)を参照してください。

変更の終わり
変更の始まり
表 7. 7.2 で変更された言語要素: 固定形式定義仕様書
要素 説明
長さ入力 タイム・スタンプの長さを指定する入力項目は、19、または 21 から 32 までの 値にすることができます。

33 から 39 桁目 (終了位置/長さ)を参照してください。

「小数点以下の桁数」入力項目 タイム・スタンプの小数部の桁数を指定する入力項目は、0 から 12 までの 値にすることができます。

41 から 42 桁目 (小数点以下の桁数)を参照してください。

変更の終わり
変更の始まり
表 8. 7.2 での新しい言語要素: 指示
要素 説明
/SET 指示 以下の制御ステートメント・キーワードに新しい値を一時的に 設定します。
  • CCSID(*CHAR:ccsid)
  • CCSID(*GRAPH:ccsid)
  • CCSID(*UCS2:ccsid)
  • DATFMT(形式)
  • TIMFMT(形式)

これらの値は、定義ステートメントでデフォルト値が明示的に指定されていない 場合にデフォルト値を提供するために使用されます。

/SETを参照してください。
/RESTORE 指示 値を設定した最新の /SET 指示より前に設定されていた値に戻します。
  • CCSID(*CHAR)
  • CCSID(*GRAPH)
  • CCSID(*UCS2)
  • DATFMT
  • TIMFMT
/RESTOREを参照してください。
変更の終わり
変更の始まり
表 9. 7.2 での新しい言語要素: 自由形式ステートメント
要素 説明
CTL-OPT 自由形式の制御ステートメントを開始します。

自由形式の制御ステートメントを参照してください。

DCL-F 自由形式のファイル定義を開始します。

自由形式のファイル定義ステートメントを参照してください。

DCL-C 自由形式の名前付き定数定義を開始します。

自由形式の名前付き定数の定義を参照してください。

DCL-DS 自由形式のデータ構造定義を開始します。

自由形式のデータ構造定義を参照してください。

DCL-SUBF 自由形式のサブフィールド定義を開始します。サブフィールド名 が自由形式演算内で使用を許可されている命令コードのいずれかと同じで ある場合を除いて、「DCL-SUBF」は任意指定です。

自由形式のサブフィールド定義を参照してください。

END-DS 自由形式のデータ構造定義を終了します。 サブフィールドがない場合、DCL-DS ステートメントの最後のキーワードの後に これを指定することができます。

自由形式のデータ構造定義を参照してください。

DCL-PI 自由形式のプロシージャー・インターフェース定義を開始します。

自由形式プロシージャー・インターフェース定義を参照してください。

DCL-PR 自由形式のプロトタイプ定義を開始します。

自由形式のプロトタイプ定義を参照してください。

DCL-PARM 自由形式のパラメーター定義を開始します。パラメーター名 が自由形式演算内で使用を許可されている命令コードのいずれかと同じ である場合を除いて、「DCL-PARM」は任意指定です。

自由形式のパラメーター定義を参照してください。

.
END-PI 自由形式のプロシージャー・インターフェース定義を終了します。 パラメーターがない場合、DCL-PI ステートメントの最後のキーワードの後にこれを指定する ことができます。

自由形式プロシージャー・インターフェース定義を参照してください。

END-PR 自由形式のプロトタイプ定義を終了します。パラメーターがない場合、DCL-PR ステートメントの最後のキーワードの後にこれを指定する ことができます。

自由形式のプロトタイプ定義を参照してください。

DCL-S 自由形式の独立フィールド定義を開始します。

自由形式の独立フィールド定義を参照してください。

DCL-PROC 自由形式のプロシージャー定義を開始します。

自由形式のプロシージャー・ステートメントを参照してください。

END-PROC 自由形式のプロシージャー定義を終了します。

自由形式のプロシージャー・ステートメントを参照してください。

変更の終わり
変更の始まり
表 10. 7.2 での新しい言語要素: ファイル定義キーワード
要素 説明
DATA {* {NO}CVT) 英数字データおよびグラフィック・データに対してジョブ CCSID からまたはジョブ CCSID への CCSID 変換 をデータベースが実行するようにファイルがオープンされるかどうかを制御します。

DISK{(*EXT | レコード長)}を参照してください。

HANDLER(ハンドラー {:通信域}) ファイルがオープン・アクセス・ファイルであることを指定します。

HANDLER(プログラムまたはプロシージャー { : 通信域)})を参照してください。

DISK {(*EXT | レコード長)} 自由形式ファイル定義の装置タイプを指定するための装置キーワード。
  • デフォルトの装置タイプは DISK です。
  • 各装置タイプ・キーワードのデフォルト・パラメーターは *EXT であり、 外部記述ファイルであることを示します。

ファイル装置を参照してください。

PRINTER {(*EXT | レコード長)}
SEQ {(*EXT | レコード長)}
SPECIAL {(*EXT | レコード長)}
WORKSTN {(*EXT | レコード長)}
USAGE(*INPUT *OUTPUT *UPDATE *DELETE) 自由形式ファイル定義において、ファイルの使用法を 指定します。

USAGE(*INPUT *OUTPUT *UPDATE *DELETE)を参照してください。

KEYED {(*CHAR : キー長)} 自由形式ファイル定義において、ファイルがキー付きであることを 指定します。

KEYED{(*CHAR : キー長)}を参照してください。

変更の終わり
変更の始まり
表 11. 7.2 での新しい言語要素: 自由形式データ・タイプ・キーワード
要素 説明
CHAR(長さ) 固定長英数字データ・タイプ

CHAR(長さ)を参照してください。

VARCHAR(長さ {:接頭部サイズ}) 可変長英数字データ・タイプ

VARCHAR(長さ {:2 | 4})を参照してください。

GRAPH(長さ) 固定長グラフィック・データ・タイプ

GRAPH(長さ)を参照してください。

VARGRAPH(長さ {:接頭部サイズ}) 可変長グラフィック・データ・タイプ

VARGRAPH(長さ {:2 | 4})を参照してください。

UCS2(長さ) 固定長 UCS-2 データ・タイプ

UCS2(長さ)を参照してください。

VARUCS2(長さ {:接頭部サイズ}) 可変長 UCS-2 データ・タイプ

VARUCS2(長さ {:2 | 4})を参照してください。

IND 標識データ・タイプ

INDを参照してください。

INT(桁数) 整数データ・タイプ

INT(桁数)を参照してください。

UNS(桁数) 符号なし整数データ・タイプ

UNS(桁数)を参照してください。

PACKED(桁数 {:小数点以下の桁数}) パック 10 進数データ・タイプ

PACKED(桁数 {: 小数点以下の桁数})を参照してください。

ZONED(桁数 {:小数点以下の桁数}) ゾーン 10 進数データ・タイプ

ZONED(桁数 {: 小数点以下の桁数})を参照してください。

BINDEC(桁数 {:小数点以下の桁数}) 2 進 10 進数データ・タイプ

BINDEC(桁数 {: 小数点以下の桁数})を参照してください。

FLOAT(サイズ) 浮動小数点データ・タイプ

FLOAT(バイト数)を参照してください。

DATE {(形式)} 日付データ・タイプ

DATE{(形式 {区切り記号 }) }を参照してください。

TIME {(形式)} 時刻データ・タイプ

TIME{(形式 {区切り記号 }) }を参照してください。

TIMESTAMP {(秒の小数部の桁数)} タイム・スタンプ・データ・タイプ

TIMESTAMP { (秒の小数部の桁数) }を参照してください。

POINTER {(*PROC)} ポインター・データ・タイプ。任意指定のパラメーター *PROC は、 プロシージャー・ポインターであることを示します。

POINTER{(*PROC)}を参照してください。

OBJECT {(*JAVA : クラス名)} オブジェクト・データ・タイプ。Java™ コンストラクターの戻りタイプを定義している場合、パラメーターは任意指定です。

OBJECT{(*JAVA:クラス名)}を参照してください。

変更の終わり
変更の始まり
表 12. 7.2 での新しい言語要素: 自由形式データ定義キーワード
要素 説明
EXT データ構造が外部記述であることを 示します。このキーワードは、データ構造定義の最初のキーワードとして EXTNAME キーワード が指定されている場合は任意指定です。EXTを参照してください。
POS(サブフィールド開始位置) データ構造内でのサブフィールドの開始位置を 指定します。

POS(開始位置)を参照してください。

PSDS データ構造がプログラム状況データ構造であることを 指定します。PSDSを参照してください。
変更の終わり
変更の終わり