OSC 애플리케이션

본 장에서는 실제 업무 로직이 구현되는 프로그램이 실행되기 전에 요구되는 작업을 중심으로 OSC 애플리케이션을 기술한다.

1. 개요

OSC 서버에서 작동하는 애플리케이션 프로그램은 COBOL, PL/I 혹은 C 프로그래밍 언어로 개발된다. OSC COBOL, PL/I 및 C 프로그램은 일반 COBOL, PL/I 및 C 프로그램과 달리 EXEC CICS, EXEC DLI, EXEC SQL 문을 사용하여 시스템 리소스에 접근한다.

애플리케이션 개발자는 작성한 프로그램을 컴파일한 후 생성된 바이너리를 배치한다. 컴파일 전에 전처리가 필요한 경우 전처리를 수행하도록 한다. 배치된 프로그램은 OSC SD 테이블에 프로그램 리소스 정의를 등록한 후 OSC 시스템을 기동하면 동작시킬 수 있다.

본 장에서는 UNIX 셸을 통한 개발 준비 과정에 대해 기술한다.

  1. OpenFrame Studio를 통해서도 애플리케이션을 개발할 수 있다. 자세한 내용은 OpenFrame Studio "사용자 안내서"를 참고한다.

  2. OSC 애플리케이션 프로그램에서 Map을 사용하는 경우, Map 개발과 준비도 함께 이루어져야 프로그램이 정상적으로 작동된다. Map에 대한 자세한 내용은 OpenFrame OSC "Mapping Support 안내서"를 참고한다.

2. 소스 전처리

소스 전처리 과정은 Mainframe CICS를 위해 작성된 COBOL, PL/I 및 C 애플리케이션 프로그램 소스를 UNIX용 COBOL, PL/I 및 C 컴파일러에서 컴파일이 가능하도록 변환하는 작업을 의미한다.

다음은 COBOL, PL/I 및 C 애플리케이션 프로그램 소스를 전처리하는 과정이다.

  • COBOL

    COBOL 프로그램 소스 전처리 과정은 다음과 같이 4단계로 구성된다.

    1. COBOL 문법 전처리(cobolprep)

    2. OSC COBOL 문법 전처리(osccobprep)

    3. EXEC DLI 명령문 전처리(dliprep)

    4. EXEC CICS 명령문 전처리(osccblpp)

    EXEC CICS 명령을 사용하는 COBOL 프로그램은 모두 osccblpp 툴에 의한 전처리 과정을 거쳐야 한다. cobolprep, osccobprep 그리고 dliprep은 필요한 경우만 사용해도 된다.

  • PL/I

    PL/I 프로그램 소스 전처리는 EXEC CICS 문법 전처리(oscplipp) 과정에 수행한다. EXEC CICS 명령을 사용하는 PL/I 프로그램은 모두 oscplipp 툴에 의한 전처리 과정을 거쳐야 한다.

  • C

    C 프로그램 소스 전처리는 EXEC CICS 문법 전처리(osccprep) 과정에 수행한다. EXEC CICS 명령을 사용하는 C 프로그램은 모두 osccprep 툴에 의한 전처리 과정을 거쳐야 한다.

본 절에서 소개되는 각 툴에 대한 자세한 사용 방법은 OpenFrame OSC "툴 참조 안내서"를 참고한다. 또는 시스템 셸(shell)에서 [-h] 옵션을 실행하면 해당 옵션에 대한 자세한 내용을 확인할 수 있다.

2.1. cobolprep

cobolprep은 COBOL 언어 문법을 변환하는 전처리를 수행하는 툴이다.

Mainframe과 오픈 환경은 서로 다른 시스템을 기반으로 하고, 오픈 환경에서 제공하는 COBOL 컴파일러는 기존 Mainframe의 컴파일러와 동일하지 않다. 따라서 오픈 환경에서 Mainframe의 COBOL 프로그램을 기동하기 위해서는 Mainframe에 사용하는 COBOL 언어 문법을 오픈 환경에 맞도록 변경해주는 전처리 과정이 필요한 경우가 있다.

아래의 경우는 COBOL 업무 프로그램 소스의 전처리가 필요하다.

  • Mainframe에서 사용하는 COBOL 문법 중 오픈 환경용 컴파일러가 인식하지 못하거나 지원하지 못하는 경우

  • 특정 기능을 활용하기 위하여 추가적으로 Mainframe에서 사용하는 COBOL 업무 프로그램 소스를 전처리해야 하는 경우

다음은 COBTEST.cob 파일을 전처리하여 cobolprep_COBTEST.cob 파일을 현재 디렉터리에 생성하는 예이다.

