この節では、7.2 の ILE RPG における機能強化について説明します。
CTL-OPT OPTION(*SRCSTMT : *NODEBUGIO)
ALWNULL(*USRCTL);
DCL-F custFile usage(*update) extfile(custFilename);
DCL-F screen workstn;
DCL-F qprint printer(132) oflind(qprintOflow);
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 getCurrentUserName EXPORT;
DCL-PI *n CHAR(10) END-PI;
DCL-S curUser CHAR(10) INZ(*USER);
RETURN curUser;
END-PROC;
IF endDate < beginDate;
C GOTO internalError
ENDIF;
duration = %DIFF(endDate : beginDate : *days);
. . .
C internalError TAG
%SUBDT (日付、時刻、またはタイム・スタンプの一部の取り出し)を参照してください。
制御仕様書キーワード VALIDATE(*NODATETIME) を使用すると、 RPG コンパイラーは、妥当性検査を行わずに、日付データ、時刻データ、およびタイム・スタンプ・データ を文字データとして扱うことができます。VALIDATE(*NODATETIME)を参照してください。
これによって、 日付、時刻、およびタイム・スタンプに関する一部の操作のパフォーマンスが向上する可能性があります。
| 要素 | 説明 |
|---|---|
| CCSID キーワード |
|
| DFTACTGRP キーワード | 自由形式制御仕様があり、ACTGRP、BNDDIR、または STGMDL キーワードのうちの少なくとも 1 つが 使用されている場合、DFTACTGRP(*NO) が想定されます。DFTACTGRP(*YES | *NO)を参照してください。 |
| OPENOPT キーワード | OPENOPT(* {NO}CVT) は、データベース・ファイルに対する DATA キーワード
のデフォルトを制御します。
|

| 要素 | 説明 |
|---|---|
| /FREE および /END-FREE 指示 | 自由形式コードの始まりと終わりを示すためのこれらの指示は、 必要ではなくなりました。コンパイラーはこれらを無視します。/FREE... /END-FREEを参照してください。 |

| 要素 | 説明 |
|---|---|
| CCSID キーワード |
|
| DTAARA キーワード | 自由形式定義では、次のとおりです。
DTAARA キーワードを参照してください。 |
| EXTFLD キーワード | 自由形式のサブフィールド定義では、次のとおりです。
EXTFLD{(フィールド名) }を参照してください。 |
| EXTNAME キーワード | 自由形式のデータ構造定義では、次のとおりです。
|
| EXPORT および IMPORT キーワード | 自由形式定義では、次のとおりです。
EXPORT{(外部名)}および IMPORT{(外部名)}を参照してください。 |
| EXTPROC キーワード | 自由形式のプロトタイプ定義またはプロシージャー・インターフェース定義では、次のとおりです。
|
| LIKE キーワード | 自由形式定義で、LIKE キーワード
には長さ調整を指定する任意指定の第 2 パラメーターがあります。
LIKE(名前 {: 長さ調整 })を参照してください。 |
| LEN キーワード | 自由形式定義では、
データ構造定義に対してのみ LEN キーワードの使用が許可されています。
他の自由形式定義では、長さはデータ・タイプ・キーワードの一部として
指定されます。
LEN(長さ)を参照してください。 |
| CLASS、DATFMT、 PROCPTR、TIMFMT、および VARYING キーワード | これらのキーワードは、自由形式定義では使用されません。 これらのキーワードによって指定される情報は、関連するデータ・タイプ・キーワードの 一部として指定されます。 |
| FROMFILE、 PACKEVEN、および TOFILE キーワード | 自由形式定義では、これらのキーワードの使用は許可されません。 |
| OVERLAY キーワード | パラメーターに、自由形式サブフィールド定義のデータ構造の名前
を指定することはできません。代わりに POS キーワードが使用されます。 POS(開始位置)を参照してください。 |

| 要素 | 説明 |
|---|---|
| タイム・スタンプ・リテラル | タイム・スタンプ・リテラルは、0 から 12 桁の秒の小数部を含むことができます。 リテラルを参照してください。 |

