/SET
コンパイラー指示 /SET は、定義に対して新しいデフォルト値を 一時的に設定するために使用します。
1 つ以上のキーワードに対する /SET 指示の影響を 取り消すには、/RESTORE 指示を使用します。
/SET 指示と共に以下のキーワードを指定できます。
- CCSID(*CHAR : ccsid)
- CCSID キーワードも LIKE キーワードも指定せずに定義された英数字項目に対して、 および、CCSID(*EXACT) キーワードなしで定義された データ構造の外部記述英数字サブフィールドに対して、デフォルト CCSID を指定します。 CCSID(*CHAR : *JOBRUN | *JOBRUNMIX | *UTF8 | *HEX | 番号)を参照してください。
- CCSID(*GRAPH : ccsid)
- CCSID キーワードなしで指定されたグラフィック項目のデフォルト CCSID を 指定します。CCSID(*GRAPH : *JOBRUN | *SRC | *HEX | *IGNORE | 番号)を参照してください。
- CCSID(*UCS2 : ccsid)
- CCSID キーワードなしで指定された UCS-2 項目のデフォルト CCSID を 指定します。CCSID(*UCS2 : *UTF16 | 番号)を参照してください。
- DATFMT(形式)
- 日付形式なしで指定された (自由形式定義でパラメーターなしで DATE キーワードが指定されているか、 または、固定形式定義で DATFMT キーワードが指定されていない) 日付項目 のデフォルトの形式および区切り記号を指定します。DATFMT(形式 {区切り記号 })を参照してください。
- TIMFMT(形式)
- 時刻形式なしで指定された (自由形式定義でパラメーターなしで TIME キーワードが指定されているか、 または、固定形式定義で TIMFMT キーワードが指定されていない) 時刻項目 のデフォルトの形式および区切り記号を指定します。TIMFMT(形式 {区切り記号 })を参照してください。
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