애플리케이션 마이그레이션

본 장에서는 OpenFrame에서 지원하는 애플리케이션 중 CICS와 Batch 애플리케이션을 마이그레이션하는 방법에 대해 기술한다.

1. CICS 애플리케이션 마이그레이션

CICS 시스템에서 동작하던 애플리케이션 프로그램을 OpenFrame OSC에서 구동하려면 마이그레이션이 필요하다. 마이그레이션은 기본적으로 EBCDIC 문자로 된 프로그램 소스를 ASCII 문자로 변환하는 과정으로 시작된다. 이후 과정은 일반적인 OSC 애플리케이션 프로그램 컴파일 및 배포 과정과 동일하다.

CICS 애플리케이션의 마이그레이션 절차는 다음과 같다.

  1. EBCDIC에서 ASCII으로 변환

    EBCIDIC 문자를 개방형 환경에서 이용 가능하도록 ASCII 문자로 변환하는 과정이다.

  2. 전처리

    CICS 애플리케이션이 OpenFrame 상에서 작동할 수 있도록 OpenFrame에서 제공하는 툴을 사용하여 CICS 애플리케이션을 수정하는 과정이다.

  3. 컴파일

    컴파일러를 사용하여 실행가능한 바이너리를 생성하는 과정이다.

  4. 배포

    생성된 바이너리를 OpenFrame 시스템에 적재하는 과정이다.

본 절에서는 기존 CICS 애플리케이션의 특성에 따라 컴파일 과정에서 이루어지는 전처리 및 컴파일에서의 주의 사항과 애플리케이션 배포 과정에 대해 기술한다.

EBCDIC 문자를 ASCII로 변환하는 과정 및 변환할 때 발생하는 문제점에 대한 자세한 내용은 EBCDIC에서 ASCII로 변환EBCDIC에서 ASCII 변환 이슈를 참고한다.

1.1. 전처리

전처리 과정은 CICS를 위해 작성된 COBOL 애플리케이션 프로그램 원본을 OpenFrame에서 제공하는 툴을 사용하여 OpenFrame COBOL 컴파일러에서 컴파일이 가능하도록 변환하는 작업을 의미한다.

CICS 애플리케이션의 전처리 과정은 다음과 같이 4단계로 구성된다.

  1. ofcbpp

    Mainframe COBOL에서만 지원되는 문법 전처리를 한다.

    OpenFrame 환경에서 COBOL CICS 애플리케이션 컴파일하기 위해 ofcbpp 툴을 사용하여 전처리 과정을 거친다. ofcbpp 툴은 COBOL 문법을 체크하고 참조되는 Copybook을 전개할 때 사용된다. 그 밖에도 ofcbpp는 특정 구문을 치환 혹은 삽입하는 용도로 사용된다. 그 예로 end period가 사용자의 실수로 기재되지 않을 경우 --add-miss-period 옵션을 통해 문법 에러를 방지하고 종료의 의미인 STOP RUN을 RETURN의 의미인 GOBACK으로 치환하기 위해 --conv-stop-run을 사용한다.

    COBTEST.cob이라는 파일에서 copybook path를 지정하고 --conv-stop-run을 적용하여 전처리하는 예제이다.

    $ ofcbpp -i COBTEST.cob -o ofcbpp_COBTEST.cob -copypath $PWD/COPYBOOK --conv-stop-run

    ofcbpp 툴에 대한 자세한 사용법은 OpenFrame COBOL "사용자 안내서"를 참고한다.

  2. osccobprep

    osccobprep 툴은 CICS에서 지원되는 예외적인 COBOL 문법 전처리를 한다. osccobprep는 OSC COBOL 업무 프로그램의 문법을 전처리하기 위한 툴이다. 예를 들어 BLL cell 구조는 UNIX 환경의 컴파일러를 통해 컴파일할 경우 해당 프로그램을 실행할 때 잘못된 메모리 접근 문제를 발생시키므로 osccobprep을 사용해서 전처리해야 한다.

    OSCTEST.cob이라는 파일에서 BLL cell 구조를 제거하는 전처리를 수행하는 예제는 다음과 같다.

    $ osccobprep -b OSCTEST.cob
  3. dliprep

    dliprep 툴은 OSC 시스템에서 HiDB에 접근할 때 사용되는 EXEC DLI 명령문이 포함된 COBOL 원본의 전처리 과정을 수행할 때 사용된다.

    다음은 EXEC DLI 명령문이 포함된 COBOL 원본을 전처리하는 예이다.

    $ dliprep DLITEST.cob
  4. osccblpp

    osccblpp 툴은 OSC 시스템에서 리소스에 접근할 때 사용되는 EXEC CICS 명령문이 포함된 COBOL 원본의 전처리 과정을 수행할 때 사용된다.

    다음은 EXEC CICS 명령문이 포함된 COBOL 원본을 전처리하는 예이다.

    $ osccblpp OSCTEST.cob

    CICS 애플리케이션 마이그레이션을 실행할 때 모든 원본은 osccblpp 툴에 의한 전처리 과정을 거쳐야 한다. 단, ofcbpp, osccobpp, dliprep 툴은 필요할 경우에만 적용한다.

1.2. 컴파일

컴파일러를 통하여 전처리 과정을 거친 애플리케이션 프로그램 소스를 COBOL 컴파일러를 사용하여 공유 개체(shared object)로 만든다. 기존 애플리케이션 프로그램의 COBOL 문법 특성에 맞춰 옵션을 적용한다.

컴파일러의 공유 개체(shared object) 작성에 대한 자세한 내용은 내용은 COBOL 컴파일러 공급업체의 안내서를 참고한다.

1.3. 배포

OpenFrame 시스템에서 제공하는 osctdlupdate 툴을 사용하여 다음과 같은 절차로 컴파일된 바이너리를 배포 및 적용한다. 이미 TDL(Tmax Dynamic Library)이 설정되어 있는 경우 바로 마지막 단계로 넘어간다.

  1. OSC 애플리케이션 서버의 환경 설정 파일에 [GENERAL] 절의 TDLDIR 항목을 설정하고, TDLDIR 항목에 설정한 디렉터리 아래에 mod 및 run 디렉터리가 존재하지 않으면 직접 생성한다. TDLDIR 항목을 설정하지 않을 경우 OSC 시스템 디폴트로 "${OPENFRAME_HOME}/osc/region/{Region이름}/{TDL 디렉터리}"를 참조한다.

  2. TDLDIR 디렉터리 아래에 config 디렉터리에 tdl.cfg 파일을 생성한다. OpenFrame 시스템을 설치할 때 배포된 tdl.cfg 샘플 파일을 이용한다.

  3. osctdlinit 툴을 실행한다. TDLDIR 디렉터리에 있는 tdl.cfg 파일의 설정에 따른 초기화가 이뤄진다.

  4. 컴파일된 애플리케이션을 TDLDIR 디렉터리 아래에 mod 디렉터리에 저장한다.

  5. osctdlupdate 툴의 OSC 리전명과 프로그램명을 지정하여 사용하여 실제 업무를 배포한다.

다음은 OSCTEST 라는 프로그램을 업데이트하는 예제이다. (프로그램 이름은 확장자 .so 가 생략되었다)

$ osctdlupdate OSC00001 OSCTEST
  1. TDL에 대한 자세한 내용은 "Tmax Programming Guide(Dynamic Library)"를 참고한다.

  2. osctdlrm 툴을 이용하여 사용 중인 공유 메모리의 정보를 삭제할 수 있다. 메모리 정보를 삭제한 후 공유 메모리를 다시 생성하려면 osctdlinit 툴을 실행한다. 툴에 대한 자세한 내용은 OpenFrame OSC "툴 참조 안내서"를 참조한다.

2. Batch 애플리케이션 마이그레이션

Batch 애플리케이션 마이그레이션은 Mainframe에서 사용되던 Batch 애플리케이션을 OpenFrame에서 구동할 수 있도록 애플리케이션 소스를 변환하는 전처리과정 및 컴파일 작업을 의미한다.

Batch 애플리케이션의 마이그레이션 절차는 다음과 같다.

  1. EBCDIC에서 ASCII로의 변환

    EBCDIC 문자를 개방형 환경에서 이용 가능하도록 ASCII 문자로 변환하는 과정이다.

  2. 전처리

    Batch 애플리케이션이 OpenFrame에서 작동할 수 있도록 OpenFrame에서 제공하는 툴을 사용하여 Batch 애플리케이션을 수정하는 과정이다.

  3. 컴파일

    컴파일러를 사용하여 실행가능한 바이너리를 생성하는 과정이다.

  4. 배포

    생성된 바이너리를 OpenFrame 시스템에 적재하는 과정이다.

일반적인 Batch 애플리케이션 마이그레이션 절차와는 별도로 Oracle을 데이터베이스로 사용하는 경우 DB2 SQL 문을 Oracle SQL 문으로 변환하는 과정이 필요하다. 본 절에서는 COBOL 및 PL/I 언어별로 전처리, 컴파일, 배포 과정 등의 마이그레이션 전과정 및 컴파일할 때 주의해야 할 사항에 대해 기술한다.

  1. EBCDIC 문자를 ASCII로 변환하는 과정 및 변환하면서 발생하는 문제점에 대한 자세한 내용은 EBCDIC에서 ASCII로 변환EBCDIC에서 ASCII 변환 이슈를 참고한다.

  2. DB2 SQL 문을 Oracle SQL 문으로 변환하는 과정은 DB2에서 Oracle로의 전환 이슈를 참고한다.

