애플리케이션 운영

OpenFrame AIM 애플리케이션을 운영하기 위해서는 애플리케이션을 실행시키기 위한 애플리케이션 레이어의 모듈이 준비되어야 한다. 본 장에서는 애플리케이션을 실행시키기 위해 필요한 리소스와 설정방법에 대해 알아보도록 한다.

1. 애플리케이션 준비

애플리케이션을 실행하기 위해 애플리케이션 프로그램을 컴파일해야 한다. 애플리케이션 프로그램은 COBOL 또는 PL/I으로 기술될 수 있으며 본 안내서에서는 COBOL을 기준으로 설명하도록 한다.

1.1. COBOL 프로그램 컴파일

OpenFrame AIM은 NET COBOL 컴파일러를 지원한다. 설치된 NET COBOL의 정보를 환경변수로 등록해야 한다.

COBOL 프로그램은 OpenFrame에서 제공하는 전처리기인 ofcbppf를 사용하여 NET COBOL 컴파일러에 맞게 전처리한다. 전처리 과정을 거친 후 NET COBOL 컴파일러를 사용하여 전처리된 COBOL 프로그램을 컴파일한다. AIM 시스템에서 COBOL을 사용하기 위해서는 openframe_batch.conf 설정 파일의 tjclrun 서브젝트에서 SYSLIB 섹션의 BIN_PATH와 LIB_PATH 키에 COBOL 관련 경로가 지정되어 있어야 한다.

  1. ofcbppf 툴의 자세한 내용은 OpenFrame COBOL "사용자 안내서"를 참고한다.

  2. openframe_batch.conf 설정 파일의 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.

다음은 ofcbppf를 사용하여 메인 프로그램을 전처리하는 예제이다.

[user@host cobol]$ ofcbppf -v -l -i TESTAP00.COBOL

다음은 NET COBOL 컴파일러를 사용하여 전처리된 COBOL 프로그램을 컴파일하는 예제이다.

[user@host sub_cobol]$ cobol -dy -shared -o TESTAP00 ofcbppf_TESTAP00.cob -L $OPENFRAME_HOME/lib -laimap
-WC"STD1(JIS1),NOALPHAL,SRF(VAR),NSPCOMP(ASP),DLOAD,RSV(V125),CHECK,MODE(CCVS),TRACE,NCW(SYS)"

컴파일이 성공하면 Shared object 파일이 생성된다. 메인 프로그램의 경우에는 COBOL 프로그램명으로 생성되며, 프로그램 안에 정의되어 있는 PROGRAM-ID와 파일명과 다를 경우 정상적으로 호출되지 않을 수 있으므로 주의한다. 생성된 Shared object 파일은 JCL 내에 기술되어 있는 프로그램 라이브러리에 등록해야 한다. 서브 프로그램의 경우에는 시스템의 Shared object 파일 생성 규칙에 따라 파일이 생성된다. 예를 들어 UNIX의 경우 "lib파일명.so"로 파일이 생성된다.

1.2. Copybook

대부분의 COBOL 애플리케이션은 레코드를 정의하는데 Copybook을 사용한다. 또한 애플리케이션 프로그램 작성을 쉽게 하기 위하여 자주 쓰이는 로직을 Copybook으로 작성하여 사용할 수 있다.

Copybook의 종류로는 다음과 같은 것들이 있으며, 해당 Copybook의 경로를 정확히 설정해 주어야 성공적으로 애플리케이션을 컴파일할 수 있다. 환경변수 $COBCOPY에서 Copybook을 찾으므로 경로를 정확히 설정하고 해당 경로에 Copybook 리소스를 준비해야 한다.

