2014-04-07 2 views
0

내 파일 정의가 잘못된 이유를 파악하려고합니다. 나는 이것이 그들이 내 마지막 프로그램에 정의 된 모든 블록의 기록왜 내 파일 정의가 작동하지 않습니까?

고정됩니다 같은 방법입니다 무엇을 말할 수에서

코드 :

FILE-CONTROL.          
    SELECT INFILE1  ASSIGN TO UT-S-INPUT1. 
    SELECT INFILE2  ASSIGN TO UT-S-INPUT2. 
    SELECT OUTPUT-FILE1 ASSIGN TO UT-S-OUTPUT1. 
    SELECT OUTPUT-FILE2 ASSIGN TO UT-S-OUTPUT2. 
DATA DIVISION.         
FILE SECTION.          

FD INFILE1.          
     BLOCK CONTAINS 0 RECORDS     
     RECORDING MODE IS F      
     LABEL RECORDS ARE STANDARD.    
01 INF-LINE1.          
    05 STATE-1 PIC X(02).       
    05 KEY-1 PIC X(10).       
    05 TRANSID1 PIC X(10).       
    05 FILLER PIC X(58). 

FD INFILE2.         
     BLOCK CONTAINS 0 RECORDS    
     RECORDING MODE IS F     
     LABEL RECORDS ARE STANDARD.   
01 INF-LINE2.        
    05 KEY-2 PIC X(10).     
    05 TRANSID2 PIC X(10).     
    05 FILLER PIC X(60).     

FD OUTPUT-FILE1        
     BLOCK CONTAINS 0 RECORDS    
     RECORDING MODE IS F     
     LABEL RECORDS ARE STANDARD.   
01 OUTLINE1 PIC X(80).      

FD OUTPUT-FILE2        
     BLOCK CONTAINS 0 RECORDS    
     RECORDING MODE IS F     
     LABEL RECORDS ARE STANDARD.   
01 OUTLINE2 PIC X(80). 

오류 코드 : 이러한 오류 코드 중 일부는 관련이없는 파일 오류가 있지만 나는이 모든 것을 복사하여이 섹션에 배치했다.

20 IGYGR1216-I A "RECORDING MODE" of "F" was assumed for file "INFILE1".              

21 IGYDS1089-S "BLOCK" was invalid. Scanning was resumed at the next area "A" item, level-number, or the start of the next 
        clause.                          

        Same message on line:  31                     

30 IGYGR1216-I A "RECORDING MODE" of "F" was assumed for file "INFILE2".              

283 IGYPA3043-E Data-item "INF-LINE1 (GROUP)" and record "INF-LINE1 (GROUP)" had overlapping storage. Movement of data may 
        not occur at execution time.                     

293 IGYPA3043-E Data-item "INF-LINE2 (GROUP)" and record "INF-LINE2 (GROUP)" had overlapping storage. Movement of data may 
        not occur at execution time.                     

304 IGYPS2015-I The paragraph or section prior to paragraph or section "X-COMP-FILE" did not contain any statements.   

321 IGYPS2121-S "STUB4" was not defined as a data-name. The statement was discarded.           
+2

FD 문에서 파일 이름 뒤에 전체 중지/마침표를 제거하십시오. –

+2

BLOCK에 대한 오류 메시지를 확인 했어야합니다. 이전 작업 프로그램과 비교해야합니다. 이 질문은 오타이기 때문에 질문 아래의 닫기 옵션을 선택하십시오. 아무도 질문에 대답하지 마십시오. 나중에 몇 가지 흥미로운 오류 메시지가 있습니다 (겹쳐 짐). 수정 프로그램으로 해결할 수없는 문제가있는 경우 새로운 질문을하는 것이 좋습니다. 행운을 빕니다. –

답변

1

정의문에서 파일 이름 다음에 마침표를 제거하면 컴파일러 오류없이 작동합니다.

코드 :

FD INFILE1          
     BLOCK CONTAINS 0 RECORDS     
     RECORDING MODE IS F      
     LABEL RECORDS ARE STANDARD.    
01 INF-LINE1.          
    05 STATE-1 PIC X(02).       
    05 KEY-1 PIC X(10).       
    05 TRANSID1 PIC X(10).       
    05 FILLER PIC X(58). 

FD INFILE2         
     BLOCK CONTAINS 0 RECORDS    
     RECORDING MODE IS F     
     LABEL RECORDS ARE STANDARD.   
01 INF-LINE2.        
    05 KEY-2 PIC X(10).     
    05 TRANSID2 PIC X(10).     
    05 FILLER PIC X(60).  

이것은 당신이 하루 종일 녹색 화면을 볼 때 발생하는 일반적인 실수이다. 나는 이것을 재 컴파일하고 다른 오류가 없어지는지 살펴볼 것이다. 프로그램을 다시 컴파일하고 처음부터 새로 시작하는 것은 항상 좋은 생각입니다. 컴파일리스트를 인쇄하여 언제 어디서나 스캔 할 수 있습니까? 나는 생각할 것이다. 컴파일 목록은 모든 메모리 위치와 각 레코드의 크기를 제공합니다. 그것은 매우 편리합니다.

코드 :

30 IGYGR1216-I A "RECORDING MODE" of "F" was assumed for file "INFILE2". 

나는이 오류에 대한 확실하지 오전하지만 난 당신이 F 고정 블록 파일에 대한 V를 내기. 나는 이것을 점검하여 그 경우에이를 수정한다. 프로그램을 처음부터 다시 시작 하시거나 실무 프로그램을 수강하신 후 필요없는 것을 꺼내서 그런 관점에서 작업을 시작하십니까? 이 경우 고정 블록 및 가변 블록 파일에 대해 올바르게 레코딩 모드를 설정했는지 확인하려고합니다.

 321 IGYPS2121-S "STUB4" was not defined as a data-name. The statement was discarded. 

위의 오류는 작업 저장 영역이나 STUB4라는 변수가 없다는 단순한 오류입니다.

희망이 도움이됩니다.