컴파일 툴
본 장에서는 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