모든 Copybook의 확장자는 .cbl이어야 한다.

  • 사용자 Copybook

    애플리케이션 작성을 쉽게 하기 위해 사용자가 직접 작성하는 Copybook이다.

  • 포맷 정의 Copybook

    화면이나 장표와 같이 특정 포맷을 사용하는 애플리케이션이 참고할 포맷에 관한 레코드 정보가 담겨있는 Copybook이다. OpenFrame에서 제공하는 jybfg000 툴로 포맷 정의 소스를 컴파일하면 자동으로 생성되며 openframe_aim.conf 설정 파일의 PSAM 섹션에 정의되어 있는 PSAMCPY에 생성된다. 포맷 정의체에 대한 자세한 설명은 포맷 정의체를 참고한다.

  • 서브 스키마 Copybook

    애플리케이션이 NDB의 데이터를 사용할 경우에는 NDB의 서브 스키마에 정의된 레코드를 통해 데이터를 사용하게 된다. 서브 스키마는 ADL로 정의하고 해당 ADL 서브 스키마에 레코드 정보가 정의된다. OpenFrame에서 제공하는 subsc 툴로 서브 스키마에 정의된 레코드를 추출하여 지정된 경로에 Copybook을 생성할 수 있다. 경로는 openframe_ndb.conf 설정 파일의 META 섹션에 정의한다. 또한 META 섹션에 정의된 디렉터리는 $COBCOPY에 등록되어야 한다.

    subsc의 자세한 사용법은 OpenFrame NDB "툴 참조 안내서"를 참고한다.

1.3. 포맷 정의체

온라인 업무나 장표 출력 업무를 하기 위해서는 화면이나 장표 등의 포맷을 정의하는 포맷 정의체가 필요하다. 이 포맷 정의체는 각 필드의 속성과 데이터 변환에 필요한 정보를 저장하고 있다. 또한 화면이나 장표와 관련한 애플리케이션의 경우 해당 포맷과 함께 입출력될 데이터의 형식을 정의한 Copybook이 필요하다. 따라서 전술한 포맷 정의체와 Copybook 파일을 생성하기 위해 jybfg000 툴을 사용하여 포맷 정의 소스를 컴파일해야 한다. 포맷 정의체는 openaframe_aim.conf의 PSAM 섹션의 PSAMBIN에 생성된다.

  1. jybfg000의 자세한 사용법에 대해서는 OpenFrame AIM "툴 참조 안내서"를 참고한다.

  2. PSAM 섹션에 대한 자세한 내용은 OpenFrame AIM "환경설정 안내서"를 참고한다.

예를 들어 PSAMLOGO.TXT라는 파일이 다음과 같은 형태로 작성되어 있다고 가정한다.

PSAMLOGO FID     TYPE=DSP
TEST0000 RECORD  TYPE=IN
@I000001 DATA    NAME=AID01   USAGE=AID
@I000002 DATA    NAME=LOGON   USAGE=CTRL1 PIC=(X,30)
TEST0001 RECORD
@O000001 DATA    NAME=SYMD-O1 USAGE=CTRL1 PIC=(X,60)
         DEVICE  DVK=DP10
         FRAME
         PART    SIZE=(24,80)
         FIELD   POS=(17,38)  ATTR=OUL VALUE='COPYRIGHT 2000-2016 TMAX SOFT CO.,LTD.'
         FIELD   POS=(20,24)  ATTR=OUL VALUE='LOGON COMMAND   :'
         FIELD   POS=(20,44)  ATTR=(IUL CUR) DATAIN=@I000002
         FIELD   POS=(2,2)    ATTR=(OUL RED) VALUE=@O000001
         END

다음은 위의 포맷 정의 소스 파일인 PSAMLOGO.TXT를 컴파일하는 예이다.

[user@host PSAM]$ jybfg000 -l 93 PSAMLOGO.TXT

 *  copybook :
   [/home/user/cobcpy/mapcpy/TEST0000.cbl] create.
   [/home/user/cobcpy/mapcpy/TEST0001.cbl] create.

 *  binary image :
   [/home/user/openframe/psambin/PSAMLOGO.BIN] create.

1.4. ACP JCL

ACP JCL(Application Control Program Job Control Language)은 Mainframe에서 업무를 실행시키기 위해 필요한 자원과 일련의 절차를 기술한 것이다. OpenFrame AIM에서는 애플리케이션 기동 전 ACP JCL 정보를 추출하고 등록을 위한 툴인 aimacpgen을 사용하여 지정된 곳에 등록하도록 한다.

  1. ACP JCL 관련 정보에 대한 자세한 내용은 OpenFrame Batch "JCL 문법 안내서"를 참고한다.

  2. ACP JCL 등록 방법에 대한 자세한 내용은 OpenFrame AIM "툴 참조 안내서"를 참고한다.

