일부 레코드가있는 파일이 있고 처음과 마지막 10 레코드 만 다른 파일에 복사하려고합니다.파일에서 레코드 읽기
아무도 당신은 당신의 입력 파일의 일부를 복사 ICETOOL을 사용할 수 있습니다
일부 레코드가있는 파일이 있고 처음과 마지막 10 레코드 만 다른 파일에 복사하려고합니다.파일에서 레코드 읽기
아무도 당신은 당신의 입력 파일의 일부를 복사 ICETOOL을 사용할 수 있습니다
등 종류, icetool을 사용하여, JCL을 작성하는 방법을 알 수 있습니다.
첫 번째 및 마지막 10 개 레코드를 다른 파일로 복사하는 JCL입니다. 저는 각각 80 바이트의 고정 길이 레코드를 가정합니다.
또한 메인 프레임 샵의 요구 사항에 맞게 JOB 카드를 변경해야합니다.
//EXAMP JOB A400,PROGRAMMER
//STEP1 EXEC PGM=ICETOOL
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=INPUT,DISP=SHR
//T1 DD DSN=&&T1,DISP=(,PASS),UNIT=VIO
//T2 DD DSN=&&T2,DISP=(,PASS),UNIT=VIO
//T3 DD DSN=&&T3,DISP=(,PASS),UNIT=VIO
//SORTOUT DD DSN=OUTPUT,DISP=(NEW,CATLG),UNIT=SYSDA,
// SPACE=(CYL,(5,1))
//SYSIN DD *
COPY FROM(IN) USING(CTL1)
COPY FROM(T1) USING(CTL2)
COPY FROM(T1) USING(CTL3)
COPY FROM(T2,T3) USING(CTL4)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=T1,OUTREC=(1,80,SEQNUM,8,ZD)
/*
//CTL2CNTL DD *
OUTFIL FNAMES=T2,ENDREC=10
/*
//CTL3CNTL DD *
SORT FIELDS=(81,8,BI,D)
OUTFIL FNAMES=T3,ENDREC=10
/*
//CTL4CNTL DD *
SORT FIELDS=(81,8,BI,A)
OUTFIL FNAMES=SORTOUT,OUTREC=(1,80)
//
첫 번째 제어 카드 세트 (CTL1CNTL
)는 입력 레코드에 일련 번호를 추가합니다.
두 번째 컨트롤 카드 세트 (CTL2CNTL
)는 처음 10 개의 입력 레코드를 가져옵니다.
세 번째 제어 카드 세트 (CTL3CNTL
)는 입력 레코드를 역순으로 정렬하고 처음 10 개 (마지막 10 개)의 레코드를 가져옵니다.
컨트롤 카드 네 번째 집합 (CTL4CNTL
)은 올바른 순서로 추출 된 레코드를 정렬하고 첫 번째 컨트롤 카드 집합에서 추가 한 시퀀스 번호를 제거합니다.
자세한 내용은 IBM의 DFSORT Application Programming Guide을 참조하십시오.
2008 년 7 월부터 ICETOOL에 SUBSET이 있습니다.
//STEP1 EXEC PGM=ICETOOL
//SYSOUT DD SYSOUT=*
//IN DD DSN=your input
//OUT DD DSN=your output
//SYSIN DD *
SUBSET FROM(IN) TO(OUT) KEEP INPUT FIRST(10) LAST(10)
은 어떤 종류의 단계에서 ICE201I 메시지를 보면, 사용 가능한 2008년 7월가 있는지 여부를 알고.
ICE201I F RECORD TYPE ...
메시지 번호 바로 뒤에있는 문자가 F 이상인 경우 2008 년 7 월이 포함됩니다.
여기에 좀 더 자세한 설명을 추가해야합니다. 입력 레코드가 각각 80 바이트라고 가정합니다. T1에주는 파일에 시퀀스 번호를 추가합니다. T2에 첫 번째로 기록 된 T1 레코드를 가져옵니다. 시퀀스 번호를 사용하여 T1을 역순으로 정렬하십시오. T3를 제공하는 T1의 첫 번째 (마지막) 10 레코드를 가져옵니다. T2와 T3를 병합하고 OUTPUT을 제공하는 시퀀스 번호를 정렬하고 삭제합니다. 최종 결과는 원본 입력의 첫 번째 및 마지막 10 개 레코드가 이제 OUTPUT에 있습니다. 이런 종류의 설명이 없으면 초보자가 자신이하는 일을 파악하기가 어려울 수 있습니다. 그래도 깔끔한 솔루션! – NealB
@NealB : 감사. 나는 설명을 덧붙였다. 나는 실제로 입력 레코드가 80 바이트라고 가정했지만 답을 제출하기 전에이를 제거했습니다. –