2011-12-05 3 views
1

cobol에서 순차 파일을 여러 번 읽을 수있는 방법이 있습니까? 예를 들어 파일의 끝 부분에 도달하면 파일의 처음부터 다시 돌아갑니다.cobol에서 순차 파일 읽기

답변

2

파일을 닫은 다음 다시 열고 다시 읽습니다.

왜 이렇게하고 싶은지 알고 싶습니다.

+0

안녕하세요 TrueDub, 파일 2의 항목에서 파일 1의 문자열이 검색되었지만 키가 없습니다. 그래도 멋진 답장을 보내 주셔서 감사합니다. – Grekoz

+0

배열로 파일을 읽고 각 시간을 검색하는 것이 더 쉬울까요? 분명히 빠를 것이지만 거대한 파일 인 경우 메모리 문제가 발생할 수 있습니다. – TrueDub

+0

이 경우'DFSORT'의'JOINKEYS'는 많은 도움이됩니다. 필자의 요구 사항이 file2의 문자열 목록으로 file1의 문자열을 검색하는 경우에만 강력하게 제안하지 않습니다. –

2

루프 내에서 파일을 읽거나 다양하게 수행 할 수도 있습니다. 다른 답변과 마찬가지로 파일이 끝날 때마다 파일을 닫은 다음 다시 열어야합니다.

+0

안녕하세요 Bill, 파일을 다시 열면 최대 비용이 너무 많이들 것이라 생각합니다. 비효율적이다. – Grekoz

0

이 경우 JOINKEYSDFSORT입니다. 필자의 요구 사항이 file1의 문자열을 file2의 문자열 목록으로 검색하는 경우에만 접근 방법을 제안하지 마십시오.

+0

Hi Raja, Joinkeys도 dfsort도 도움이되지 않습니다. 파일 1은 가비지이며 파일 2는 줄 당 하나의 문자열을가집니다. 목표는 파일 2에서 한 줄에 파일 1의 단일 문자열을 찾는 것입니다. 특정 문자열이 파일 1에서 발견되면 파일 2에 해당 문자열에 플래그를 지정하고 다음 줄의 다음 항목을 얻은 다음 파일 1의 문자열이 맨 위에 표시됩니다. – Grekoz

+0

나는 그것을 얻는다. 그러나 당신이 그들을 사용할 수있다라고 느끼면 아직도 통합하려고 노력한다. .. 나는 당신이 생각했었다라고 느낀다고 느낀다. .. 당신의 cobol 프로그램 논리와 함께 계속해라. .. 약간의 제안이 아직도 필요하면, 파일 레이아웃과 lrecls 요구 사항의 간략한 .. 해결하려고 할 수 있습니다 ... –

0

대안 : 파일 1의 사본을 유틸리티 (또는 다른 COBOL 프로그램)로 작성하십시오. 1a 파일의 사본에는 ORGANIZATION RELATIVE (VSAM RRDS, 아마도)가 있습니다. 스캔/매칭 프로그램에서 START 문과 함께 파일 1a의 첫 번째 레코드로 재배치 할 수 있습니다.

동일한 방식으로 인덱스 순차 파일 1a를 만들 수 있습니다. 여기에서 키는 레코드 번호와 동일한 임의의 오름차순 번호입니다.

0

최대 1,000 개를 제외하고는 여러 번 열어서 처리하고 닫고 다시 열거 나 재 처리하고 닫는 것이 바보 같습니다. 아주, 아주, 시간이 많이 걸리는 일입니다.

Cobol 프로그램을 사용하면 더 작은 파일을 테이블에 저장하고 더 큰 파일에 대해 테이블을 처리합니다 (제안 된 것처럼).

그러나 프로그램이 필요하지 않습니다. JOINKEYS 에게 해결책을 제시합니다.

키가 없습니까? 오, 이런. 너는 하나 만들어. 두 파일의 각 레코드에 대해 동일한 값을 갖는 동일한 1Y이트 키를 작성합니다. 그 열쇠에 조인스를하십시오. JOINKEYS에 SORTED를 지정하십시오 (DFSORT가있는 경우 NOSEQCK). "직교"조인이 있습니다. 전체 레코드 또는 레코드의 일부일 수있는 SS (하위 문자열 일치)를 사용하십시오. 당신의 실제 요구되는 산출물은 불분명합니다, 그리고 나는 당신이 지금 그것을 생각해 내지 못할 것이라고 생각합니다.

DFSORT를 사용하면 한 단계로 처리 할 수 ​​있습니다. SyncSort를 사용하면 버전이 JNFnCMTL 파일을 지원할 경우 한 단계로 수행 할 수 있습니다.