2.1. COBOL Batch 애플리케이션

본 절에서는 COBOL Batch 애플리케이션을 마이그레이션하는 과정에서 전처리, 컴파일, 배포 과정을 자세하게 기술한다.

전처리

OpenFrame 환경에서 COBOL Batch 애플리케이션 컴파일하기 위해 ofcbpp 툴을 사용하여 전처리 과정을 거친다.

ofcbpp 툴을 사용하여 COBOL 문법을 체크하고 참조되는 Copybook을 전개할 때 사용된다. ofcob을 컴파일할 때 전처리가 수행됨으로 필요한 경우 ofcbpp를 사용한다. OpenFrame COBOL의 경우 기본적으로 OpenFrame External File Handler를 사용하나 Fujisu Netcobol을 사용하는 경우 OpenFrame External File handler를 사용하기 위해 ofcbppf 전처리 툴을 사용해야 한다.

다음은 TSTCOB.cob에 참조되는 copybook path를 지정하고 ofcbpp 전처리를 하는 예제이다.

$ ofcbpp -i TSTCOB.cob -o ofcbpp_TSTCOB.cob -copypath $PWD/COPYBOOK

다음은 TSTCOB.cob를 submodule과 debug 모드로 ofcbppf 전처리를 하는 예제이다.

$ ofcbppf -s -t -i TSTCOB.cob -o ofcbppf_TESTCOB.cob

ofcbpp, ofcbppf 툴에 대한 자세한 내용은 OpenFrame COBOL "사용자 안내서"를 참고한다.

컴파일

COBOL Batch 애플리케이션의 경우 컴파일러 공급업체에 따라 전처리 과정 혹은 컴파일할 때 사전 작업이 다른 경우가 있다. 본 절에서는 컴파일러에 따른 Batch 애플리케이션의 컴파일 방법에 대해 설명한다.

  • OpenFrame COBOL 컴파일러

    External File Handler를 지원하는 OpenFrame COBOL 컴파일러의 경우 별도의 파일 입출력에 대한 전처리 과정없이 컴파일할 때 External File Handler로 OpenFrame의 textfh(Tmax External File Handler) 모듈을 링크하고 호출할 함수명을 지정함으로써 데이터셋 입출력을 사용할 수 있다.

    External File Handler를 지정하기 위해서는 OpenFrame COBOL의 경우 따로 지정할 옵션은 없다. 컴파일할 때 libtextfh.so를 링크해야 한다. OpenFrame COBOL에서 지정한 함수명으로 호출되기 위해서는 $OPENFRAME_HOME/lib/libcobsw.so가 libswofcob.so에 링크되어야 한다.

    다음은 OpenFrame COBOL 컴파일러를 사용하는 예이다.

    ofcob -U –o COBSAMPLE.so COBSAMPLE.cob -L$OPENFRAME_HOME/lib –ltextfh
  • MF-COBOL 컴파일러

    External File Handler를 지원하는 MF-COBOL 컴파일러의 경우 별도의 파일 입출력에 대한 전처리 과정없이 컴파일할 때 External File Handler로 OpenFrame의 textfh(Tmax External File Handler) 모듈을 링크하고 호출할 함수명을 지정함으로써 데이터셋 입출력을 사용할 수 있다.

    External File Handler를 지정하기 위해서는 컴파일할 때 -C’ CALLFH” TEXTFH” 옵션과 –C’ ASSIGN” EXTERNAL” 옵션을 추가해 External File Handler가 사용할 함수를 지정하고 libtextfh.so를 링크해야 한다. OpenFrame COBOL에서 지정한 함수명으로 호출되기 위해서는 $OPENFRAME_HOME/lib/libcobsw.so가 libswmfcob.so에 링크되어야 한다.

    MF-COBOL을 위한 textfh 모듈이 아닌 tcobfh 모듈을 사용할 수 있지만 MF-COBOL을 사용하는 경우에는 다음의 예제처럼 External File Handler를 사용할 것을 권장한다.

    다음은 MF-COBOL 컴파일러를 사용하는 예이다.

    cob32 -zvP -U -t –o COBSAMPLE.so COBSAMPLE.cob –C’CALLFH”TEXTFH”’–C’ASSIGN”EXTERNAL”’–L$OPENFRAME_HOME/lib –ltextfh
  • NET-COBOL 컴파일러

    External File Handler를 지원하지 않는 .NET COBOL 컴파일러 등의 COBOL 컴파일러에서는 ofcbppf 툴을 사용해 파일 입출력에 대한 전처리를 해야 하며, 컴파일할 때 OpenFrame의 tcobfh(Tmax COBOL File Handler) 모듈을 링크시켜야 한다.

    '.NET COBOL 컴파일러’를 사용하는 경우 다음 예제와 같이 ofcbppf 툴을 사용하여 전처리 과정을 거친 후 라이브러리 libaimap.so, libaimacpin.so, libndbdml.so를 링크한다.

    다음은 .NET COBOL 컴파일러의 컴파일 옵션 예이다.

    cobol -dy -shared -WC",STD1(JIS1),NOALPHAL,SRF(FIX),NSPCOMP(ASP),DLOAD,RSV(V125),CHECK,MODE(CCVS)" -o COBSAMPLE.so COBSAMPLE.cob -L$OPENFRAME_HOME/lib -laimap -laimacpin -lndbdml

    명령어에 대한 자세한 내용은 각 컴파일러 공급업체에서 제공하는 안내서를 참고한다