1.5. ADL

시스템 및 애플리케이션 전반에 관한 정의는 ADL을 사용한다. OpenFrame AIM도 ADL 리소스에 기술되어 있는 대로 환경을 설정하고 애플리케이션을 실행하므로, ADL 리소스를 컴파일하기 위한 툴인 jxdddms를 사용하여 지정된 곳에 등록하도록 한다.

ADL 관련 정보와 등록 방법에 대해서는 ADL 리소스와 OpenFrame AIM "리소스 안내서"를 참고한다.

2. 애플리케이션 서버 등록

애플리케이션 서버를 Tmax 설정 파일에 등록한다. 그리고 한 번에 실행될 애플리케이션 서버 프로세스 갯수의 최댓값을 고려하여 설정하도록 한다.

  1. 애플리케이션 서버를 위한 openframe_aim.conf 설정 파일의 내용은 OpenFrame AIM "환경설정 안내서"를 참고한다.

  2. Tmax 설정 파일의 예제는 Tmax 환경설정 파일을 참고한다.

3. 애플리케이션 서버 기동

OpenFrame AIM 애플리케이션 서버를 기동하기 위해서는 AIM 커맨드의 JOB을 실행하는 커맨드로 기동시킨다. 정상적으로 애플리케이션이 기동되면, 온라인 업무의 경우에는 단말과의 메시지를 대기하는 상태가 되므로 READY 상태에 있게 된다.

다음은 AIM 커맨드를 이용하여 애플리케이션 서버를 기동하는 예제이다.

  1. aimcmd의 'START ACP' 커맨드를 실행하여 애플리케이션 서버를 기동한다.

    $aimcmd -c 'START ACP,JOB=OIVPJOB'
    >
    aimcmd: command [START ACP,JOB=OIVPJOB] input
    aimcmd: command execution done
  2. 다음의 방법으로 애플리케이션 서버가 정상적으로 기동되었는지 확인한다.

    • tmadmin에서 si 커맨드로 서버가 RDY 상태인지 확인한다.

      $tmadmin
      --- Welcome to Tmax Admin (Type "quit" to leave) ---
      
      $$1 NODE1 (tmadm): si OIVPMQN
      ------------------------------------------------------------------------
        clh   svrname    (svri)   status     count   qcount   qpcount  emcount
      ------------------------------------------------------------------------
          0   OIVPMQN    (  22)      RDY         0        0         0        0
    • aimcmd의 'DISPLAY ACP' 커맨드를 실행하여 해당 MQN이 메시지 처리가 가능한 상태임을 확인한다.

      $aimcmd -c 'DISPLAY ACP,Q=OIVPMQN'
      DID    JOB NAME    PED NAME    STATUS      MQN NAME    MQN APTYPE     MQN STATUS    APM MODE    INIT LEVEL       Q CNT      WS CNT     MSG CNT
      00     OIVPJOB     OIVPPED     STARTING    OIVPMQN     DRVN           OPENED        P                    0           0           0           0
      aimcmd: command execution done

AIM 커맨드에 대한 상세한 설명은 OpenFrame AIM "명령어 참조 안내서"를 참고한다.

4. 애플리케이션 비정상 종료 시 메시지

OpenFrame AIM 시스템 운영 중 애플리케이션이 비정상 종료되는 경우에 기본적으로 시스템 자체적으로 'server down error(TPESVRDOWN)' 메시지를 출력하지만 사용자가 직접 출력될 메시지를 지정할 수 있다. 애플리케이션 비정상 종료 시에 출력될 메시지를 등록할 코드는 '99999999’이다.

다음은 aimabegen 툴을 사용하여 애플리케이션 비정상 종료 시 출력될 메시지를 등록하는 예제이다.

$aimabegen s -c 99999999 -m "SYSTEM ABEND Message"

aimabegen 툴에 대한 상세한 설명은 OpenFrame AIM "툴 참조 안내서"를 참고한다.