$ cobolprep COBTEST.cob

2.2. osccobprep

osccobprep은 OSC에서 사용될 COBOL 프로그램 중 Mainframe 환경의 특징 등으로 인해서 UNIX의 COBOL 컴파일러가 정상적으로 처리할 수 없는 구문을 전처리하고, OSC 시스템에 맞춰 명령어를 추가하거나 디버깅 등의 특정 용도를 위한 전처리하는 툴이다. 현재는 BLL(Base Locator for Linkage) 전처리와 BMSMAPBR 전처리, EDF 전처리 기능 등을 가지고 있다.

전처리 결과물은 결과물 파일 이름 혹은 Prefix를 옵션으로 제공하지 않는 경우 해당 파일명에 "osccobprep_"이라는 Prefix가 붙는다.

BLL은 IBM의 Mainframe COBOL 컴파일러 중 OS/VS COBOL 이하의 구 버전에서 지원하는 특이한 문법 구조로 자세한 설명은 IBM의 "CICS Application Programming Guide"를 참고한다.

사용법

osccobprep을 실행하는 방법은 다음과 같다.

Usage: osccobprep [options] file
  • [options]

    옵션 설명

    [-V]

    Verbose mode로 실행한다.

    [-a]

    BMSMAPBR에 대한 전처리를 수행한다.

    [-b]

    BLL에 대한 전처리를 수행한다.

    [-c]

    동적 CALL 기능을 사용하거나, CBLPSHPOP 기능을 사용하는 경우에 지정한다. OSC 시스템 기본 기능으로 디폴트로 사용할 것을 권장한다.

    [-d]

    EDF 기능을 사용하려는 경우에 사용한다.

    [-f postfix]

    Copybook 파일의 확장자를 설정한다. 점(.)을 사용된 경우 점을 포함해야 한다.

    [-p dir]

    Copybook 파일이 위치하고 있는 디렉터리 경로를 설정한다.

    [-o1 prefix]

    전처리 결과 파일 이름 앞에 붙일 Prefix를 지정한다.

    [-o2 file]

    전처리 결과 파일 이름을 지정한다.

    -o1 옵션과 -o2 옵션이 함께 사용될 경우 -o2 옵션이 우선한다.

    [-h]

    프로그램 사용을 위한 자세한 사용법을 출력한다.

    [-v]

    osccobprep의 버전 정보를 출력한다.

  • 입력 항목

    항목 설명

    file

    전처리할 파일 이름을 지정한다.

사용예제

다음은 osccobprep을 사용해서 TCOB.cob 프로그램 소스 코드를 전처리하여 osccobprep_TESTCOB.cob 파일을 생성하는 예제이다. 프로그램에서 사용하는 Copybook의 확장자는 .cob, Copybook 디렉터리 경로는 "$OPENFRAME_HOME/ osc/Copybook"으로 설정했다.

$ osccobprep -b -f .cob -p $OPENFRAME_HOME/osc/Copybook TESTCOB.cob

2.3. osccblpp

osccblpp는 OSC에서 사용하는 COBOL 애플리케이션 프로그램 소스 내에 존재하는 EXEC CICS 명령어를 전처리하는 툴이다. 특정 옵션을 지정하지 않을 경우 파일명에 "osccblpp_"이라는 접두어가 붙는 결과물이 생성된다.

사용법

osccblpp을 실행하는 방법은 다음과 같다.

Usage: osccblpp [-c] [-nl] [-ne] [-n] [-V] [-p <prefix>] <file> ...
     | osccblpp [-c] [-nl] [-ne] [-n] [-V] [-p <prefix>] [-o <output>] <file>
     | osccblpp [-h | -v]
  • [options]

    옵션 설명

    [-c]

    DFHCOMMAREA를 추가하지 않는다.

    [-n]

    EXEC CICS 명령어를 전처리하지 않는다.

    [-nl]

    LINKAGE SECTION과 PROCEDURE DIVISION에서 DFHCOMMAREA DFHEIBLK를 수정하지 않는다.

    [-ne]

    LINKAGE SECTION에 DFHEIBLK를 추가하지 않는다.

    [-o output]

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

    [-p prefix]

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

    [-V]

    Verbose mode로 실행한다.

    [-h]

    프로그램 사용을 위한 자세한 사용법을 출력한다.

    [-v]

    osccblpp의 버전 정보를 출력한다.

  • 입력 항목

    항목 설명

    file

    전처리할 COBOL 프로그램 소스 파일을 지정한다. COBOL 프로그램 소스 파일은 한 번에 여러 모듈을 지정할 수 있다.

사용예제

