2008/07/15

REXX,ZOS] jcl의 dsn 사용 목록 출력하기

/* REXX */

MEMNM='';

EXITRC = LISTDSI("ISFEXT" "FILE")
IF EXITRC <> 0 THEN
DO
EXTDSN = "'QLCH.MIGJW.DBAWORK.DSN.PARSE'"
IF SYSDSN(EXTDSN) = 'OK' THEN "DELETE" EXTDSN
"ALLOC F(ISFEXT) DA("EXTDSN") NEW CATALOG SPACE(1 10) ",
"CYLINDERS LRECL(53) BLKSIZE(27984) RECFM(F B) UNIT(SYSDA)"
IF RC <> 0 THEN EXIT(83)
END

"ALLOC FI(MEMLIST) DA('TLCH.MIGUF.KBSLIB($MEMLIST)') SHR REU"

ADDRESS TSO "EXECIO * DISKR MEMLIST (STEM INLIST. FINIS)"

IF RC <> 0 THEN SAY "CAN'T READ INPUT MEMBER !!!"
ELSE
DO K=1 TO INLIST.0
PARSE VAR INLIST.K MEMNM .
CALL GET_DSN_LIST
"ALLOC FI(ISFEXT) DA("EXTDSN") MOD REU"
ADDRESS TSO "EXECIO * DISKW ISFEXT (FINIS"
"FREE F(ISFEXT)"
END
EXIT
/* =============================================================== */
GET_DSN_LIST:

PDSNM = "TLCH.MIGUF.JCLPDS("MEMNM")"

"ALLOC FI(GETDSNL) DA('"PDSNM"') SHR REU"

ADDRESS TSO "EXECIO * DISKR GETDSNL (STEM INMEM. FINIS)"

DO I=1 TO INMEM.0
PARSE VAR INMEM.I CONTENTS +72 .
IF INDEX(INMEM.I,"DSN=") > 0 THEN
DO
DSN_PS1 = INDEX(INMEM.I,"DSN=") + 4
DSN_CUT_LEN = 72 - DSN_PS1
DSN_CUT_NAME = SUBSTR(INMEM.I,DSN_PS1,DSN_CUT_LEN)
IF INDEX(DSN_CUT_NAME," ") > 0 THEN
DSN_LEN = INDEX(DSN_CUT_NAME," ")
IF INDEX(DSN_CUT_NAME,",") > 0 THEN
DSN_LEN = INDEX(DSN_CUT_NAME,",") - 1
DSN_NAME = LEFT(DSN_CUT_NAME,DSN_LEN)
QUEUE MEMNM","DSN_NAME
END
END
RETURN


***************************** Top of Data ******************************
//LGCJDBQS JOB (WVCF3E,BP1A),'LGCJDBQ',
// CLASS=M,SCHENV=DV0A,
// MSGCLASS=Y,NOTIFY=&SYSUID
//REXXRUN EXEC PGM=IKJEFT01,PARM='RXDSNLST'
//*EXXRUN EXEC PGM=IKJEFT01,PARM='RXDBREAD DBTM'
//STEPLIB DD DISP=SHR,DSN=DBTM.DSNLOAD
//SYSEXEC DD DISP=SHR,DSN=TLCH.MIGUF.KBSLIB
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
**************************** Bottom of Data ****************************

댓글 없음: