컴파일 툴

본 장에서는 OFCOBOL의 컴파일 툴에 대해서 설명한다.

1. ofcob

OFCOBOL을 통해 컴파일하기 위해서 ofcob 명령어를 사용한다.

  • 사용법

    Usage: ofcob <source-file> [options]
  • [options]

    OFCOBOL에서 사용되는 옵션들의 설명은 다음과 같다. 기본적인 컴파일 옵션은 -h으로 확인할 수 있다.

    항목 설명

    -U

    출력 파일을 shared object로 지정한다. (기본)

    -o Output-File

    출력 파일의 이름을 지정한다.

    -L

    링크할 라이브러리가 있는 디렉터리를 지정한다.

    -l

    링크할 라이브러리를 지정한다.

    -g

    디버그 정보를 삽입한다. ofdebug를 사용하기 위한 옵션이다.

    --version

    OFCOBOL의 현재 버전을 나타낸다.

    --save-temps

    컴파일 과정에 생성되는 중간 파일들을 보존한다(옵션을 주지않으면 삭제된다).

    --time-stamp

    DISPLAY statement를 실행하는 경우에 현재 시간을 출력한다.

    --license

    OFCOBOL의 라이선스 정보를 확인한다.

    --trace

    Procedure Division의 READY/RESET TRACE 세그먼트를 사용 가능하게 한다.

    --noturnc

    COMP, COMP-4, BINARY 타입이 할당 크기만큼 유지되게 한다.

    --force-trace

    항상 트레이스 세그먼트를 사용 중인 것처럼 한다.

    --enable-debug

    실행할 때 디버그 메시지를 강화한다.

    --enable-ofasm

    OFASM과 함께 사용 가능하도록 컴파일을 수행한다.

    --enable-osvs

    OS/VS COBOL의 문법을 포함하여 컴파일을 수행한다.

    --enable-apost

    Figurative constant인 QUOTE, QUOTES에 대해 큰따옴표 (“) 대신 작은따옴표 (')를 사용한다.

    --enable-rw

    IBM REPORT WRITER 관련 문법을 포함하여 컴파일을 수행한다.

    --enable-cbltdli

    cbltdli 함수를 호출할 수 있도록 컴파일을 수행한다.

    --enable-aertdli

    aertdli 함수를 호출할 수 있도록 컴파일을 수행한다.

    --enable-aibtdli

    aibtdli 함수를 호출할 수 있도록 컴파일을 수행한다.

    --enable-host-num-move

    Zoned decimal assign 시 src 의 sign 값을 유지한다.

    --enable-dbcs-literal

    DBCS에 일반 리터럴을 사용 할 수 있도록 한다.

    --enable-hexa-packed

    Packed decimal 에 hexa 값을 사용할 수 있도록 한다.

    --enable-caf <funcname>

    프로그램을 수행하기 전에 <funcname>으로 지정한 함수를 호출한다.

    --check-file-id

    컴파일 전에 파일명과 PRGRAM-ID가 같은지 확인한다.

    --check-index

    프로그램을 수행할 때 인덱스 오버플로우를 확인한다.

    --init-space

    변수의 초기값을 스페이스로 채워준다.

    --DIR <filename>

    지정한 파일에서 컴파일에서 사용할 옵션들을 가져온다.

    --ptr-redef

    POINTER 변수를 COMP 변수가 REDEFINES하고 있는 경우 COMP 변수를 COMP-5 변수로 치환한다.

    --enable-asa-byte

    WRITE statement를 수행하는 경우 AFTER ADVANCING phrases를 지정한 경우 지정된 FILE 또는 REPORT FILE의 데이터 셋 레코드 맨 앞에 ASA 컨트롤 문자 1Byte를 추가한다.

    --check-invalid-data

    MOVE statement를 수행하는 경우 COMP-3로 선언된 소스에 packed decimal type이 아닌 경우 ABEND를 발생시킨다.

    --cpm-name <filename>

    지정한 파일에서 CPM 테이블을 참조하여 사용한다. CPM 테이블을 참조하여 사용하는 경우 $OPENFRAME_HOME/lib/libtsys.so 라이브러리를 지정해야 한다.

    --expanded

    Expanded COBOL의 문법을 포함하여 컴파일을 수행한다.

    --current-date

    OS/VS COBOL에서만 사용 가능한 옵션이며, CURRENT-DATE special register 출력 포맷을 변경한다.

    --enable-vsc2

    VS COBOL 2을 사용할 수 있도록 한다.

    --enable-sosi

    G 리터럴에서 SHIFT-IN SHIFT-OUT Byte를 제거한다.

    --check-perform-overflow

    PERFORM statement의 호출 스택이 32를 넘는 경우 에러 메시지를 출력한다.

    --file-close-all

    COBOL program 종료시 자동으로 모든 파일에 대해 닫기를 수행한다.

    --disable-cpy-limit

    COPY statement 사용시 target copybook 이름의 8글자 제한을 해제한다.

    --CURRENCY <Type>

    PICTURE symbol로 back slash(\)를 사용하여 엔화 통화 기호를 사용할 수 있도록 한다.

    --compare-zoned-digit

    zoned decimal compare 시 존 비트(Zoned bit)인 4비트는 제외하고 숫자 비트(digit bit)의 4비트로 값을 비교한다.

    Compile Error

    컴파일 에러 발생시 .cobi 파일이 생성되어 에러 위치를 정확히 찾을 수 있도록 한다.

  • 예제

    다음은 test.cob 소스 파일을 공유 라이브러리로 컴파일하는 예제이다. 링크할 라이브러리가 있는 디렉터리는 /home/ofcob/libpath와 /home/ofcob/libpath/newpath이다. 컴파일 후에 해당 경로에 libTest.so와 libNewTest.so가 생성된 것을 확인할 수 있다.

    ofcob test.cob -L/home/ofcob/libpath -lTest -L/home/ofcob/libpath/newpath -lNewTest