2014-12-29 4 views
1

레코드 유형이 - 1, type - 2 등의 통계를 생성해야하는 파일에 내용이 있습니다. 유형 수가 변경 될 수 있으며 코드는 알 수 없습니다. 파일이 도착합니다. SQL 시스템에서는 COUNT 및 GROUP BY 절을 사용하여이 작업을 수행 할 수 있습니다. 그러나 SYNCSORT 또는 COBOL 프로그램을 사용하여이 작업을 수행 할 수 있는지 확실하지 않습니다. 여기에 누군가가 SYNCSORT를 사용하여 파일에 'GROUP BY'유형 쿼리를 구현할 수있는 방법에 대한 아이디어가 있습니까?SYNCSORT를 사용하여 GROUP BY GROUP BY

샘플 데이터 :

TYPE001 SUBTYPE001 TYPE01-DESC 
TYPE001 SUBTYPE002 TYPE01-DESC 
TYPE001 SUBTYPE003 TYPE01-DESC 
TYPE002 SUBTYPE001 TYPE02-DESC 
TYPE002 SUBTYPE004 TYPE02-DESC 
TYPE002 SUBTYPE008 TYPE02-DESC 

가 나는 등> 3 기록, TYPE002 ==> 3 개 기록 TYPE001 ==로 정보를 얻을 싶어요. 코드가 런타임까지 TYPENNN 값을 알지 못하는 경우

+0

OK. COBOL 태그를 제거하겠습니다. 일을 잘 정리하기 위해 귀하의 의견을 삭제할 수 있습니까? 작성한 설명 위에 마우스를 올려 놓으면 마지막에 x가 약간 나타납니다. 제거하려면 클릭하십시오. –

답변

3

데이터가 이미 순차적으로 표시되므로 데이터 자체를 정렬 할 필요가 없습니다. SUM FIELDS=SORT으로 표시됩니다. 서식 지정).

MERGE과 단일 입력 파일을 사용하면 SUM FIELDS =가 좋지만 형식 지정 코드가 필요합니다.

당신이 OUTFIL보고 기능을 사용하는 것입니다 맞게 수 출력을 생성하는 가장 간단한 방법은 다음 NODETAIL 말한다

OPTION COPY 
OUTFIL NODETAIL, 
     REMOVECC, 
     SECTIONS=(1,7, 
        TRAILER3=(1,7, 
          ' ==> ', 
          COUNT=(M10,LENGTH=3), 
          ' Records')) 

는 "모든 데이터 라인을 제거하십시오." REMOVECC은 "보고서이지만 출력 레코드 중 첫 번째 위치에 프린터 제어 문자를 사용하지 마십시오"라고 말합니다. SECTIONS은 "우리는 컨트롤 브레이크를 사용하려고합니다. 여기서는 (이 경우) 컨트롤"이라고 말합니다. 이 경우 제어 필드는 1,7입니다. TRAILER3이 각 control-break에서이 될 출력을 정의합니다. COUNT 여기에는 해당 특정 나누기의 레코드 수가 표시됩니다. M10은 앞에 오는 0을 공백으로 변경하는 편집 마스크입니다. LENGTH은 COUNT의 출력에 길이를 제공하고, 세 개의 데이터 유형은 고유하고 데이터의 고유 한 부분으로 3 자리 숫자를 갖는 부속 유형으로 샘플 데이터에서 선택됩니다. 실제 데이터에 맞는 것으로 변경하십시오.

아직 명확하지 않으며 출력이 "floating"(bb3 대신 3bb, 여기서 b는 공백을 나타냄)을 원하십니까? 더 많은 코드가 필요합니다 ...