다음은 SAMPLE00.cob 파일을 전처리하여 osccblpp_SAMPLE00.cob이라는 파일을 생성하는 예이다.

$ osccblpp SAMPLE00.cob

2.4. oscplipp

oscplipp는 OSC PLI 애플리케이션 프로그램 소스 내에 존재하는 EXEC CICS 명령어를 전처리하여 결과물을 산출하는 툴이다. 결과물은 해당 파일명에 "oscplipp_"이라는 접두어가 붙는다.

사용법

oscplipp을 실행하는 방법은 다음과 같다.

Usage: oscplipp [options] file ...
  • [options]

    옵션 설명

    [-d]

    전처리 관련 디버그 메시지를 출력한다.

    [-f]

    External procedure call에 대하여 FETCH 문을 추가한다.

    [-l]

    내부 스캐너 관련 디버그 메시지를 출력한다.

    [-m]

    MF-COBOL과 연계하여 동작하는 경우 지정한다.

    [-o file]

    결과물 파일명을 지정한다.

    [-y]

    구문 해석 단계에서의 디버그 메시지를 출력한다.

    [-I dir]

    include 파일을 찾을 디렉터리명을 지정한다.

    [-V]

    Verbose mode로 실행한다.

    [-h]

    프로그램 사용을 위한 자세한 사용법을 출력한다.

    [-v]

    oscplipp의 버전 정보를 출력한다.

  • 입력항목

    항목 설명

    file

    전처리할 PL/I 프로그램 소스 파일을 지정한다. PL/I 프로그램 소스 파일은 한 번에 여러 모듈을 지정할 수 있다.

사용예제

다음은 sample00.pli 파일을 전처리하여 oscplipp_sample00.pli이라는 파일을 생성하는 예이다.

$ oscplipp sample00.pli

2.5. osccprep

osccprep은 OSC에서 사용될 C 프로그램 중 Mainframe 환경의 특징 등으로 인해서 UNIX의 C 컴파일러가 정상적으로 처리할 수 없는 구문을 전처리하고, OSC 시스템에 맞춰 명령어를 추가하는 전처리 툴이다.

전처리 결과물은 결과물 파일 이름 혹은 Prefix를 옵션으로 제공하지 않는 경우 해당 파일명에 "oscprep_"이라는 Prefix가 붙는다. 확장자는 -o 옵션을 사용하지 않을 경우 .c로 생성된다.

전처리를 수행하면 OSC에서 제공하는 dfheiptr.h 헤더 파일을 추가하고 EXEC CICS로 시작하는 명령들을 OSC에서 제공하는 함수들로 변경하게 된다.

-o 옵션을 사용하지 않을 경우 확장자가 .c로 생성되기 때문에 프로그램에서 사용하는 입력파일의 확장자가 c이면 안된다.

사용법

osccprep을 실행하는 방법은 다음과 같다.

Usage: osccprep [-p <prefix>] [-o <output>] [-V] <file> ...
     | osccprep [-h | -v]
  • [options]

    옵션 설명

    [-p <prefix>]

    전처리 결과 파일 이름 앞에 붙일 Prefix를 지정한다.

    [-o <output>]

    전처리 결과 파일 이름을 지정한다.

    -p 옵션과 함께 사용될 경우 -o 옵션이 우선한다.

    [-V]

    Verbose mode로 실행한다.

    [-h]

    프로그램 사용을 위한 자세한 사용법을 출력한다.

    [-v]

    osccprep의 버전 정보를 출력한다.

  • 입력 항목

    항목 설명

    file

    전처리할 파일 이름을 지정한다. 확장자가 .c는 설정하면 안된다.

사용예제

다음은 osccprep을 사용해서 TEST.ccs 프로그램 소스 코드를 전처리하여 osccprep_TEST.c 파일을 생성하는 예제이다.

$ osccobprep TEST.ccs

다음은 osccprep을 사용해서 TEST.ccs 프로그램 소스 코드를 전처리하여 TEST.c 파일을 생성하는 예제이다.

$ osccobprep -V -o TEST.c TEST.ccs

3. 컴파일

다음은 COBOL, PL/I 및 C 애플리케이션 프로그램 소스를 컴파일하는 설명이다.

  • COBOL

    OSC 애플리케이션의 컴파일은 COBOL 컴파일러를 통하여 shared object를 생성하는 방식을 이용한다. shared object 이름과 COBOL 프로그램 소스의 PROGRAM-ID 값은 동일해야 한다.

  • PL/I

    OSC 애플리케이션의 컴파일은 PL/I 컴파일러를 통하여 shared object를 생성하는 방식을 이용한다. shared object 이름과 PL/I 프로그램 소스의 PROCEDURE 이름은 동일해야 한다.

  • C

    OSC 애플리케이션의 컴파일은 C 컴파일러를 통하여 shared object를 생성하는 방식을 이용한다. C 프로그램 소스 안에는 shared object와 동일한 이름의 함수가 있어야 한다(main 함수를 갖는 소스는 전처리시에 소스 파일 이름으로 main함수명을 변경하게 된다).

