5.12.取り出しコマンドの作り方 |
たとえば、あるファイルの情報を取り出して、それをコマンドに戻したい、と思ったことはありませんか? たとえば、RTVJOBAみたいに、いくつかのキーワードがあって、その中の一部に、&xxxxとすると、その変数フィールドにデータが戻るようなコマンドです。 割合簡単ですが、ちょっとしたコツがあります。
下にあるのはコマンドソースです。赤い文字に気をつけてください。プロンプト画面GIF。 CMD PROMPT('RETRIEVE DATE ATTRIBUTE') PARM KWD(DATE) TYPE(*CHAR) LEN(6) MIN(1) + EXPR(*YES) PROMPT('DATE (6):') PARM KWD(WEEK) TYPE(*CHAR) LEN(1) RTNVAL(*YES) + PROMPT('WEEK CODE (1):') PARM KWD(WEEKE) TYPE(*CHAR) LEN(3) RTNVAL(*YES) + PROMPT('WEEK ENGLISH + NAME (3):') PARM KWD(WEEKK) TYPE(*CHAR) LEN(4) RTNVAL(*YES) + PROMPT('WEEK JAPANESE + NAME (4):') PARM KWD(BSN) TYPE(*CHAR) LEN(1) RTNVAL(*YES) + PROMPT('BUSINESS DATE + OR NOT (1):') PARM KWD(STEN) TYPE(*CHAR) LEN(1) RTNVAL(*YES) + PROMPT('FIRST BUSINESS + DAY OR NOT (1):') PARM KWD(HOL) TYPE(*CHAR) LEN(1) RTNVAL(*YES) + PROMPT('HOLYDAY (1):') PARM KWD(JUL) TYPE(*CHAR) LEN(3) RTNVAL(*YES) + PROMPT('JULIAN DATE (3):') PARM KWD(BDY) TYPE(*CHAR) LEN(2) RTNVAL(*YES) + PROMPT('NUMBER OF BUSINESS DAYE (2):') PARM KWD(LDY) TYPE(*CHAR) LEN(2) RTNVAL(*YES) + PROMPT('LAST DAY OF + MONTH (2):') PARM KWD(STR) TYPE(*CHAR) LEN(2) RTNVAL(*YES) + PROMPT('START BUSINESS + DAY (2):') PARM KWD(END) TYPE(*CHAR) LEN(2) RTNVAL(*YES) + PROMPT('END BUSINESS + DAY (2):') 下にCLPのサンプルを掲げます。 PGM (&DATE &WEEK &WEEKE &WEEKK &BSN &STEN + &HOL &JUL &BDY &LDY &STR &END) DCL &DATE *CHAR 6 DCL &WEEK *CHAR 1 DCL &WEEKE *CHAR 3 DCL &WEEKK *CHAR 4 DCL &BSN *CHAR 1 DCL &STEN *CHAR 1 DCL &HOL *CHAR 1 DCL &JUL *CHAR 3 DCL &BDY *CHAR 2 DCL &LDY *CHAR 2 DCL &STR *CHAR 2 DCL &END *CHAR 2 DCL &PARM *CHAR 45 DCL &PERR *CHAR 1 DCLF CALENDP MONMSG CPF0000 MONMSG MCH3600 CHGVAR &ZZDATE &DATE RCVMSG CHGVAR &ZZWEEK &WEEK RCVMSG CHGVAR &ZZWEKA &WEEKE RCVMSG CHGVAR &ZZWEKK &WEEKK RCVMSG CHGVAR &ZZBSN &BSN RCVMSG CHGVAR &ZZSTEN &STEN RCVMSG CHGVAR &ZZHOL &HOL RCVMSG CHGVAR &ZZJUL &JUL RCVMSG CHGVAR &ZZBDY &BDY RCVMSG CHGVAR &ZZLDY &LDY RCVMSG CHGVAR &ZZSTR &STR RCVMSG CHGVAR &ZZEND &END RCVMSG IF (%SST(&ZZDATE 1 2)>='40') CHGVAR &ZZCEN '0' ELSE CHGVAR &ZZCEN '1' CHGVAR &PARM (&ZZCEN||&ZZDATE||&ZZYY||&ZZMM||&ZZDD||+ &ZZWEEK||&ZZWEKA||&ZZWEKK||&ZZBSN||&ZZSTEN||&ZZHOL||+ &ZZJUL||&ZZBDY||&ZZLDY||&ZZSTR||&ZZEND||+ &ZZFLG0||&ZZFLG1||&ZZFLG2||&ZZFLG3||&ZZFLG4||&ZZFLG5||+ &ZZFLG6||&ZZFLG7||&ZZFLG8||&ZZFLG9) CALL CALEN020 (&PARM &PERR) IF (&PERR='E') + SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('DATE IS + INVALID. NO DATA IS FOUND IN CALENDAR + FILE "CALENDP"') MSGTYPE(*ESCAPE) CHGVAR &WEEK %SST(&PARM 14 1) RCVMSG CHGVAR &WEEKE %SST(&PARM 15 3) RCVMSG CHGVAR &WEEKK %SST(&PARM 18 4) RCVMSG CHGVAR &BSN %SST(&PARM 22 1) RCVMSG CHGVAR &STEN %SST(&PARM 23 1) RCVMSG CHGVAR &HOL %SST(&PARM 24 1) RCVMSG CHGVAR &JUL %SST(&PARM 25 3) RCVMSG CHGVAR &BDY %SST(&PARM 28 2) RCVMSG CHGVAR &LDY %SST(&PARM 30 2) RCVMSG CHGVAR &STR %SST(&PARM 32 2) RCVMSG CHGVAR &END %SST(&PARM 34 2) RCVMSG RETURN ENDPGM |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||