変更の始まり

/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 の例

  1. 英数字項目およびグラフィック項目のデフォルト CCSID と日付項目のデフォルト日付形式が、 制御仕様キーワードを使用して指定されています。CCSID(*UCS2) は 13488 にデフォルト設定され、TIMFMT は *ISO にデフォルト設定されます。
  2. フィールド char1 は英数字です。CCSID キーワードは 指定されていないため、CCSID は *UTF8 にデフォルト設定されます。
  3. フィールド graph1 はグラフィックです。CCSID キーワード は指定されていないため、CCSID は 835 にデフォルト設定されます。
  4. /SET 指示はデフォルト英数字 CCSID を 37 に設定し、 デフォルト UCS-2 CCSID を 1200 に設定しています。
  5. フィールド char2 は英数字です。CCSID キーワード は指定されていないため、CCSID は 37 にデフォルト設定されます。
  6. フィールド char3 は LIKE キーワードを使用して定義されています。 CCSID(*DFT) が指定されていて、デフォルト CCSID を使用することを示しています。英数字フィールドと同種であると定義されているため、 現行のデフォルト英数字 CCSID である 37 が使用されます。
  7. /RESTORE 指示は、CCSID(*CHAR) を、前の値である *UTF8 に 戻します。この /RESTORE 指示には CCSID(*UCS2) は指定されていないため、 前の /SET 指示で設定された値 1200 は有効なままです。
  8. フィールド ucs1 は UCS-2 です。CCSID キーワード は指定されていないため、CCSID は 1200 にデフォルト設定されます。これは、現行のデフォルト UCS-2 CCSID です。
  9. ソース・メンバー copyfile を組み込むために /COPY が使用されています。 この時点で、デフォルトは、CCSID(*CHAR:*UTF8)、CCSID(*GRAPH:835)、 CCSID(*UCS2:1200)、DATFMT(*YMD)、TIMFMT(*ISO) です。
  10. コピー・ファイルは /SET 指示で始まっていて、 このコピー・ファイル内で使用されるデータ・タイプに対してデフォルトが設定されています。この時点から、 デフォルトは、CCSID(*CHAR:*UTF8)、CCSID(*GRAPH:835)、CCSID(*UCS2:13488)、DATFMT(*ISO)、 TIMFMT(*HMS) になります。
  11. フィールド time1 は時刻フィールドです。TIMFMT キーワード は指定されていないため、時刻形式は、コピー・ファイル内の /SET 指示で設定されたデフォルトである *HMS に デフォルト設定されます。
  12. フィールド char4 は英数字です。CCSID キーワードは 指定されていないため、CCSID は *UTF8 にデフォルト設定されます。
  13. コピー・ファイルの最後で、このコピー・ファイル内の /SET 指示で設定された すべての値は暗黙的に元に戻されます。
  14. この時点で、デフォルトは、/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 
変更の終わり