12,200부터 사람들은이 질문 쳐다 보면서 대답을 얻지 않았다 :
는 DFSORT 및 SyncSort가 제품을 분류 지배적 인 메인 프레임입니다. 그들의 컨트롤 카드에는 많은 유사점과 몇 가지 차이점이 있습니다.
JOINKEYS FILE=F1,FIELDS=(key1startpos,7,A)
JOINKEYS FILE=F2,FIELDS=(key2startpos,7,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,5200,F2:1,5200)
SORT FIELDS=COPY
"JOINKEYS"는 세 가지 작업으로 구성됩니다. 하위 작업 1은 첫 번째 조인스입니다. 하위 작업 2는 두 번째 조깅입니다. Main Task가 따라 와서 조인 된 데이터가 처리됩니다. 위의 예에서 간단한 COPY 조작입니다. 결합 된 데이터는 단순히 SORTOUT에 기록됩니다.
JOIN 문은 일치하는 레코드뿐만 아니라 UNPAIRED F1 및 F2 레코드가 주 태스크에 제공되도록 정의합니다.
REFORMAT 문은 주 태스크에 표시 될 레코드를 정의합니다.보다 효율적인 예는 3 개 개의 필드 F2로부터 필요한 것을 상상이다
REFORMAT FIELDS=(F1:1,5200,F2:1,10,30,1,5100,100)
F2의 각 필드는
개시 위치 및 길이로 정의된다.
메인 태스크에 의해 처리되는 레코드는 5311 바이트이고 F2 레코드는 520110521115212100으로 참조 할 수 있으며 F1 레코드는 1,5200입니다.
더 나은 방법은 JNF2CNTL을 사용하여 F2의 크기를 줄이는 것입니다. SyncSort가
의
//JNF2CNTL DD *
INREC BUILD=(207,1,10,30,1,5100,100)
JNF2CNTL 일부 설치를 지원하지 않으며, (Z/OS 릴리스 1.4.1.0 이후 대한 Syncsort에서 MFX부터) 지원되는 경우에도, 그것은 Syncsort에서 설명되지 않는다. 1.3.2 또는 1.4.0의 사용자는 JNFnCNTL 지원을 제공하기 위해 SyncSort에서 업데이트를 사용할 수 있습니다.
JOINKEYS는 기본적으로 EQUALS 옵션을 사용하여 데이터를 정렬합니다. JOINKEYS 파일의 데이터가이 L 순서대로 나열되면 SORTED가 지정되어야합니다. DFSORT의 경우 순서 점검이 필요하지 않은 경우 NOSEQCHK를 지정할 수도 있습니다.
JOINKEYS FILE=F1,FIELDS=(key1startpos,7,A),SORTED,NOSEQCHK
소스 파일을 판별 할 수 없으므로 요청이 이상한하지만
, 모든 타의 추종을 불허하는 기록은 별도의 출력 파일로 이동한다.
DFSORT에는?로 지정된? REFORMAT에서 :
REFORMAT FIELDS=(F1:1,5200,F2:1,10,30,1,5100,100,?)
이렇게하면 REFORMAT 레코드 길이가 1 바이트 증가합니다. ? REFORMAT 레코드의 아무 곳에서나 지정할 수 있으므로 지정하지 않아도됩니다. ? DFSORT에 의해 다음과 같이 해결됩니다. B, 두 파일에서 출처가 된 데이터. 1, F1에서 타의 추종을 불허하는 기록; 2, F2에서 타의 추종을 불허하는 기록.
SyncSort에는 일치 표식이 없습니다. REFORMAT 레코드에 데이터가 없거나 존재하는지 여부는 값으로 결정되어야합니다. 특정 값을 포함 할 수없는 두 입력 레코드의 바이트를 선택하십시오 (예 : 숫자 내에서, 숫자가 아닌 값으로 결정). 그런 다음 해당 값을 REFORMAT의 FILL 문자로 지정하십시오.
REFORMAT FIELDS=(F1:1,5200,F2:1,10,30,1,5100,100),FILL=C'$'
F1에 위치 한이 자연스럽게 하나, 다음 두 위치가 일치하는 결과를 설정하는 데 사용할 수 없습니다 F2의 "$"위치 (20)을 할 수 없습니다. 필요한 경우 전체 레코드를 테스트 할 수 있지만 더 많은 CPU 시간을 소모합니다.
명백한 요구 사항은 F1 또는 F2의 일치하지 않는 모든 레코드를 하나의 파일에 기록하는 것입니다.
DFSORT, 출력 타의 추종을 불허하는 기록 :
REFORMAT FIELDS=(F1:1,5200,F2:1,5200,?)
OUTFIL FNAMES=NOMATCH,INCLUDE=(10401,1,SS,EQ,C'1,2'),
IFTHEN=(WHEN=(10401,1,CH,EQ,C'1'),
BUILD=(1,5200)),
IFTHEN=(WHEN=NONE,
BUILD=(5201,5200))
SyncSort가 출력 타의 추종을 불허하는 기록이 자신의 전체를 모두 기록을 포함하는 포맷 문을 필요로 SyncSort가에 대한 코딩 것 또한
REFORMAT FIELDS=(F1:1,5200,F2:1,5200),FILL=C'$'
OUTFIL FNAMES=NOMATCH,INCLUDE=(1,1,CH,EQ,C'$',
OR,5220,1,CH,EQ,C'$'),
IFTHEN=(WHEN=(1,1,CH,EQ,C'$'),
BUILD=(1,5200)),
IFTHEN=(WHEN=NONE,
BUILD=(5201,5200))
DFSORT로 작업하십시오.
작성된 일치하는 레코드를 얻는 것은 쉽습니다.
OUTFIL FNAMES=MATCH,SAVE
SAVE는 다른 OUTFIL이 작성하지 않은 모든 레코드가 여기에 기록되도록합니다.
주로 F1에서 데이터를 출력하고 F2에서 일부 필드를 선택하기 위해 일부 재 형식화가 필요합니다. 이 DFSORT 또는 SyncSort가 하나를 위해 작동합니다 : 임의의 시작과 길이와
OUTFIL FNAMES=MATCH,SAVE,
BUILD=(1,50,10300,100,51,212,5201,10,263,8,5230,1,271,4929)
모든 것은이있다 :
DFSORT
JOINKEYS FILE=F1,FIELDS=(1,7,A)
JOINKEYS FILE=F2,FIELDS=(20,7,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,5200,F2:1,5200,?)
SORT FIELDS=COPY
OUTFIL FNAMES=NOMATCH,INCLUDE=(10401,1,SS,EQ,C'1,2'),
IFTHEN=(WHEN=(10401,1,CH,EQ,C'1'),
BUILD=(1,5200)),
IFTHEN=(WHEN=NONE,
BUILD=(5201,5200))
OUTFIL FNAMES=MATCH,SAVE,
BUILD=(1,50,10300,100,51,212,5201,10,263,8,5230,1,271,4929)
SyncSort가
JOINKEYS FILE=F1,FIELDS=(1,7,A)
JOINKEYS FILE=F2,FIELDS=(20,7,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,5200,F2:1,5200),FILL=C'$'
SORT FIELDS=COPY
OUTFIL FNAMES=NOMATCH,INCLUDE=(1,1,CH,EQ,C'$',
OR,5220,1,CH,EQ,C'$'),
IFTHEN=(WHEN=(1,1,CH,EQ,C'$'),
BUILD=(1,5200)),
IFTHEN=(WHEN=NONE,
BUILD=(5201,5200))
OUTFIL FNAMES=MATCH,SAVE,
BUILD=(1,50,10300,100,51,212,5201,10,263,8,5230,1,271,4929)
필요하지 마십시오 두 단계. ICETOOL이 필요하지 않습니다. JOINKEYS와 SORT가 그것을 할 것입니다. 어쨌든 묘사 된 것에서. –