%%SET

MFBSI における %%SET の有効な構文は次のとおりです。

%%SET %%VarName[space(s)]=[space(s)]Expression

Expression は次のいずれかにすることができます。

この例は、%%SET 変数置換を示しています。

文/式 解決結果
%%SET %%PARM=XYZ
%%PARM:[XYZ]
%%SET   %%PARM  =XYZ
%%PARM:[XYZ]
%%SET %%PARM  =    XYZ
%%PARM:[XYZ]
%%SET %%PARM  =    X Y   Z
%%PARM:[XYZ]
%%SET %%PARM=ABC  DEF
%%PARM:[ABCDEF]
%%SET %%PARM=ABC%%BLANK2DEF
%%PARM:         [ABC  DEF]
%%SET %%PARM=ABC%%BLANKDEF
%%PARM:         [ABC  DEF]
%%SET %%PARM=ABCDEF%%BLANK5
%%PARM:         [ABCDEF     ]
%%SET %%PARM=ABCDEF%%BLANK3
%%PARM:         [ABCDEF   ]
%%SET %%PARM='ABCDEF%%BLANK5'
%%PARM:         ['ABCDEF     ']
%%SET %%PARM=%%$ODATE%%.ABC
%%PARM:         [20110701ABC]
%%SET %%PARM=%%$ODATE.ABC
%%PARM:         [20110701.ABC]
%%SET %%PARM=%%$ODATEABC
エラー:%%$ODATEABC は解決できません。
注:これがプール内に存在する場合、%%PARM の値はそのまま残ります。
  %%SET %%A=1
%%SET %%B=2
%%SET %%A2=100

//       TAPE=TAPE%%A%%B,
//       TAPE=TAPE%%A.%%B,
//       PARM=PRM%%A%%.%%B,
//       PARM=PRM%%A%%..%%B,
//       PARM='%%A%%%BLANK3%%B',
//DDN  DD DSN=HLQ.DATASET.A%%A.%%B,
//DDN  DD DSN=HLQ.DATASET.A%%A..%%B,
//DDN  DD DSN=HLQ.DATASET.A%%A%%..%%B,
//DDN  DD DSN=HLQ.DATASET.A%%A%%B,



//       TAPE=TAPE100,
//       TAPE=TAPE1.2,
//       PARM=PRM12,
//       PARM=PRM1.2,
//       PARM=’1   2’,
//DDN  DD DSN=HLQ.DATASET.A12,
//DDN  DD DSN=HLQ.DATASET.A1.2,
//DDN  DD DSN=HLQ.DATASET.A1.2,
//DDN  DD DSN=HLQ.DATASET.A100,
%%$ODATE%%BLANK5%%#AS-IS%%BLANK5%%WEEK
20110716     %%AS-IS     28

この例は、%%SET 制御文における日付関数の解決を示しています。

文/式 解決結果
%%$YEARWK# %%$DATE
%%$YEARWK# 20010214
%%$YEARWK# 20050101
%%$YEARWK# 20011231

%%$YEARWK# 20101220
%%$YEARWK# 20101227
%%$YEARWK# 20110102
%%$YEARWK# 20110103

%%$CALCDTE %%$ODATE +D1
%%$CALCDTE   %%$ODATE +1

%%SET %%ADD_DATE=7
%%$CALCDTE %%$ODATE +%%ADD_DATE
%%$CALCDTE 20110101 -1
%%$CALCDTE 20101231 +1
%%$CALCDTE 20110228 +1
%%$CALCDTE 20110228 +1
[2011W28]
[2011W28]
[2011W28]
[2011W28]

[2011W28]
[2011W28]
[2011W28]
[2011W28]

[20110717]
[20110717]

[7]
[20110723]
[20101231]
[20110101]
[20110301]
[20110301]

この例は、%%SET 制御文における %%PLUS / %%MINUS の解決を示しています。

文/式 解決結果
%%SET %%_SCRATCH1=10 %%PLUS 25
%%SET %%_SCRATCH2=  %%B   %%MINUS   %%A
%%SET %%_SCRATCH3=%%A %%PLUS %%B
[35]
[1]
[3]

この例は、%%SET 制御文における %%SUBSTR の解決を示しています。

文/式 解決結果
%%SET %%STR=00-01-02
%%SET %%TAPE_01=%%SUBSTR %%STR 4 2
%%SET %%TAPE_02=EE100002
%%SET %%TAPE_03=EE100003
%%SET %%TAPE_04=EE100004
%%SET %%TAPE_05=EE100005
%%SET %%TAPE_06=EE100006
%%SET %%TAPE_07=EE100007
%%SET %%TAPE_08=EE100008
%%SET %%TAPE_09=EE100009
%%SET %%TAPE_10=EE100010
%%SET %%TAPE_11=EE100011
%%SET %%TAPE_12=EE100012

//    UNIT=TAPE,VOL=SER=TAPE%%TAPE_01,
//    UNIT=TAPE,VOL=SER=%%TAPE%%OMONTH,
[00-01-02]
[01]
[EE100002]
[EE100003]
[EE100004]
[EE100005]
[EE100006]
[EE100007]
[EE100008]
[EE100009]
[EE100010]
[EE100011]
[EE100012]

//    UNIT=TAPE,VOL=SER=TAPE01,
//    UNIT=TAPE,VOL=SER=EE100007,