배포

새로운 버전의 프로그램이나 모듈을 OpenFrame 시스템에 동적으로 적용하려면 dlupdate 툴을 사용한다. dlupdate 툴은 모듈을 이용하여 작동 중인 프로그램 및 애플리케이션에 영향을 주지 않기 위해 기존 모듈을 백업한 후 앞으로 실행될 프로그램 및 애플리케이션이 새로운 모듈을 이용할 수 있게 한다.

다음은 툴 사용법과 항목에 대한 설명이다.

dlupdate source_path dataset_name
항목 설명

source_path

새로 적용되는 모듈의 경로를 의미한다.

dataset_name

기존 모듈 경로에 위치한 PDS 데이터셋을 의미한다.

dlupdate에 의해 백업된 모듈은 dlclean 툴을 사용하여 제거할 수 있다. 사용자가 직접 dlclean 툴을 실행하지 않더라도 수행되는 작업이 없는 경우 dlclean 툴이 주기적으로 실행되어 백업된 모듈을 제거한다.

dlupdate 및 dlclean 툴에 대한 자세한 내용은 OpenFrame Batch "툴 참조 안내서"를 참고한다.

2.2. PL/I Batch 애플리케이션

본 절에서는 PL/I Batch 애플리케이션을 마이그레이션하는 과정에서 OpenFrame PL/I를 사용한 컴파일, 배포 과정을 기술한다.

컴파일

External File Handler를 지원하는 OpenFrame PL/I 경우 별도의 파일 입출력에 대한 전처리 과정없이 컴파일할 때 External File Handler로 OpenFrame의 textfh(Tmax External File Handler) 모듈의 라이브러리 libtextfh.so를 링크하고 호출할 함수명을 지정함으로써 데이터셋 입출력을 사용할 수 있다.

다음은 OpenFrame PL/I 컴파일러를 사용하는 예이다.

$ ofpli -o PLITEST.so PLITEST.pli -L$OPENFRAME_HOME/lib -ltextfh

ofpli 툴에 대한 자세한 내용은 OpenFrame PL/I "사용자 안내서"를 참고한다.

OpenFrame PL/I를 전처리 툴을 따로 제공하지 않으나, 중간 파일을 생성할 수 있는 옵션이 있다. --save-temps를 사용하는 경우 작성 소스 성격에 따라 .mp 파일 혹은 .pp 파일이 생성된다. PL/I에서는 main 프로그램과 sub 프로그램이 나뉘어져 있다. JCL에서 호출되어지는 PL/I 애플리케이션의 경우 언어 상 OPTIONS(MAIN) 이 기재 되어야 한다.

OpenFrame PL/I에서는 시스템의 종류에 따라 특성 옵션을 지정할 수있다. OSC에서 수행되는 애플리케이션의 경우 --system-cics를 OSI에서 수행되는 애플리케이션의 경우 --system-ims를 적용한다.

배포

새로운 버전의 프로그램이나 모듈을 OpenFrame 시스템에 동적으로 적용하려면 dlupdate 툴을 사용한다. dlupdate 툴은 모듈을 이용하여 작동 중인 프로그램 및 애플리케이션에 영향을 주지 않기 위해 기존 모듈을 백업한 후 앞으로 실행될 프로그램 및 애플리케이션이 새로운 모듈을 이용할 수 있게 한다.

다음은 툴 사용법과 항목에 대한 설명이다.

dlupdate source_path dataset_name
항목 설명

source_path

새로 적용되는 모듈의 경로를 의미한다.

dataset_name

기존 모듈 경로에 위치한 PDS 데이터셋을 의미한다.

dlupdate에 의해 백업된 모듈은 dlclean 툴을 사용하여 제거할 수 있다. 사용자가 직접 dlclean 툴을 실행하지 않더라도 수행되는 작업이 없는 경우 dlclean 툴이 주기적으로 실행되어 백업된 모듈을 제거한다.

dlupdate 및 dlclean 툴에 대한 자세한 내용은 OpenFrame Batch "툴 참조 안내서"를 참고한다.