OpenFrame PL/I 검증

본 장에서는 OpenFrame PL/I를 설치한 후 PLI 샘플 파일을 컴파일하는 과정에 대해서 기술한다.

1. 컴파일

OpenFrame PL/I를 설치한 후 ofpli 명령어를 사용하여 PLI 샘플을 컴파일하는 방법에 대한 설명이다.

  1. ${OFPLI_HOME}의 다음 위치에서 PLI 샘플을 확인한다.

    ${OFPLI_HOME}/temp
  2. ofpli 명령어를 실행해서 sample.pli 샘플을 컴파일한다. 명령어에 대한 자세한 내용은 컴파일 명령어를 참고한다.

    ofpli -o sample.so sample.pli
  3. 컴파일할 때 지정한 .so 파일로 출력 파일이 생성된 것을 확인할 수 있다. 출력 파일이 생성되면 OpenFrame PL/I의 설치가 정상적으로 완료된 것이다. 에러가 발생하는 경우 에러 메시지를 확인한다. 에러 메시지에 대한 자세한 내용은 컴파일 에러 메시지를 참고한다.

    sample.so

2. 컴파일 명령어

다음은 컴파일 명령어 ofpli의 사용 방법이다.

  • 사용법

    ofpli 소스 파일 ... [명령 옵션...]
    • 소스 파일

      컴파일을 수행할 소스 파일들을 기술한다.

    • 소스 파일을 컴파일하는 기본 명령어 옵션

      옵션 설명

      -o 파일이름

      결과 출력 파일을 설정한다.

      -I <dir>

      INCLUDE 디렉터리를 설정한다.

      -MI <dir>

      %INCLUDE 문장에서 사용할 INCLUDE 디렉터리를 설정한다.

      -SI <dir>

      EXEC SQL INCLUDE 문장에서 사용할 INCLUDE 디렉터리를 설정한다.

      -l <library>

      공유 라이브러리를 연결한다.

      -L <dir>

      라이브러리 경로를 설정한다.

      -O0, -O1, -O2, -O3

      최적화 레벨을 설정한다. 숫자가 낮을수록 컴파일은 빠르지만 실행할 때 느릴 가능성이 있다.

      -U

      동적 적재 호출 기능을 활성화시킨다.

      -g

      소스 레벨 디버깅을 위한 디버깅 정보를 컴파일 결과 파일에 삽입한다.

      --change old:new

      외부 엔트리 이름을 old에서 new로 변경한다.

      --disable-inc-limit

      %INCLUDE statement의 파일 글자수 제한을 해제한다.

      --dli

      DLITPLI 인터페이스를 추가한다. (IMS 전용)

      --enable-cics

      CICS 전처리기를 활성화시킨다.

      --enable-esql-oracle

      Oracle ESQL 전처리기를 활성화시킨다.

      --enable-esql-tibero

      Tibero ESQL 전처리기를 활성화시킨다.

      --enable-ofasm

      OpenFrame ASM를 이용하여 ASM을 호출할 경우 지정한다.

      --enable-scan-extascii

      Extended-ascii 문자를 인식하도록 설정한다. --enable-scan-sjis 옵션과 같이 사용할 수 없다.

      --enable-scan-sjis

      Shift-JIS 문자를 인식하도록 설정한다. --enable-scan-extascii 옵션과 같이 사용할 수 없다.

      --fixeddec31

      FIXED DECIMAL 변수의 최대 정밀도를 31로 지정한다.

      --rule-margin-s

      소스 기술영역 외 공백이 아닌 문자가 있을 경우 에러 메시지를 출력한다.

      --rule-margin-w

      소스 기술영역 외 공백이 아닌 문자가 있을 경우 경고 메시지를 출력한다.

      --system-cics

      PL/I 프로그램이 실행되는 시스템 환경을 CICS로 지정한다.

      --system-ims

      PL/I 프로그램이 실행되는 시스템 환경을 IMS로 지정한다.

      --system-mvs

      PL/I 프로그램이 실행되는 시스템 환경을 MVS로 지정한다. (기본값)

      --trace

      프러시저의 시작과 끝, 매개변수, 반환 값에 대한 trace 정보를 출력한다.

      --trace-flow

      프러시저의 시작과 끝에 trace 정보를 출력한다.

      --trace-param

      매개변수 값에 대한 trace 정보를 출력한다.

      --trace-return

      반환 값에 대한 trace 정보를 출력한다.

      --h, --help

      도움말을 출력한다.

      --help-esql

      ESQL 전처리기의 도움말을 출력한다.

      --license

      OpenFrame PL/I의 라이선스 정보를 출력한다.

      --save-temps

      컴파일할 때 생성되는 임시 파일들을 삭제하지 않고 남겨둔다.

      명령어 옵션으로 생성되는 임시 파일들은 다음과 같다.

      • .mp : SQL 전처리기나 CICS 전처리기가 활성화된 경우만 생성되는 macro 전처리 결과 파일

      • .pp : 전처리가 최종적으로 완료된 전처리 결과 파일

      • .bc : 컴파일 결과 파일

      • .o : 어셈블리 결과 파일

      --version

      OpenFrame PL/I의 버전 정보를 출력한다.

    • 소스 파일을 ESQL 전처리하는 명령어 옵션

      옵션 설명

      --close-on-commit

      커밋을 할 때 커서를 자동으로 닫도록 지정한다.

      --end-of-fetch (1403 | 100)

      SQL 문장을 수행한 후 END-OF-FETCH 상황에서 사용자에게 반환할 SQLCODE 값을 지정한다. (기본값: 1403)

      --insert-no-data-error

      INSERT, SELECT 구문을 사용할 경우에도 "no data found"가 발생하도록 지정한다.

      --no-select-error

      호스트 변수 등으로 인해 주어진 수행 결과 개수보다 실제로 질의를 수행한 결과가 더 많이 반환된 경우 에러를 발생시키도록 지정한다.

      --picx (CHARF | VARCHAR2)

      PL/I CHAR 타입의 SQL 데이터 타입을 지정한다. (기본값 CHARF)

      --prefetch N

      커서를 오픈할 때 속도 향상을 위해 몇 개의 로우를 미리 가져올지 지정한다.

      --unsafe-null

      지시자 변수가 없을 때 NULL 값을 허용하도록 지정한다.

3. 컴파일 에러 메시지

OpenFrame PL/I은 컴파일을 수행할 때 에러가 발생할 경우 에러 메시지를 출력한다.

에러 메시지 구조는 다음과 같다.

SAMPLE.pli 6:11 : OFPLI1009 [S] Syntax error.

[파일 이름] : SAMPLE.pli
[소스 위치] : 6:11
[에러 번호] : OFPLI1009
[에러 종류] : [S]
[에러 내용] : Syntax error.
항목 설명

파일 이름

에러가 발생한 파일 이름이다.

소스 위치

에러가 발생한 파일의 라인과 컬럼 위치이다.

에러 번호

에러를 구분하기 위한 일련 번호이다.

에러 종류

  • [I](Information) : 단순한 정보 메시지이며 컴파일이 정상적으로 수행된다.

  • [W](Warning) : 프로그램 수행에 지장을 주지 않는 에러를 나타내며, 원하는 결과가 나오지 않을 수 있다. 컴파일이 정상적으로 수행된다.

  • [E](Error) : 일반적인 에러를 나타낸다. 일반적으로 컴파일이 수행되지 않으며, 일부 에러는 컴파일이 수행되나 프로그램 실행 중 문제가 발생할 수 있다.

  • [S](Sever) : 중대한 에러로 컴파일이 수행되지 않는다.

에러 내용

에러에 대한 설명이다.