2010-06-10 4 views
1

일부 레코드가있는 파일이 있고 처음과 마지막 10 레코드 만 다른 파일에 복사하려고합니다.파일에서 레코드 읽기

아무도 당신은 당신의 입력 파일의 일부를 복사 ICETOOL을 사용할 수 있습니다

답변

1

등 종류, 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을 참조하십시오.

+1

여기에 좀 더 자세한 설명을 추가해야합니다. 입력 레코드가 각각 80 바이트라고 가정합니다. T1에주는 파일에 시퀀스 번호를 추가합니다. T2에 첫 번째로 기록 된 T1 레코드를 가져옵니다. 시퀀스 번호를 사용하여 T1을 역순으로 정렬하십시오. T3를 제공하는 T1의 첫 번째 (마지막) 10 레코드를 가져옵니다. T2와 T3를 병합하고 OUTPUT을 제공하는 시퀀스 번호를 정렬하고 삭제합니다. 최종 결과는 원본 입력의 첫 번째 및 마지막 10 개 레코드가 이제 OUTPUT에 있습니다. 이런 종류의 설명이 없으면 초보자가 자신이하는 일을 파악하기가 어려울 수 있습니다. 그래도 깔끔한 솔루션! – NealB

+0

@NealB : 감사. 나는 설명을 덧붙였다. 나는 실제로 입력 레코드가 80 바이트라고 가정했지만 답을 제출하기 전에이를 제거했습니다. –

0

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 월이 포함됩니다.