***************************** Top of Data ******************************
//LGCJDBQC JOB (WVCF3E,BP1A),'LGCJDBQ',
// CLASS=M,SCHENV=DV0A,
// MSGCLASS=Y,NOTIFY=&SYSUID
//* TLCH.MIGUF.KBSLIB(RXCHKDSN)
//REXXRUN EXEC PGM=IKJEFT01,PARM='RXCHKDSN LCE-LOAD'
//SYSEXEC DD DISP=SHR,DSN=TLCH.MIGUF.KBSLIB
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
**************************** Bottom of Data ****************************
***************************** Top of Data ******************************
/* REXX */
/* INPUT ARG PARM = LCB-UNLD */
ARG WORK_GB
DSN_CHK_HEAD = SUBSTR(WORK_GB,1,3)
DSN_CHK_MIDL = SUBSTR(WORK_GB,5,4)
IF SUBSTR(WORK_GB,3,1)="B" THEN S_COND="L.DBNAME LIKE 'LCB%'"
ELSE IF SUBSTR(WORK_GB,3,1)="E" THEN S_COND="L.DBNAME LIKE 'LCE%'"
ELSE IF SUBSTR(WORK_GB,3,1)="F" THEN S_COND="L.DBNAME LIKE 'LCF%'"
ELSE IF SUBSTR(WORK_GB,3,1)="H" THEN S_COND="L.DBNAME LIKE 'LCH%'"
ELSE DO
SAY "INVALID INPUT VALUE !!! CHECK YOUR INPUT PARAMETER~ "
EXIT(8)
END
CALL GET_OBJ_LIST
EXIT
/* ------------------------------------------------------------- */
GET_OBJ_LIST:
IDX = 0
DROP IDBNAME.
DROP ITBNAME.
DROP IPARTCNT.
DROP ILOADTYPE.
"SUBCOM DSNREXX"
IF RC THEN S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')
ADDRESS DSNREXX "CONNECT" DV0A
SEL_STMT = "SELECT L.DBNAME,L.TBNAME,TS.PARTITIONS ",
" ,L.LOAD_TYPE ",
" FROM SYSIBM.SYSTABLESPACE TS,CDBD2D20.TD2L0 L ",
" WHERE (L.NUM_CONV=6 AND ",
S_COND || ")",
" AND (TS.DBNAME=L.DBNAME AND TS.NAME=L.TBNAME) ",
" ORDER BY 1,2 ",
" WITH UR "
ADDRESS DSNREXX "EXECSQL DECLARE C1 CURSOR WITH HOLD FOR S1"
IF SQLCODE = 0 THEN
ADDRESS DSNREXX "EXECSQL PREPARE S1 FROM :SEL_STMT"
IF SQLCODE = 0 THEN
ADDRESS DSNREXX "EXECSQL OPEN C1"
IF SQLCODE = 100 THEN DO
ADDRESS DSNREXX "EXECSQL CLOSE C1"
'THERE IS NO TABLES USING ' || S_BP || ' BPOOL. '
EXIT(4)
END
ELSE
DO FOREVER
ADDRESS DSNREXX "EXECSQL FETCH C1 INTO :DB_NAME ",
" ,:TB_NAME ",
" ,:PART_CNT ",
" ,:LOAD_TYPE "
IF SQLCODE = 0 THEN DO
/*
IDX = IDX + 1
IDBNAME.IDX = DB_NAME
ITBNAME.IDX = TB_NAME
IPARTCNT.IDX = PART_CNT
ILOADTYPE.IDX = LOAD_TYPE
*/
CALL DSN_CHECK
END
ELSE IF SQLCODE = 100 THEN DO
/*
IDBNAME.0 = IDX
ITBNAME.0 = IDX
IPARTCNT.0 = IDX
ILOADTYPE.0 = IDX
*/
ADDRESS DSNREXX "EXECSQL CLOSE C1"
LEAVE
END
ELSE DO
SAY " FETCH SQLCODE : " SQLCODE
SAY " FETCH SQLERRMC : " SQLERRMC
EXIT(8)
END
END
RETURN
/* -------------- */
DSN_CHECK:
I = 1
IF DSN_CHK_MIDL = "UNLD" & PART_CNT = 0 THEN DO
CHK_DSN = "'S"||DSN_CHK_HEAD||".MIGUF."||TB_NAME||"."||,
DSN_CHK_MIDL||".P000'"
SAY SUBSTR(CHK_DSN,2,26) LISTDSI(CHK_DSN)
END
ELSE IF DSN_CHK_MIDL = "UNLD" & PART_CNT > 0 THEN
DO I=1 TO PART_CNT BY 1
PART_NUM = TRANSLATE(FORMAT(I,3),'0',' ')
CHK_DSN = "'S"||DSN_CHK_HEAD||".MIGUF."||TB_NAME||"."||,
DSN_CHK_MIDL||".P"||PART_NUM||"'"
SAY SUBSTR(CHK_DSN,2,26) LISTDSI(CHK_DSN)
END
ELSE IF DSN_CHK_MIDL = "LOAD" & PART_CNT = 0 THEN DO
SELECT
WHEN LOAD_TYPE = "Y" | LOAD_TYPE = "E" THEN DO
CHK_DSN = "'Q"||DSN_CHK_HEAD||".MIGUF."||TB_NAME||"."||,
DSN_CHK_MIDL||".P000'"
SAY SUBSTR(CHK_DSN,2,26) LISTDSI(CHK_DSN)
END
WHEN LOAD_TYPE = "S" THEN DO
CHK_DSN = "'S"||DSN_CHK_HEAD||".MIGUF."||TB_NAME||"."||,
"UNLD.P000'"
SAY SUBSTR(CHK_DSN,2,26) LISTDSI(CHK_DSN)
END
OTHERWISE NOP
END
END
ELSE IF DSN_CHK_MIDL = "LOAD" & PART_CNT > 0 THEN DO
SELECT
WHEN LOAD_TYPE = "Y" | LOAD_TYPE = "E" THEN
DO I=1 TO PART_CNT BY 1
PART_NUM = TRANSLATE(FORMAT(I,3),'0',' ')
CHK_DSN = "'Q"||DSN_CHK_HEAD||".MIGUF."||TB_NAME||"."||,
DSN_CHK_MIDL||".P"||PART_NUM||"'"
SAY SUBSTR(CHK_DSN,2,26) LISTDSI(CHK_DSN)
END
WHEN LOAD_TYPE = "S" THEN
DO I=1 TO PART_CNT BY 1
PART_NUM = TRANSLATE(FORMAT(I,3),'0',' ')
CHK_DSN = "'S"||DSN_CHK_HEAD||".MIGUF."||TB_NAME||"."||,
"UNLD.P"||PART_NUM||"'"
SAY SUBSTR(CHK_DSN,2,26) LISTDSI(CHK_DSN)
END
OTHERWISE NOP
END
END
ELSE DO
SAY "COULD YOU CHECK YOUR INTPUT >> "DSN_CHK_MIDL" & " PART_CNT
END
RETURN
**************************** Bottom of Data ****************************
2008/07/24
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
//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 ****************************
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
//*
//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
/+
/*
//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 )
/*
// 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
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;
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
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
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)
/*
//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)
/*
2008/05/21
REXX,예제] 일자계산
/* REXX */
START_DATE = '2008-05-19'
START_TIME = '00:05:59'
END_DATE = '2008-05-19'
END_TIME = '20:19:20'
ELAPSE_TIME = GET_ETM(START_DATE,START_TIME,END_DATE,END_TIME)
SAY '********* ' ELAPSE_TIME '*********'
EXIT
/* GETTING ELAPSE TIME */
GET_ETM:
ARG D1,T1,D2,T2
/*SAY D1 T1 D2 T2 */
D1 = SUBSTR(D1,1,4) || SUBSTR(D1,6,2) || SUBSTR(D1,9,2)
D2 = SUBSTR(D2,1,4) || SUBSTR(D2,6,2) || SUBSTR(D2,9,2)
D1_JUL = DATE('B',DATE(,D1,'S'))
D2_JUL = DATE('B',DATE(,D2,'S'))
T1_SEC = SUBSTR(T1,1,2) * 60 * 60 ,
+ SUBSTR(T1,4,2) * 60 ,
+ SUBSTR(T1,7,2)
T2_SEC = SUBSTR(T2,1,2) * 60 * 60 ,
+ SUBSTR(T2,4,2) * 60 ,
+ SUBSTR(T2,7,2) ,
+ ( ( D2_JUL - D1_JUL ) * 60 * 60 * 24 ) /* DAY */
GAP = ( T2_SEC - T1_SEC )
E_HH = TRANSLATE(FORMAT(GAP%(60*60),2),'0',' ')
E_MM = TRANSLATE(FORMAT((GAP-(E_HH*60*60))%60,2),'0',' ')
E_SS = TRANSLATE(FORMAT(GAP//60,2),'0',' ')
E_TM = E_HH':'E_MM':'E_SS
RETURN E_TM
START_DATE = '2008-05-19'
START_TIME = '00:05:59'
END_DATE = '2008-05-19'
END_TIME = '20:19:20'
ELAPSE_TIME = GET_ETM(START_DATE,START_TIME,END_DATE,END_TIME)
SAY '********* ' ELAPSE_TIME '*********'
EXIT
/* GETTING ELAPSE TIME */
GET_ETM:
ARG D1,T1,D2,T2
/*SAY D1 T1 D2 T2 */
D1 = SUBSTR(D1,1,4) || SUBSTR(D1,6,2) || SUBSTR(D1,9,2)
D2 = SUBSTR(D2,1,4) || SUBSTR(D2,6,2) || SUBSTR(D2,9,2)
D1_JUL = DATE('B',DATE(,D1,'S'))
D2_JUL = DATE('B',DATE(,D2,'S'))
T1_SEC = SUBSTR(T1,1,2) * 60 * 60 ,
+ SUBSTR(T1,4,2) * 60 ,
+ SUBSTR(T1,7,2)
T2_SEC = SUBSTR(T2,1,2) * 60 * 60 ,
+ SUBSTR(T2,4,2) * 60 ,
+ SUBSTR(T2,7,2) ,
+ ( ( D2_JUL - D1_JUL ) * 60 * 60 * 24 ) /* DAY */
GAP = ( T2_SEC - T1_SEC )
E_HH = TRANSLATE(FORMAT(GAP%(60*60),2),'0',' ')
E_MM = TRANSLATE(FORMAT((GAP-(E_HH*60*60))%60,2),'0',' ')
E_SS = TRANSLATE(FORMAT(GAP//60,2),'0',' ')
E_TM = E_HH':'E_MM':'E_SS
RETURN E_TM
2007/12/08
ZOS] sms rule 변경 후 적용 명령어
acds switch 명령어
/setsms acds(SYS1.SMS.PROD.ACDS)
scds 적용 및 activate
/setsms scds(SYS1.SMS.PROD.SCDS)
/setsms acds(SYS1.SMS.PROD.ACDS)
scds 적용 및 activate
/setsms scds(SYS1.SMS.PROD.SCDS)
2007/12/06
ZOS] multi volume data set catalog add
//PSJTSO1V JOB A,A,CLASS=K,MSGCLASS=X
//*------------------------------------------------------------
//* VSAM RECATALOG ( CLUSTER & AIX ) --
//*------------------------------------------------------------
//STEP1 EXEC PGM=IDCAMS,REGION=512K
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE NONVSAM(NAME(SD.NISPLAN.UNLOAD) -
VOLUMES(RB0052,RB0053) -
DEVICETYPES(3390)) -
CATALOG(CATALOG.UC.SAM)
//*------------------------------------------------------------
//* VSAM RECATALOG ( CLUSTER & AIX ) --
//*------------------------------------------------------------
//STEP1 EXEC PGM=IDCAMS,REGION=512K
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE NONVSAM(NAME(SD.NISPLAN.UNLOAD) -
VOLUMES(RB0052,RB0053) -
DEVICETYPES(3390)) -
CATALOG(CATALOG.UC.SAM)
ZOS,BMC] ADU share level change option 사용 case #2
//BMC@UDMG JOB CLASS=W,MSGCLASS=X,NOTIFY=&SYSUID
//* UNLOAD
//UNLOAD EXEC PGM=ADUUMAIN,REGION=0M,
// PARM='DSNA,LCFB01TS,NEW,,MSGLEVEL(1)'
//STEPLIB DD DISP=SHR,DSN=BMCP.DB2.LOAD
//SYSREC01 DD DSN=SD.DATA.D071206.LCFB01T.M200711,
// DISP=(NEW,CATLG),UNIT=3390,
// SPACE=(CYL,(100,200),RLSE),
// VOL=SER=RB0045
//SORTWK01 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB10
//SORTWK02 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB11
//SORTWK03 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB12
//SORTWK04 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB13
//SORTWK05 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB14
//SORTWK06 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB15
//SORTWK07 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB16
//SORTWK08 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB17
//SORTWK09 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB18
//SORTWK10 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB19
//*YSCNTL DD DSN=SD.DATA.D071206.LCFB01T.PUNCH,
//* UNIT=3390,SPACE=(TRK,(15,15)),
//* DISP=(NEW,CATLG),VOL=SER=KB1319
//UTPRINT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
UNLOAD
SHRLEVEL CHANGE
UNLOADDN(SYSREC01)
SELECT * FROM KBDB.LCFB01T
WHERE LCFB01_FIN_YM = '200711'
;
/*
//* UNLOAD
//UNLOAD EXEC PGM=ADUUMAIN,REGION=0M,
// PARM='DSNA,LCFB01TS,NEW,,MSGLEVEL(1)'
//STEPLIB DD DISP=SHR,DSN=BMCP.DB2.LOAD
//SYSREC01 DD DSN=SD.DATA.D071206.LCFB01T.M200711,
// DISP=(NEW,CATLG),UNIT=3390,
// SPACE=(CYL,(100,200),RLSE),
// VOL=SER=RB0045
//SORTWK01 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB10
//SORTWK02 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB11
//SORTWK03 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB12
//SORTWK04 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB13
//SORTWK05 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB14
//SORTWK06 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB15
//SORTWK07 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB16
//SORTWK08 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB17
//SORTWK09 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB18
//SORTWK10 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB19
//*YSCNTL DD DSN=SD.DATA.D071206.LCFB01T.PUNCH,
//* UNIT=3390,SPACE=(TRK,(15,15)),
//* DISP=(NEW,CATLG),VOL=SER=KB1319
//UTPRINT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
UNLOAD
SHRLEVEL CHANGE
UNLOADDN(SYSREC01)
SELECT * FROM KBDB.LCFB01T
WHERE LCFB01_FIN_YM = '200711'
;
/*
ZOS,BMC] ADU share level change option 사용 case #1
//BMC@UD03 JOB CLASS=W,MSGCLASS=X,NOTIFY=&SYSUID
//* UNLOAD
//UNLOAD EXEC PGM=ADUUMAIN,REGION=0M,
// PARM='DSNA,LCFB01TS,NEW,,MSGLEVEL(1)'
//STEPLIB DD DISP=SHR,DSN=BMCP.DB2.LOAD
//VSAMDD DD DISP=SHR,DSN=PDB2.DSNDBD.LCDB00.LCFB01S.I0001.A003
//SYSREC01 DD DSN=SD.DATA.D071206.LCFB01T.PART03,
// DISP=(NEW,CATLG),UNIT=3390,
// SPACE=(CYL,(2000,200),RLSE),
// VOL=SER=(RB0021,RB0046)
//SORTWK01 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB10
//SORTWK02 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB11
//SORTWK03 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB12
//SORTWK04 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB13
//SORTWK05 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB14
//SORTWK06 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB15
//SORTWK07 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB16
//SORTWK08 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB17
//SORTWK09 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB18
//SORTWK10 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB19
//*YSCNTL DD DSN=SD.DATA.D071206.LCFB01T.PUNCH,
//* UNIT=3390,SPACE=(TRK,(15,15)),
//* DISP=(NEW,CATLG),VOL=SER=KB1319
//UTPRINT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
UNLOAD
DIRECT YES SHRLEVEL CHANGE
INFILE VSAMDD
UNLOADDN(SYSREC01)
SELECT * FROM KBDB.LCFB01T OPTIONS (PART 3);
/*
//* UNLOAD
//UNLOAD EXEC PGM=ADUUMAIN,REGION=0M,
// PARM='DSNA,LCFB01TS,NEW,,MSGLEVEL(1)'
//STEPLIB DD DISP=SHR,DSN=BMCP.DB2.LOAD
//VSAMDD DD DISP=SHR,DSN=PDB2.DSNDBD.LCDB00.LCFB01S.I0001.A003
//SYSREC01 DD DSN=SD.DATA.D071206.LCFB01T.PART03,
// DISP=(NEW,CATLG),UNIT=3390,
// SPACE=(CYL,(2000,200),RLSE),
// VOL=SER=(RB0021,RB0046)
//SORTWK01 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB10
//SORTWK02 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB11
//SORTWK03 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB12
//SORTWK04 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB13
//SORTWK05 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB14
//SORTWK06 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB15
//SORTWK07 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB16
//SORTWK08 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB17
//SORTWK09 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB18
//SORTWK10 DD UNIT=3390,SPACE=(CYL,(2000,300)),VOL=SER=UADB19
//*YSCNTL DD DSN=SD.DATA.D071206.LCFB01T.PUNCH,
//* UNIT=3390,SPACE=(TRK,(15,15)),
//* DISP=(NEW,CATLG),VOL=SER=KB1319
//UTPRINT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
UNLOAD
DIRECT YES SHRLEVEL CHANGE
INFILE VSAMDD
UNLOADDN(SYSREC01)
SELECT * FROM KBDB.LCFB01T OPTIONS (PART 3);
/*
2007/11/22
ZOS,BMC] PTF BIN lib. 정보
Data Set Name . . . . : DBPGBMC.UIS.PTF.BIN
General Data Current Allocation
Management class . . : **None** Allocated cylinders : 10
Storage class . . . : **None** Allocated extents . : 1
Volume serial . . . : PSF159
Device type . . . . : 3390
Data class . . . . . : **None** Current Utilization
Organization . . . : PS Used cylinders . . : 1
Record format . . . : FB Used extents . . . : 1
Record length . . . : 80
Block size . . . . : 27920
1st extent cylinders: 10
Secondary cylinders : 10
Data set name type : SMS Compressible : NO
Creation date . . . : 2007/04/03 Referenced date . . : 2007/11/22
Expiration date . . : ***None***
General Data Current Allocation
Management class . . : **None** Allocated cylinders : 10
Storage class . . . : **None** Allocated extents . : 1
Volume serial . . . : PSF159
Device type . . . . : 3390
Data class . . . . . : **None** Current Utilization
Organization . . . : PS Used cylinders . . : 1
Record format . . . : FB Used extents . . . : 1
Record length . . . : 80
Block size . . . . : 27920
1st extent cylinders: 10
Secondary cylinders : 10
Data set name type : SMS Compressible : NO
Creation date . . . : 2007/04/03 Referenced date . . : 2007/11/22
Expiration date . . : ***None***
ZOS,BMC] 설치 Tape file download
//UNLOAD EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
//BMCTLOAD DD DSN=BMC.INSTALL.LOAD,DISP=OLD,VOL=SER=B9A789,
// UNIT=ACST,LABEL=(1,SL,EXPDT=98000)
//*
//BMCTINST DD DSN=BMC.INSTALL,DISP=OLD,VOL=SER=B9A789,
// UNIT=AFF=BMCTLOAD,LABEL=(2,SL,EXPDT=98000)
//*
//BMCILOAD DD DISP=(,CATLG,DELETE),DSN=DBTGBMC.UIS.INSTALL.LOAD,
// UNIT=SYSDA,SPACE=(CYL,(50,5,500)),VOL=SER=TS7090,
// DCB=(RECFM=U,BLKSIZE=23476)
//*
//BMCIINST DD DISP=(,CATLG,DELETE),DSN=DBTGBMC.UIS.INSTALL,
// UNIT=SYSDA,SPACE=(CYL,(60,5,900)),VOL=SER=TS7090,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*
//SYSIN DD *
COPY I=BMCTLOAD,O=BMCILOAD
COPY I=BMCTINST,O=BMCIINST
/*
//SYSPRINT DD SYSOUT=*
//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
//BMCTLOAD DD DSN=BMC.INSTALL.LOAD,DISP=OLD,VOL=SER=B9A789,
// UNIT=ACST,LABEL=(1,SL,EXPDT=98000)
//*
//BMCTINST DD DSN=BMC.INSTALL,DISP=OLD,VOL=SER=B9A789,
// UNIT=AFF=BMCTLOAD,LABEL=(2,SL,EXPDT=98000)
//*
//BMCILOAD DD DISP=(,CATLG,DELETE),DSN=DBTGBMC.UIS.INSTALL.LOAD,
// UNIT=SYSDA,SPACE=(CYL,(50,5,500)),VOL=SER=TS7090,
// DCB=(RECFM=U,BLKSIZE=23476)
//*
//BMCIINST DD DISP=(,CATLG,DELETE),DSN=DBTGBMC.UIS.INSTALL,
// UNIT=SYSDA,SPACE=(CYL,(60,5,900)),VOL=SER=TS7090,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*
//SYSIN DD *
COPY I=BMCTLOAD,O=BMCILOAD
COPY I=BMCTINST,O=BMCIINST
/*
2007/11/21
ZOS,DB2] 특정 문자에 대한 변경 (update)
UPDATE DCT.DTZ250
SET Z25_CD_ABNM = REPLACE(Z25_CD_ABNM, ' 현대카드 ',' 큐로컴 ')
WHERE Z25_CD_ABNM LIKE '% 현대카드 %'
;
SET Z25_CD_ABNM = REPLACE(Z25_CD_ABNM, ' 현대카드 ',' 큐로컴 ')
WHERE Z25_CD_ABNM LIKE '% 현대카드 %'
;
2007/11/12
ZOS] BMC REORG maint list 출력 JCL
//BMCINSTJ JOB MSGCLASS=X,CLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//* NOTIFY=&SYSUID
//*
//REORG EXEC PGM=ARUUMAIN,
// PARM='DBPG,BMCUIS02,MAINT,,MSGLEVEL(1)',
// REGION=4M
//STEPLIB DD DISP=SHR,DSN=DBPGBMC.UIS.LOAD
//BMCCPY DD DUMMY
//BMCCPZ DD DUMMY
//UTPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SORTWK01 DD UNIT=3390,SPACE=(CYL,(1,1)),DISP=(NEW,DELETE)
//SYSUT1 DD DUMMY
//SYSREC DD DUMMY
//SYSIN DD DUMMY
/*
//* NOTIFY=&SYSUID
//*
//REORG EXEC PGM=ARUUMAIN,
// PARM='DBPG,BMCUIS02,MAINT,,MSGLEVEL(1)',
// REGION=4M
//STEPLIB DD DISP=SHR,DSN=DBPGBMC.UIS.LOAD
//BMCCPY DD DUMMY
//BMCCPZ DD DUMMY
//UTPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SORTWK01 DD UNIT=3390,SPACE=(CYL,(1,1)),DISP=(NEW,DELETE)
//SYSUT1 DD DUMMY
//SYSREC DD DUMMY
//SYSIN DD DUMMY
/*
피드 구독하기:
글 (Atom)