2008/07/15

DB2,ZOS] DB2 DCLGEN JCL

//JS020 EXEC PGM=IKJEFT01,REGION=0M,DYNAMNBR=20
//STEPLIB DD DISP=SHR,DSN=DSNA.SDSNLOAD
//SYSTSIN DD *
DSN SYSTEM(DSNA)
DCLGEN TABLE(ABCD23F0.ZABCD) -
LIBRARY('DSNA.DCLLIB(ABCD23F0)') -
ACT(REP) -
NAMES(E3FM-) -
STRUCTURE(ABCD23F0) -
COLSUFFIX(YES)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSIN DD DUMMY

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 ****************************

2008/06/29

ZOS] SUBMIT - 일괄 실행 JCL

//JS010 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=KBS.MAINT.JCL(JCL001),DISP=SHR
//SYSUT2 DD SYSOUT=(*,INTRDR)
//SYSIN DD DUMMY
//*

2008/06/26

IBM,ZOS] H.Q RENAME, FILE manager 예제, 특정 lib.의 모든 memeber 들에 명시된 이름 변경

//JS010 EXEC PGM=FMNMAIN
//SYSPRINT DD SYSOUT=*
//FMNTSPRT DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//SYSIN DD *
$$FILEM FCH,
$$FILEM MEMBER=*,
$$FILEM PACK=ASIS,
$$FILEM JCL=NO,
$$FILEM DSNIN=KBS.TEST.JCLPDS,
$$FILEM PROC=*
OUTREC=SUBSTR(INREC,1,72)
OUTREC=CHANGE(OUTREC,'PLCH.','QLCH.')
RETURN
/+
/*

2008/06/24

ZOS] DSN RENAME

//LGCJXXXX JOB (WVCF3E,BP1A),'LGCJXXX',
// CLASS=X,
// MSGCLASS=Y
//JS010 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
ALTER PLCH.MIGUF.DSNTEST.XXXX.DATA1 -
NEWNAME( PLCH.MIGUF.DSNTEST.XXXX.DATA1.BK )
ALTER PLCH.MIGUF.DSNTEST.XXXX.DATA2 -
NEWNAME( PLCH.MIGUF.DSNTEST.XXXX.DATA2.BK )
/*

2008/06/23

ALP,BMC,ZOS] LOG MASTER 테이블 조회 SAMPLE

SELECT * FROM (
SELECT A.USERID,A.WORKIDNAME,A.RUNSEQNUM,A.HANDLE,HEX(A.URID) AS UI
,TBJ.MINUI
,CASE WHEN HEX(A.URID) < TBJ.MINUI THEN 1
ELSE 2 END AS CHKFLG
FROM BBIALP.ALPURID A,
(SELECT B.USERID,B.WORKIDNAME,B.RUNSEQNUM,B.HANDLE
,MIN(HEX(B.URIDLRSN)) AS MINUI FROM BBIALP.ALPURID B
WHERE B.RECORDTYPE = 2
AND B.USERID = 'LOGMSTRA'
AND B.WORKIDNAME LIKE 'LLOG000%'
GROUP BY B.USERID,B.WORKIDNAME,B.RUNSEQNUM,B.HANDLE) TBJ
WHERE A.RECORDTYPE = 1
AND A.USERID = TBJ.USERID
AND A.WORKIDNAME = TBJ.WORKIDNAME
AND A.RUNSEQNUM = TBJ.RUNSEQNUM
AND A.HANDLE = TBJ.HANDLE
) X
WHERE X.CHKFLG = 2
AND X.RUNSEQNUM >= 2599

2008/06/21

DB2,ZOS] IFNULL, NULL 데이터 처리 쿼리문

설명 : IFNULL 기능을 사용해서 다른 값으로 대체 함.

SELECT I.JOB_NAME ,I.JOB_OWNER, I.START_DATE, I.START_TIME
,I.ELAPSED_TIME, I.CPU_TIME, I.PROC_STEP, I.JCL_STEP
,I.PGM_NAME, J.RESULT_GB
,IFNULL(J.RESULT_CNTI,0),IFNULL(J.RESULT_CNT,0)
FROM CDBD2D20.TD2I0 I LEFT JOIN CDBD2D20.TD2J0 J
ON I.JOB_NAME = J.JOB_NAME
AND I.JOB_OWNER = J.JOB_OWNER
AND I.JOB_DATE = J.JOB_DATE
AND I.JOB_NUMBER = J.JOB_NUMBER
AND I.STEP_SEQ = J.STEP_SEQ
WHERE I.JOB_DATE >= '2008171'
AND I.JOB_DATE <= '2008172'
ORDER BY I.JOB_NAME, I.JOB_OWNER, I.JOB_DATE
,I.STEP_SEQ
WITH UR;

2008/06/17

excel] 문자 탐색 - vlookup #1

=IF(ISNA(VLOOKUP(C2,plch!A:F,6,FALSE)),0,VLOOKUP(C2,plch!A:F,6,FALSE))

ftp로 dsn list 출력 하기 - log 파일 지정

>> dataset-list.bat
ftp -s:dataset-list_plcB.src 10.10.11.11 > DSLIST_PLCB.out


>> dataset-list_plcB.src
bskim
JUN2008
dir 'PLCB.MIGUF.*'
bye

2008/06/01

ICETOOL] record count jcl

//ICETOOL EXEC PGM=ICETOOL,REGION=0M
//DATA1 DD DISP=SHR,DSN=TLCH.MIGUF.KBSLIB.DATA1
//*ORTWK01 DD UNIT=SYSDA,SPACE=(640,3),AVGREC=M
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//TOOLIN DD *
COUNT FROM(DATA1)
/*