| 要素 | 説明 |
|---|---|
| ファイルおよび定義ステートメント | ファイル・ステートメントと定義ステートメントを混在させることができます。 RPG IV の仕様書タイプを参照してください。 |

| 要素 | 説明 |
|---|---|
| %CHAR | オペランドがタイム・スタンプの場合、
戻り値の長さはタイム・スタンプのバイト数に基づきます。
形式が *ISO0 の場合、バイト数は、14 から 26 の間です。
形式が *ISO の場合、バイト数は、19、または 21 から 32 の間です。
%CHAR(日付|時刻|タイム・スタンプ {: 形式})を参照してください。 |
| %DEC | オペランドがタイム・スタンプの場合、
桁数は 14 から 26 の間であり、タイム・スタンプに含まれる秒の小数部の桁数に基づきます。
日付、時刻、またはタイム・スタンプ式を参照してください。 |
| %DIFF | オペランドがタイム・スタンプの場合、
任意指定の第 4 パラメーターが、戻される秒の小数部の桁数を指定します。
%DIFF (2 つの日付、時刻、またはタイム・スタンプ値の差)を参照してください。 |
| %SECONDS | %SECONDS を使用してタイム・スタンプに秒数を加算する場合、
パラメーターには小数点以下の秒数を指定する小数部も指定できます。
%SECONDS (秒数)を参照してください。 |
| %SUBDT |
%SUBDT (日付、時刻、またはタイム・スタンプの一部の取り出し)を参照してください。 |
| %TIMESTAMP |
%TIMESTAMP (タイム・スタンプへの変換)を参照してください。 |

| 要素 | 説明 |
|---|---|
| 長さ入力 | タイム・スタンプの長さを指定する入力項目は、19、または 21 から 32 までの
値にすることができます。 33 から 39 桁目 (終了位置/長さ)を参照してください。 |
| 「小数点以下の桁数」入力項目 | タイム・スタンプの小数部の桁数を指定する入力項目は、0 から 12 までの
値にすることができます。 41 から 42 桁目 (小数点以下の桁数)を参照してください。 |

| 要素 | 説明 |
|---|---|
| /SET 指示 | 以下の制御ステートメント・キーワードに新しい値を一時的に
設定します。
これらの値は、定義ステートメントでデフォルト値が明示的に指定されていない 場合にデフォルト値を提供するために使用されます。 /SETを参照してください。 |
| /RESTORE 指示 | 値を設定した最新の /SET 指示より前に設定されていた値に戻します。
|

| 要素 | 説明 |
|---|---|
| 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 | 自由形式のプロシージャー定義を終了します。 自由形式のプロシージャー・ステートメントを参照してください。 |

| 要素 | 説明 |
|---|---|
| DATA {* {NO}CVT) | 英数字データおよびグラフィック・データに対してジョブ CCSID からまたはジョブ CCSID への CCSID 変換
をデータベースが実行するようにファイルがオープンされるかどうかを制御します。 DISK{(*EXT | レコード長)}を参照してください。 |
| HANDLER(ハンドラー {:通信域}) | ファイルがオープン・アクセス・ファイルであることを指定します。 HANDLER(プログラムまたはプロシージャー { : 通信域)})を参照してください。 |
| DISK {(*EXT | レコード長)} | 自由形式ファイル定義の装置タイプを指定するための装置キーワード。
ファイル装置を参照してください。 |
| PRINTER {(*EXT | レコード長)} | |
| SEQ {(*EXT | レコード長)} | |
| SPECIAL {(*EXT | レコード長)} | |
| WORKSTN {(*EXT | レコード長)} | |
| USAGE(*INPUT *OUTPUT *UPDATE *DELETE) | 自由形式ファイル定義において、ファイルの使用法を
指定します。 USAGE(*INPUT *OUTPUT *UPDATE *DELETE)を参照してください。 |
| KEYED {(*CHAR : キー長)} | 自由形式ファイル定義において、ファイルがキー付きであることを
指定します。 KEYED{(*CHAR : キー長)}を参照してください。 |

| 要素 | 説明 |
|---|---|
| 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:クラス名)}を参照してください。 |

