입력 파일이 있는데,이 파일의 세 번째 필드는 숫자입니다. 이 번호는 대개 같은 필드에서 약 30-40 개의 레코드로 반복됩니다.이 필드에 다른 값을 가진 레코드가 읽힐 때 다음 레코드의 첫 번째 위치에 인쇄하려면 숫자 '1'이 필요합니다. 예 :JCL SORT를 사용하여 다른 레코드의 동일한 필드를 비교해야합니다.
7226184019519 317786762 0000000000001POP160
7226184019522 317786762 0000000000001POP160
1 7226139045234 326446460 0000000000001POP160
7226139045242 326446460 0000000000001POP160
7226139045274 326446460 0000000000001POP160
7226139045277 326446460 0000000000001POP160
7226139045280 326446460 0000000000001POP160
내가 좋아하는 '섹션'를 사용하여 시도했다 :
SORT FIELDS=COPY
OUTFIL FNAMES=SORTOUT,
SECTIONS=(26,9,HEADER3= (1:'1'))
그러나 이것은 별도의 줄에 수를 '1'을 출력 할 것이다 :
7226184019519 317786762 0000000000001POP160
7226184019522 317786762 0000000000001POP160
1
7226139045234 326446460 0000000000001POP160
7226139045242 326446460 0000000000001POP160
7226139045274 326446460 0000000000001POP160
7226139045277 326446460 0000000000001POP160
7226139045280 326446460 0000000000001POP160
내가 오버레이와 같은 뭔가가 필요 하지만 'SECTIONS'와 함께 사용하는 방법을 잘 모르겠습니다.
참고 : 수 위, 내가 처음 위치로 일을 이동하는 방법을 알아 냈어요
위치에 317,786,762 시작 26
개정 (코드 아래) . 이 SORT를 완료하기위한 요구 사항은 30 레코드마다 또는 POS 26,9의 번호가 변경 될 때 '1'을 위치 1 에 인쇄하는 것입니다.
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=INIT,OVERLAY=(101:SEQNUM,8,ZD,
RESTART=(26,9))),
IFTHEN=(WHEN=(101,8,ZD,EQ,30),
OVERLAY=(1:C'1'))
/*
이 코드는 POS 1018에 일련 번호를 설정합니다. 그런 다음 26,9에 새 값이 있으면 Seqnum 을 다시 시작합니다. SEQUUM의 값이 30 일 때 을 다시 시작하려면 Sequence 번호가 필요합니다. 그러나 Restart는 필드 값이 변경된 경우에만 작동합니다. 논리 표현식을 사용할 수 없습니다.
내 질문은 순차 파일을 읽고 30 레코드마다 또는 특정 필드에서 새 값을 찾은 후 위치 1에 '1'을 인쇄하는 SORT를 작성하는 방법을 아는 사람이 있습니까?
감사합니다. 올바른 것 같습니다. 나는 지금 시험해 볼 것이다. –
안녕하세요 Bill, 제 질문에 대한 수정안을 추가했습니다.당신이 제안한 것이 진전을 도왔지만 여전히 약간의 문제가 있습니다. –