2013-03-12 8 views
0

내 프로그램에서 호출 된 로그 파일을 만들기 위해 COBOL에 서브 프로그램을 작성하려고합니다. 하위 파일을 호출 할 때마다 로그 파일이 지워지지 않도록 '열기 확장'을 사용합니다. 문제는 알 수없는 이유로 작동하지 않을 것이므로 프로그램은 아무 것도하지 않습니다. 내가 '열린 확장'을 '열린 출력'으로 변경하면 작동하지만 파일을 매번 덮어 쓰는 것을 원하지 않습니다. 당신이 많이 제공하지 않은으로COBOL에서 열린 확장이 작동하지 않습니다.

IDENTIFICATION DIVISION. 
    PROGRAM-ID. LOGGER. 
    ENVIRONMENT DIVISION. 
    INPUT-OUTPUT SECTION. 
    FILE-CONTROL. 
    SELECT LOGFILE ASSIGN TO "LOGFILE.txt" 
    ORGANIZATION IS LINE SEQUENTIAL. 
    DATA DIVISION. 
    FILE SECTION. 
    FD LOGFILE. 
    copy "FDLOGGER.cpy". 
    WORKING-STORAGE SECTION. 

    LINKAGE SECTION. 
    01 LOGFILEBOODSCHAP  PIC X(150) value spaces. 

    Procedure division USING LOGFILEBOODSCHAP. 
    pgm. 
    open EXTEND LOGFILE 
    Move Current-time to TIJD 
    Move Current-date to DATUM 
    Move LOGFILEBOODSCHAP to BOODSCHAP 
    write logrecord 
    close LOGFILE 
    exit program 
    . 
+0

파일을 열거 나 닫는 이유는 무엇입니까? 이는 상당한 오버 헤드가 될 것입니다. –

답변

2

글쎄, 그것은 추측하지만 "logfile.txt 여기서"가 존재하지 않는 경우, 당신은 당신의 선택에 선택 사항이 필요합니다.

코드 상태 확인을 제안하십시오.

+0

또한 ... "COBOL 프로그래머는 왜 여성들이 마침표를 싫어하는지 이해합니다." 당신은 정말로 문장의 끝에 마침표를 추가하는 것을 고려해야합니다. 이런 식으로 문제를 피할 수 있습니다. – Buggabill

+2

@Buggabill COBOL-85가 도입 된 이래로, 이전 세기에 언젠가 단락/섹션마다 단 하나의 문장 (따라서 단일 기간) 만 필요합니다. COBOL 프로그래밍의 최근 경향은 문제를 일으킬 수 있기 때문에 가능한 한 적은 기간을 사용하는 것입니다. – NealB

+2

예, 정차 횟수/기간이 적을수록 좋습니다. 잘못된 위치에 정류장을두면 문제가 발생할 수 있습니다 ("스코프 종료 기호"가 사용되지 않는 경우). 범위 분리 문자를 사용하십시오. "NEXT SENTENCE"는 사용하지 말고 대신 CONTINUE를 사용하십시오. 이제 프로 시저 이름을 끝내야합니다. 하나는 단락/SECTION을 끝내고, 하나는 프로그램을 종료합니다 (위의 절/SECTIONS가없는 경우). 하나는 프로 시저 구역에 있습니다. * IF * 오래된 프로그램을 수정하고, full-stop을 삽입 할 때 조심하십시오. 마치 조건문의 "범위"를 사용하는 것처럼 프로그램 논리를 변경했습니다. –