コンパイラー指示 /SET は、定義に対して新しいデフォルト値を
一時的に設定するために使用します。
1 つ以上のキーワードに対する /SET 指示の影響を
取り消すには、/RESTORE 指示を使用します。
SET 指示をコピー・ファイル内に指定することによって、そのコピー・ファイルを含んでいるすべてのモジュールが、時刻形式と日付形式、および CCSID に確実に同じ値を使用するようにします。コピー・ファイル内の /SET 指示で設定された値は、
/COPY または /INCLUDE 指示の前の値に暗黙的に戻されます。
コピー・ファイルを変更できない場合、/COPY または /INCLUDE 指示の前に /SET 指示を
コーディングし、/COPY または /INCLUDE 指示の後に /RESTORE 指示を
コーディングして /SET 指示の前に有効だった値にデフォルトを戻すことができます。
/SET および /RESTORE に関する規則
- /SET 指示をネストできます。
- /RESTORE 指示に指定されるキーワードは、前の /SET 指示に指定された
キーワードと完全に一致する必要はありません。
1 つの /RESTORE 指示で、それより前にあるいずれかの /SET 指示で設定された値の一部またはすべてを
元に戻すことができます。
/SET および /RESTORE の例
- 英数字項目およびグラフィック項目のデフォルト CCSID と日付項目のデフォルト日付形式が、
制御仕様キーワードを使用して指定されています。CCSID(*UCS2) は 13488 にデフォルト設定され、TIMFMT は *ISO にデフォルト設定されます。
- フィールド char1 は英数字です。CCSID キーワードは
指定されていないため、CCSID は *UTF8 にデフォルト設定されます。
- フィールド graph1 はグラフィックです。CCSID キーワード
は指定されていないため、CCSID は 835 にデフォルト設定されます。
- /SET 指示はデフォルト英数字 CCSID を 37 に設定し、
デフォルト UCS-2 CCSID を 1200 に設定しています。
- フィールド char2 は英数字です。CCSID キーワード
は指定されていないため、CCSID は 37 にデフォルト設定されます。
- フィールド char3 は LIKE キーワードを使用して定義されています。
CCSID(*DFT) が指定されていて、デフォルト CCSID を使用することを示しています。英数字フィールドと同種であると定義されているため、
現行のデフォルト英数字 CCSID である 37 が使用されます。
- /RESTORE 指示は、CCSID(*CHAR) を、前の値である *UTF8 に
戻します。この /RESTORE 指示には CCSID(*UCS2) は指定されていないため、
前の /SET 指示で設定された値 1200 は有効なままです。
- フィールド ucs1 は UCS-2 です。CCSID キーワード
は指定されていないため、CCSID は 1200 にデフォルト設定されます。これは、現行のデフォルト UCS-2 CCSID です。
- ソース・メンバー copyfile を組み込むために /COPY が使用されています。
この時点で、デフォルトは、CCSID(*CHAR:*UTF8)、CCSID(*GRAPH:835)、
CCSID(*UCS2:1200)、DATFMT(*YMD)、TIMFMT(*ISO) です。
- コピー・ファイルは /SET 指示で始まっていて、
このコピー・ファイル内で使用されるデータ・タイプに対してデフォルトが設定されています。この時点から、
デフォルトは、CCSID(*CHAR:*UTF8)、CCSID(*GRAPH:835)、CCSID(*UCS2:13488)、DATFMT(*ISO)、
TIMFMT(*HMS) になります。
- フィールド time1 は時刻フィールドです。TIMFMT キーワード
は指定されていないため、時刻形式は、コピー・ファイル内の /SET 指示で設定されたデフォルトである *HMS に
デフォルト設定されます。
- フィールド char4 は英数字です。CCSID キーワードは
指定されていないため、CCSID は *UTF8 にデフォルト設定されます。
- コピー・ファイルの最後で、このコピー・ファイル内の /SET 指示で設定された
すべての値は暗黙的に元に戻されます。
- この時点で、デフォルトは、/COPY 指示の前と同じ
値、つまり、CCSID(*CHAR:*UTF8)、CCSID(*GRAPH:835)、CCSID(*UCS2:1200)、
DATFMT(*YMD)、TIMFMT(*ISO) になります。
図 1. メイン・ソース・ファイル CTL-OPT CCSID(*CHAR : *UTF8) CCSID(*GRAPH : 835) 1
DATFMT(*YMD); 1
DCL-S char1 char(10); 2
DCL-S graph1 graph(10); 3
/SET CCSID(*CHAR : 37) CCSID(*UCS2:1200) 4
DCL-S char2 char(10); 5
DCL-S char3 LIKE(char1) CCSID(*DFT); 6
/RESTORE CCSID(*CHAR) 7
DCL-S ucs1 UCS2(10); 8
/COPY copyfile 9
14
図 2. /COPY ファイル copyfile /SET CCSID(*UCS2 : 13488) DATFMT(*ISO) TIMFMT(*HMS) 10
DCL-S time1 time; 11
DCL-S char4 char(10); 12
13