2016-06-30 1 views
0

다양한 필드를 정렬/재 형식화하고 아래 코드와 같이 새 출력 파일로 인쇄하는 JCL 정렬을 작성했습니다. 매 10 번째 (10 번째) 레코드의 시작 부분에 숫자 '9'를 단순히 인쇄하려면이 코드를 수정해야합니다. 나는 'IFTHEN'이 필요하다고 생각하지만 'OUTREC FIELDS'와 함께 사용할 수 있는지 확실하지 않습니다.JCL을 사용하여 x 개의 레코드 양 다음에 문자 쓰기

SORT FIELDS=COPY 
    OUTREC FIELDS=(2:26,5, 
       7:38,8, 
       22:15,9, 
       46:C'AAA') 
+0

"매 10 분의 1"기록으로 무엇이 mena입니까? 다른 사람들은 다른 것을 의미합니다. 다른 모든 기록의 첫 번째 위치에서 무엇을 원하십니까? –

+0

첫 번째 위치에 공백으로 시작하는 9 개의 레코드가 있습니다. 위치. 그 후에 레코드는 첫 번째 위치에 9를 갖습니다. 다음 9 개의 레코드는 첫 번째 위치에 공백을 가지며, 그 다음에 오는 첫 번째 위치에 '9'가옵니다. –

답변

0

먼저 OUTREC FIELDS =를 사용하지 마십시오. 또는 INREC FIELDS =. 또는 OUTFIL OUTREC =.

FIELDS =은 (는) "과부하 됨"입니다. 같은 단어는 다른 장소에서 다른 것을 의미합니다.

BUILD는 INLEC 및 OUTREC의 FIELDS = 및 OUTFIL의 OUTREC의 최신 버전입니다.

INREC BUILD =, OUTREC BUILD =, OUTFIL BUILD =를 사용하십시오.

BUILD는 이러한 컨텍스트에서 FIELDS/OUTREC의 "별칭"이므로 처리에 차이가 없으며 컴퓨터와의 차이가 없으며 사람의 차이 만 있습니다.

SORT FIELDS=COPY 
INREC BUILD=(02: 
       26,5, 
       38,8, 
      22: 
       15,9, 
      46: 
       C'AAA') 

사람의 이해를 돕기위한 것입니다. SORT는 상관하지 않으므로 인간에 대한 코드를 작성하십시오. 중복 7 :을 제거했습니다. 열 7은 다음에 사용할 수있는 위치이므로, 지정하면 혼란스럽게됩니다.

SORT 기호를 사용해도 좋습니다.

SORT FIELDS=COPY 
    INREC IFTHEN=(WHEN=INIT, 
       BUILD=(SEQNUM, 
         1, 
         ZD, 
         START=0, 
         26,5, 
         38,8, 
         22: 
         15,9, 
         46: 
         C'AAA')), 
      IFTHEN=(WHEN=(1,1,CH,NE,C'9'), 
        OVERLAY=(1:X)) 

원하는 속임수는 일련 번호를 사용하는 것입니다. 위 코드는 Zoned Decimal과 같이 각 출력 레코드에 1 바이트 시퀀스 번호를 포함합니다. "문자"번호. 순차 번호의 기본 시작은 하나이지만, 귀하의 경우 START =로 쉽게 0부터 시작할 수 있습니다. 11 번째 시퀀스 번호 이상이 잘린 것이므로 (낮은 순서의 값은 남겨둔 채로) 잘리지 않습니다.

거의. 레코드를 포맷 한 후, 순서 번호를 테스트합니다. "9"가 아닌 경우 OVERLAY를 사용하여 처음 바이트 만 공백 (코드의 X)으로 변경합니다.

IFTHEN = (= INIT가 각 레코드에 대해 완료되면 필요한 경우, 무조건하고.는이 순서대로 처리됩니다. 그 중 많은 수

IFTHEN = (WHEN = (logicalexpression 어떤 언제 뒤에 와야합니다 = INIT인데, IFTHEN = (WHEN = (logicalepxression이 참일 경우, HFT = NEXT가 지정되지 않으면 IFTHEN에 대한 처리가 현재 레코드에서 중단됩니다.)

+0

감사 빌. 그게 내가 찾고 있던 대답이다. –

관련 문제