본 절의 설명 중 컴파일러 및 shared object 생성에 대한 자세한 내용은 해당 COBOL 컴파일러, PL/I 컴파일러 및 C 컴파일러의 안내서를 참고한다.

4. 배치 및 적용

OSC 시스템에서 제공하는 osctdlinitosctdlupdate 툴을 사용하여 컴파일된 프로그램을 OSC Region별로 배치 및 적용한다.

배치 및 적용 방법은 다음과 같다.

  1. 프로그램을 저장할 디렉터리를 OSC 애플리케이션 서버의 환경설정인 osc.{servername} 서브젝트, GENERAL 섹션의 TDLDIR 키의 VALUE 항목에 설정한다. TDLDIR 키에 설정한 디렉터리 아래에 mod 및 run 디렉터리가 존재하지 않으면 직접 생성한다. TDLDIR 항목을 설정하지 않을 경우 OSC 시스템 디폴트로 ${OPENFRAME_HOME}/osc/region/{Region 이름}/tdl 디렉터리를 참조한다.

  2. TDLDIR 디렉터리 밑에 config 디렉터리에 tdl.cfg 파일을 생성한다. tdl.cfg 파일은 인스톨러에서 제공하는 샘플 파일을 이용한다.

    다음은 tdl.cfg 파일 생성 예제이다. PL/I 프로그램을 사용하더라도, LANG 항목은 COBOL로 지정한다.

    # shared memory version (1|1D|2|2D|3)
    VERSION=3
    
    # shared memory key
    SHMKEY=0x3AB6
    
    # shared memory and file creation permission
    IPCPERM=0750
    
    # number of dynamic loadable modules, rouded up to powers of 2
    MAXMODULES=2000
    
    # language environment
    LANG=COBOL
    
    # keeping extension
    KEEPEXT=asmo

    어셈블리 모듈을 사용하는 경우 (.asmo) 위의 예시와 동일하게 KEEPEXT 옵션에 확장자명을 기술하고, osctdlupdate 툴을 실행해야 한다.

  3. OSC Region별로 osctdlinit 툴을 실행한다. TDLDIR 디렉터리 아래에 config 디렉터리에 있는 tdl.cfg 파일의 설정에 따른 초기화가 진행된다.

  4. 컴파일된 프로그램 바이너리들은 TDLDIR 디렉터리 아래에 mod 디렉터리에 저장한다.

  5. osctdlupdate 툴에 OSC Region 이름 및 프로그램명을 지정하여 프로그램을 배치한다. 파일 확장자는 생략하고 프로그램 이름만 기술한다. 어셈블리 모듈의 경우에는 파일확장자를 생략해서는 안된다.

    1. osctdlrm 툴을 이용하여 사용 중인 공유 메모리의 정보를 삭제할 수 있다. 메모리 정보 삭제 후 공유 메모리를 다시 생성하려면 osctdlinit 툴을 실행한다.

    2. 환경설정을 위한 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame OSC "환경설정 안내서"를 참고한다.

5. 프로그램 및 트랜잭션 등록

운영자는 애플리케이션 프로그램 등록을 위해 프로그램과 트랜잭션 정의 매크로를 준비하고, 사전에 OSC SD 테이블에 등록해야 한다.

다음은 OIVPMAIN 프로그램과 OIVP 트랜잭션을 정의하는 리소스 정의 매크로 예제이다. 아래의 매크로 파일은 oscsdgen 툴을 통해서 OSC SD 테이블에 등록한다. 또는 OpenFrame Manager[OSC] > [Regions] > [System Definitions] 메뉴를 통해 등록, 수정, 삭제가 가능하다.

DEFINE  PROGRAM(OIVPMAIN)
        GROUP(OIVP)
        LANGUAGE(COBOL)

DEFINE  TRANSACTION(OIVP)
        GROUP(OIVP)
        PROGRAM(OIVPMAIN)
        TWASIZE(255)
  1. 프로그램 및 트랜잭션 리소스 정의에 대한 자세한 설명은 OpenFrame OSC "리소스 정의 안내서"를 참고한다.

  2. OpenFrame Manager[OSC] > [Regions] > [System Definitions] 메뉴에 대한 자세한 내용은 OpenFrame Manager “사용자 안내서”를 참고한다.