기타 툴

본 장에서는 사용자 편의를 위해 제공되는 툴의 사용 방법에 대해 기술한다.

1. 개요

다음은 기타 운영 편의를 위해 제공되는 툴 목록이다.

프로그램명 설명

conprt

셸 프롬프트 상에서 콘솔에 메시지를 표시할 수 있는 프로그램이다.

enpasswd

사용자의 비밀번호를 64Byte 문자열로 인코딩한다.

mvsana

MVS JCL, PROCEDURE, INCLUDE File을 분석하는 프로그램이다.

mspana

MSP JCL, PROCEDURE를 분석하는 프로그램이다.

ofconfig

OpenFrame에서 운용 중인 설정 파일에 대한 정보를 출력하는 툴이다.

oferror

OpenFrame에서 발생하는 에러에 대한 간략한 에러 번호, 에러 코드, 에러 메시지를 출력한다.

offile

OpenFrame 전 모듈에 대한 버전 트랙킹을 위한 툴이다.

ofversion

설치된 OpenFrame 서브 제품의 종류와 각 서브 제품의 버전을 출력한다.

tacflogin

OpenFrame 로그인 정보의 중복 입력을 방지한다.

tconmgr

Mainframe에서의 콘솔에 대응하는 가상의 OpenFrame 콘솔 프로그램이다.

vtamadm

시스템이 기동된 후 DB에 로딩된 VTAM 리소스 정보를 출력한다.

vtamcmd

사용자가 입력한 VTAM 명령어를 파싱하고 파싱된 명령어를 실행한다.

vtamdump

DB에 저장된 VTAM 리소스 정보를 출력한다.

vtamgen

BEGINVTAM 구문을 컴파일하여 DB에 정보를 저장한다.

2. conprt

conprt는 셸 프롬프트 상에서 콘솔에 메시지를 표시할 수 있는 프로그램이다. 사용자는 프로그램상의 메시지를 콘솔에서 쉽게 확인할 수 있다.

사용법

conprt의 실행 방법은 다음과 같다.

$ conprt [options] <message>
  • [options]

    다음은 conprt를 사용할 때 option에 대한 설명이다. 각 항목은 띄어쓰기로 구분하여 사용한다.

    항목 설명

    [-i | --console-id]

    콘솔의 ID를 지정한다. 0부터 99까지 입력할 수 있고 기본값은 0이다.

    [-s| --source]

    메시지의 출처가 되는 소스 이름을 지정한다. JCL, COBOL, PGM 이름 등이 될 수 있다. (기본값: CONSOLE)

    [-u| --user]

    메시지의 JOBID나 사용자 ID를 지정한다.

    [-u] 옵션은 JOBID 환경변수가 설정되지 않았을 경우에만 유효하고, 환경변수가 설정되었을 경우 무시된다. JOBID 환경변수와 [-u] 옵션 모두 설정되지 않으면 에러가 발생한다.

  • 입력 항목

    항목 설명

    message

    콘솔에 표시될 메시지를 지정한다.

사용예제

다음은 소스 이름은 'COBOL', 사용자 이름은 'TEST', 메시지는 'CONSOLE DISPLAY TEST' 라고 콘솔에 메시지를 보내는 conprt의 일반적인 사용에 관한 예이다.

$ conprt -s COBOL -u TEST "CONSOLE DISPLAY TEST"

명령어가 수행된 후 콘솔 화면에 "CONSOLE_DISPLAY_TEST" 메시지가 출력된다.

figure 3 9
DISPLAY 실행 결과 화면

3. enpasswd

enpasswd는 사용자의 비밀번호를 64Byte 문자열로 인코딩하는 툴이다.

OpenFrame 제품을 사용하면 환경 설정에 사용자의 비밀번호를 입력해야 하는 경우가 있다. 예를 들면 OpenFrame 환경설정 중 ikjeft01 서브젝트에는 특정 관계 데이터베이스 시스템에 접속할 수 있도록, 데이터베이스 시스템명, 사용자명, 비밀번호 등의 정보를 설정해야 한다. 사용자의 비밀번호를 직접 설정 파일에 입력하면 정보 유출의 위험이 있으므로, 비밀번호를 인코딩해서 저장하도록 한다.

OpenFrame 환경설정에 대한 자세한 내용은 OpenFrame Base "환경설정 안내서"를 참고한다.

사용법

enpasswd를 실행하는 방법은 다음과 같다.

Usage: enpasswd username password
  • 입력 항목

    항목 설명

    username

    비밀번호를 인코딩할 때 인코딩 키로 사용된다.

    password

    인코딩할 비밀번호를 입력한다. 프로그램 실행 파라미터로 사용자명과 비밀번호를 설정하면 화면에 64Byte로 인코딩된 비밀번호가 출력된다.

사용예제

다음은 사용자명으로 igkang을 지정하고, 비밀번호로 whoknows를 지정하였을 때 enpasswd 프로그램이 실행되어 인코딩된 비밀번호를 출력하는 예이다.

$ enpasswd igkang whoknows
970A3C79A0E803DCB62B276D91602D77500107695254FDA1BD477054AEBACBBD

설정 파일에서 인코딩된 비밀번호와 인코딩되지 않은 비밀번호를 동시에 지정할 경우에는 인코딩되지 않은 비밀번호가 우선적으로 사용된다. 인코딩된 비밀번호를 사용하는 환경설정으로는 ikjeft01 서브젝트가 있다.

4. mvsana

mvsana는 MVS JCL, Procedure, Include File들을 분석하는 프로그램이다.

mvsana로 특정 파일을 분석하면 해당 파일이 구문 오류 없이 작성되었는지, 구문 오류가 있다면 어느 부분에서 어떠한 이유로 오류가 발생했는지 출력한다.

mvsana 프로그램은 OpenFrame Batch for MVS 시스템에서만 사용할 수 있다.

사용법

mvsana의 실행 방법은 다음과 같다.

$ mvsana [options] FILE_PATH
  • [options]

    다음은 mvsana를 사용할 때 option에 대한 설명이다. 각 항목은 띄어쓰기로 구분하여 사용한다.

    항목 설명

    [-N | --normal]

    mvsana의 기본 포맷으로 분석 결과가 출력된다.

    [-C | --csv]

    CSV 포맷으로 분석 결과가 출력된다.

    [-P | --Procedure file]

    지정된 파일이 프러시저 파일일 때 사용한다.

    [-E | --ERROR]

    FILE_PATH.err에 에러를 출력한다.

    [-d <directory-name> | --directory <directory-name>]

    Instream data file이 위치한 곳의 디렉터리를 지정한다.

    [-p <directory-name> | --procedure <directory-name>]

    프러시저가 위치한 곳의 디렉터리를 지정한다.

    [-i <directory-name> | --include <directory-name>]

    Include file이 위치한 곳의 디렉터리를 지정한다.

    [-e <filepath> | --error <filepath>]

    지정한 File path에 에러를 출력한다.

    [-pgm <program-name> | --pgm_sysin <program-name>]

    SYSIN 데이터를 가져오려는 경우 해당 프로그램을 지정한다.

    [-f | --full_parsing]

    JCL, Include, Procedure File들을 파싱하여 구문 오류, 존재하지 않는 파일, 미지원 기능, 정상분석 결과를 출력한다. 미지원 기능은 정상 분석인 경우에만 출력된다.

    [-ri <directory-name>]

    Directory path를 지정하면 해당 디렉터리와 한 단계 아래의 디렉터리에서 Include File을 찾는다.

    [-rp <directory-name>]

    Directory path를 지정하면 해당 디렉터리와 한 단계 아래의 디렉터리에서 프러시저 파일을 찾는다.

  • 입력 항목

    항목 설명

    FILE_PATH

    분석할 파일의 경로를 입력한다.

사용 예제

다음은 mvsana의 일반적인 사용에 관한 예로 [-N] 옵션을 이용하여 JCL을 분석하는 내용이다.

$ mvsana -N ./ABC.jcl
--------------- ./ABC.jcl ERROR ----------
Syntax Error [Line:13 ;Column: ;Keyword: ;Message:INCLUDEed file(/home/user/oframe_7/volume_DEFVOL/SYS1.PROCLIB/AB) not found]
Syntax Error [Line:26 ;Column: ;Keyword: ;Message:INCLUDEed file(/home/user/oframe_7/volume_DEFVOL/SYS1.PROCLIB/CD) not found]
JCLNAME="ABC.jcl", JCLTYPE="MVS"

다음은 [-P] 옵션을 이용하여 오류 없는 프러시저를 분석하는 예제이다.

$ mvsana -P ../SYS1.PROCLIB/TSTPROC/ABC
<JCL JCLNAME="ABC" JCLTYPE="MVS">
    <JOB JOBNAME="ABC">
        <STEP STEPNUMBER="1" STEPNAME="STEP1" PROCNAME="ABC" PROCTYPE="C" PROC_ID="1" FROM="../SYS1.PROCLIB/TSTPROC/ABC">
        </STEP>
    </JOB>
</JCL>

다음은 [-f] , [-ri], [-rp] 옵션을 이용하여 JCL을 분석하는 예제이다.

$ mvsana -f ./ABC.jcl -ri ../SYS1.PROCLIB -rp ../SYS1.PROCLIB
<ERROR SOURCE="./ABC.jcl">
    <ERROR_TYPE CODE="3" ST_LINE="2" END_LINE="2" FROM="/home/user/oframe_7/volume_DEFVOL/SYS1.JCLLIB/ABC.jcl">
        <MESSAGE STRING="Message:syntax error"/>
    </ERROR_TYPE>
    <ERROR_TYPE CODE="2" ST_LINE="39" END_LINE="39">
        <MISSING TYPE="PROCEDURE" NAME="IKJEFT" STEPNAME="STEP02" FROM="/home/user/oframe_7/volume_DEFVOL/SYS1.JCLLIB/ABC.jcl">
            <MESSAGE STRING="39 : IKJEFT IS NOT FOUND."/>
        </MISSING>
    </ERROR_TYPE>
</ERROR>

5. mspana

mspana는 MSP JCL, Procedure들을 분석하는 프로그램이다.

mspana로 특정 파일을 분석하면 해당 파일이 구문 오류 없이 작성되었는지, 구문 오류가 있다면 어느 부분에서 어떠한 이유로 오류가 발생했는지 출력한다.

mspana 프로그램은 OpenFrame Batch for MSP 시스템에서만 사용할 수 있다.

사용법

mspana의 실행 방법은 다음과 같다.

$ mspana [options] FILE_PATH
  • [options]

    다음은 mspana를 사용할 때 option에 대한 설명이다. 각 항목은 띄어쓰기로 구분하여 사용한다.

    항목 설명

    [-N | --normal]

    mspana의 기본 포맷으로 분석 결과가 출력된다.

    [-C | --csv]

    CSV 포맷으로 분석 결과가 출력된다.

    [-P | --Procedure file]

    지정된 파일이 프러시저 파일일 때 사용한다.

    [-E | --ERROR]

    FILE_PATH.err에 에러를 출력한다.

    [-d <directory-name> | --directory <directory-name>]

    Instream data file이 위치한 곳의 디렉터리를 지정한다.

    [-p <directory-name> | --procedure <directory-name>]

    프러시저가 위치한 곳의 디렉터리를 지정한다.

    [-e <filepath> | --error <filepath>]

    지정한 File path에 에러를 출력한다.

    [-pgm <program-name> | --pgm_sysin <program-name>]

    SYSIN 데이터를 가져오려는 경우 해당 프로그램을 지정한다.

    [--sysin-path-for-sort <filepath>]

    지정한 파일 경로에서 SORT STEP의 실제하는 SYSIN 데이터셋을 찾아서 데이터셋의 레코드 내용을 포함하여 출력한다.

  • 입력 항목

    항목 설명

    FILE_PATH

    분석할 파일의 경로를 입력한다.

사용 예제

다음은 mspana의 일반적인 사용에 관한 예로 [-N] : normal, [-C] : CSV, [기본] : XML 옵션을 이용하여 각각 JCL을 분석하는 내용이다.

$ cat TESTJOB.jcl
//TESTJOB  JOB
//STEP01   EXEC PGM=KDJBR14
//DEL0TE01 DD   DSN=TESTJOB.DATA.SDS01,DISP=(MOD,DELETE,DELETE)
//STEP02   EXEC PGM=KDJBR14
//CREATE01 DD   DSN=TESTJOB.DATA.SDS01,DISP=(NEW,CATLG,DELETE),
//         VOL=SER=DEFVOL,DCB=(LRECL=80,BLKSIZE=1040)
//
$ mspana -N TESTJOB.jcl
JCLNAME="TESTJOB.jcl", JCLTYPE="MSP"
    JOBNAME="TESTJOB"
        STEPNAME="STEP01", PGMNAME="KDJBR14"
            DDNAME="DEL0TE01", DSNAME="TESTJOB.DATA.SDS01", DISP="(MOD,DELETE,DELETE)"
        STEPNAME="STEP02", PGMNAME="KDJBR14"
            DDNAME="CREATE01", DSNAME="TESTJOB.DATA.SDS01", DISP="(NEW,CATLG,DELETE)",
DCB="(LRECL=80,BLKSIZE=1040)", VOLUME="DEFVOL"

$ mspana -C TESTJOB.jcl
TESTJOB.jcl,MSP,,1,TESTJOB,,STEP01,1,KDJBR14,"",DEL0TE01,TESTJOB.DATA.SDS01,
"(MOD,DELETE,DELETE)",,,,,,,,,,,,"",,,"","",,,
TESTJOB.jcl,MSP,,1,TESTJOB,,STEP02,1,KDJBR14,"",CREATE01,TESTJOB.DATA.SDS01,
"(NEW,CATLG,DELETE)",,,,,,,,,,,,"(LRECL=80,BLKSIZE=1040)",,,"","",,DEFVOL,

$ mspana TESTJOB.jcl
<JCL JCLNAME="TESTJOB.jcl" JCLTYPE="MSP">
    <JOB JOBNAME="TESTJOB">
        <STEP STEPNUMBER="1" STEPNAME="STEP01" PGMNAME="KDJBR14">
            <DD DDNAME="DEL0TE01" DSNAME="TESTJOB.DATA.SDS01" DISP="(MOD,DELETE,DELETE)"/>
        </STEP>
        <STEP STEPNUMBER="2" STEPNAME="STEP02" PGMNAME="KDJBR14">
            <DD DDNAME="CREATE01" DSNAME="TESTJOB.DATA.SDS01" DISP="(NEW,CATLG,DELETE)"
DCB="(LRECL=80,BLKSIZE=1040)" VOLUME="DEFVOL"/>
        </STEP>
    </JOB>
</JCL>

다음은 [-P] 옵션을 이용하여 오류 없는 프러시저를 분석하는 예제이다.

$ cat TESTPROC
//TESTPROC   PROC
//PRSTEP01   EXEC PGM=KEQEFT01,DYNAMNBR=25,REGION=2048K
//SYSPRINT   DD   TERM=TS,SYSOUT=A
//SYSIN      DD   TERM=TS
//
$ mspana -P TESTPROC
<JCL JCLNAME="TESTPROC" JCLTYPE="MSP">
    <JOB JOBNAME="TESTPROC">
        <STEP STEPNUMBER="1" STEPNAME="STEP1" PROCNAME="TESTPROC" PROCTYPE="C" PROC_ID="1">
        </STEP>
        <STEP STEPNUMBER="2" STEPNAME="PRSTEP01" PGMNAME="KEQEFT01" PARENT_PROC_ID="1">
            <DD DDNAME="SYSPRINT" SYSOUT="A"/>
            <DD DDNAME="SYSIN"/>
        </STEP>
    </JOB>
</JCL>

6. ofconfig

ofconfig는 OpenFrame의 환경설정 값을 관리하는 툴이다.

OpenFrame 7.1부터 환경설정 값은 데이터베이스에서 관리되고 실행 환경에서는 각 노드의 TCache에 저장되며, 노드, 서브젝트, 섹션, 키로 구성된다. ofconfig의 명령으로 설정값이 수정될 경우 TCache의 서버에 의해 자동으로 동기화가 수행된다. 단, OpenFrame의 기능을 사용하지 않고 사용자가 직접 DB에 접근해 수정했을 경우 수정 사항을 반영하기 위해 반드시 LOAD 명령을 수행해야 한다. ofconfig의 delete 명령으로 설정값을 삭제할 경우 데이터베이스에 저장된 해당하는 키의 환경설정 값이 완전히 삭제되므로 사용함에 있어서 주의를 요한다.

사용법

ofconfig를 실행하는 방법은 다음과 같다.

Usage: ofconfig command [options]
  • 입력 항목

    항목 설명

    command

    • ADD : 새로운 환경설정을 추가한다.

    • LIST : 환경설정을 조회한다.

    • UPDATE : 환경설정을 수정한다.

    • IMPORT : 환경설정 덤프 파일을 일괄적으로 불러온다. 동일한 키에 해당하는 설정 값이 있을 경우 수정된다.

    • EXPORT : 환경설정을 덤프 파일로 내보낸다.

    • LOAD : 환경설정 정보를 TCache에 반영한다.

    • TRUNCATE : 저장된 모든 환경설정 값을 삭제한다.

    • DELETE : 해당하는 키의 환경설정 값을 삭제한다.

  • [options]

    다음은 command 항목에 입력한 명령어별 옵션에 대한 설명이다.

    • ADD

      옵션 설명

      [-n nodename]

      노드 이름을 지정한다.

      [-s subject]

      서브젝트를 지정한다.

      [-sec section]

      섹션명을 지정한다.

      [-k key]

      키를 지정한다.

      [-t type]

      타입을 지정한다.

      • 1 : Yes, No

      • 2 : 문자열

      • 3 : 정수값

      [-d default_value]

      기본값을 지정한다.

      [-v value]

      값을 지정한다.

      [-a avail_value]

      지정 가능한 값을 명시한다.

      [-desc description]

      설명을 지정한다.

    • LIST

      옵션 설명

      [-n nodename]

      조회할 노드 이름을 지정한다.

      [-s subject]

      조회할 서브젝트를 지정한다.

      [-sec section]

      조회할 섹션명을 지정한다.

      [-k key]

      조회할 키를 지정한다.

      [-l long_format]

      상세 정보를 출력한다.

    • UPDATE

      옵션 설명

      [-n nodename]

      노드 이름을 지정한다.

      [-s subject]

      수정할 서브젝트를 지정한다.

      [-sec section]

      수정할 섹션명을 지정한다.

      [-k key]

      수정할 키를 지정한다.

      [-v value]

      수정할 값을 지정한다.

      [-desc description]

      수정할 설명을 지정한다.

    • IMPORT

      옵션 설명

      [-f file]

      불러 올 파일을 지정한다.

    • EXPORT

      옵션 설명

      [-n nodename]

      설정값을 가져올 노드 이름을 지정한다.

      [-f file]

      내보낼 파일을 지정한다.

    • TRUNCATE

      옵션 설명

      [-n nodename]

      설정을 초기화할 노드 이름을 지정한다.

    • DELETE

      옵션 설명

      [-n nodename]

      설정을 삭제할 노드 이름을 지정한다.

      [-s subject]

      설정을 삭제할 서브젝트 이름을 지정한다.

      [-sec section]

      설정을 삭제할 섹션을 지정한다.

      [-k key]

      설정을 삭제할 키를 지정한다.

사용예제

다음은 노드 NODE1에 새로운 환경설정 값을 정의하는 예제이다. OpenFrame 환경설정 중 ds 서브젝트, DATASET_DEFAULT 섹션의 문자열 타입 DEFAULT_VOLSER 키의 값으로 DEFVOL을 할당하고 있다.

$ ofconfig add -n NODE1 -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER -t 2 -d DEFVOL -v DEFVOL -desc "default volume serial."

다음은 노드 NODE1의 환경설정 값을 조회하는 예제이다.

$ ofconfig list -n NODE1 -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER

=====================================================================================
   SUBJECT   |        SECTION        |          KEY          |         VALUE
=====================================================================================
     ds      |    DATASET_DEFAULT    |     DEFAULT_VOLSER    |         DEFVOL
=====================================================================================

다음은 노드 NODE1 환경설정 값을 수정하는 예제이다.

$ ofconfig update -n NODE1 -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER -v 100001

다음은 노드 NODE1 환경설정 값을 삭제하는 예제이다.

$ ofconfig delete -n NODE1 -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER

환경설정 세부 항목에 대한 자세한 내용은 OpenFrame Base "환경설정 안내서"를 참고한다.

7. oferror

oferror는 OpenFrame에서 발생하는 에러에 대한 간략한 에러 번호, 에러 코드, 에러 메시지를 출력 또는 신규 에러 코드를 추가하는 툴이다. 여러 개의 에러 코드를 조회할 경우는 조회하려는 에러를 스페이스로 구분해서 기술한다.

사용법

oferror를 실행하는 방법은 다음과 같다.

Usage: oferror [ERRORNO]|[insert [-p path]]
  • 입력 항목

    항목 설명

    ERRORNO

    출력하려는 에러 번호이다.

    insert [-p path]

    추가하려는 에러 메시지 파일 경로를 지정한다.

사용예제

다음은 -1002에 해당하는 에러 내용을 조회하는 예이다.

$ oferror -1002
/*
/* error no  : -1002
/* error code: TSAM_ERR_DUPLICATE_KEY
/* error msg : duplicate key
/*

다음은 존재하지 않는 에러 코드를 조회한 경우 출력의 예이다.

$ oferror 23132
Not defined error no: 23132

다음은 에러 코드를 추가하는 예이다.

$ oferror insert –p errcode_base.msg

8. offile

offile은 OpenFrame 전 모듈에 대한 버전 트랙킹을 위한 툴이다.

다음과 같은 버전 정보 출력 기능을 제공한다.

  • 모듈의 버전 정보

    모듈의 버전 정보는 다음과 같은 형식으로 stdout(standard output)에 출력한다.

    {major}.{minor}.{patch}(module build number)
  • 모듈의 빌드 정보

    모듈의 빌드 정보는 다음과 같은 형식으로 stdout(standard output)에 출력한다.

    {id}{hostname}/{source tree}(#{product build number}) {date} {time}
사용법

offile를 실행하는 방법은 다음과 같다.

Usage: offile module1 [module2 ...]
  • 입력 항목

    항목 설명

    module1

    특정 모듈의 버전과 빌드 정보를 stdout으로 출력한다.

    [module2 …​]

    2개 이상의 모듈에 대한 버전과 빌드 정보를 한 번에 출력한다.

사용예제

다음은 $OPENFRAME_HOME/bin 디렉터리에서 tjesmgr이라는 OpenFrame Batch 모듈의 버전 정보와 빌드 정보를 출력하는 예이다.

$ offile ${OPENFRAME_HOME}/bin/tjesmgr
tjesmgr version 7.1.0(0), tmax@tgumdev:oframe_7_1_src/batch(#2) 2019-10-21 10:47:37

다음은 $OPENFRAME_HOME/bin 디렉터리에서 'ana’으로 끝나는 모든 모듈의 버전 정보와 빌드 정보를 출력하는 예이다.

$ offile *ana
ikjana version 7.1.0(0), tmax@tgumdev:oframe_7_1_src/base(#1) 2019-10-21 10:16:42
mspana version 7.1.0(0), tmax@tgumdev:oframe_7_1_src/base(#1) 2019-10-21 10:16:42
mvsana version 7.1.0(0), tmax@tgumdev:oframe_7_1_src/base(#1) 2019-10-21 10:16:42

9. ofversion

ofversion은 사용자가 현재 로그인해서 사용 중인 플랫폼에 설치된 OpenFrame 서브 제품의 종류와 각 서브 제품의 버전을 출력하는 툴이다.

사용법

다음과 같이 파라미터 없이 프로그램을 실행시킨다.

Usage: ofversion
사용예제

다음은 OpenFrame Base 서브 제품만 설치된 플랫폼에서 ofversion 프로그램을 실행시킨 예이다.

$ ofversion
ofversion version 7.1.0(0) tmax@tgumdev:oframe_7_1_src/base(#1) 2019-10-21 10:16:42
Print OpenFrame Version Information

OpenFrame Solution is Composed of
- OpenFrame Base 7.1 64bit
- OpenFrame Batch MSP 7.1 64bit
- OpenFrame TACF 7.1 64bit

10. tacflogin

tacflogin은 OpenFrame 사용자 정보의 중복 입력을 방지하고, 로그인을 간편하게 할 수 있게 도와주는 툴이다. OpenFrame 제품을 사용할 때 인증을 위해서 명령행 혹은 설정 파일에 사용자의 비밀번호를 입력해야 하는 경우가 있다. 사용자 정보의 중복적인 입력을 방지하기 위해 tacflogin은 USERID, GROUPNAME, PASSWORD의 사용자 정보가 유효한지 확인한 후 암호화 후 파일의 형태로 tacflogin을 실행한 셸의 TACFPASS 환경변수에 지정된 경로에 저장한다. TACFPASS 환경변수를 지정하지 않은 경우 UNIX 사용자의 홈 디렉터리에 암호화 파일을 저장한다. OpenFrame은 TACFPASS 환경변수에 지정된 경로에 저장된 사용자 정보를 복호화해서 TACF에 접근할 때 이용한다.

tacflogin의 로그인 단위는 사용자로써 tacflogin을 통해서 로그인하는 경우 사용자가 명시적으로 tacflogin 툴을 통해서 로그아웃하기 전까지 로그인 상태가 유지된다. 다시 말해서 tacflogin으로 로그인 후 tacflogin을 통해서 로그아웃하기 전까지 다수의 ssh 세션이 있어도 tacflogin 상태가 해지되지 않는다.

로그인이 필요한 OpenFrame 모듈은 사용자의 홈 디렉터리에 저장된 사용자 정보를 읽은 라이브러리를 통하여 TACF에 접근한다. 만약 이때 tacflogin을 통해서 사용자 정보가 저장되지 않았다면, OpenFrame 툴은 사용자로부터 대화형으로 사용자 정보를 요구한다.

tacflogin에 대한 로그인 처리는 다음과 같은 순서로 진행된다.

  • -i 옵션과 함께 USERID, GROUPNAME, PASSWORD를 입력해서 tacflogin에 로그인 처리한다.

  • 사용자로부터 직접 USERID, GROUPNAME, PASSWORD를 입력받아서 로그인 처리한다. 단, OpenFrame 환경설정의 saf 서브젝트 AUTH_OPTION 섹션에 ASKGRPNM 키의 VALUE 항목 값이 NO일 경우 GROUPNAME을 사용자로부터 요구하지 않는다.

다음 그림은 앞에서 설명한 OpenFrame 모듈 중 툴 tacflogin이 저장한 사용자 정보를 사용하는 순서이다.

figure tacflogin flow
OpenFrame 툴이 tacflogin에서 저장한 사용자 정보 사용과정
사용법

tacflogin를 실행하는 방법은 다음과 같다.

Usage: tacflogin [options]
  • [options]

    옵션 설명

    [-i]

    -iUSERID[GROUPNAME]/PASSWORD의 형태로 사용자 정보를 입력하며, 로그인에 쓰인다. 로그인 정보 중 'GROUPNAME’을 입력하지 않으면, 사용자는 그룹명의 입력을 요구받게 된다.

    그룹명을 생략하는 경우 -iUSERID[]/PASSWORD의 형태로 입력한다. 이 경우 TACF에 접근하는 그룹명은 TACF 사용자를 생성할 때 지정되는 디폴트 그룹이 된다.

    [-o]

    로그아웃할 때 사용되며, 사용자 정보를 삭제한다.

    [-l]

    현재 로그인된 ID를 보여준다.

    [-h]

    tacflogin의 사용법을 보여준다.

    no option

    옵션을 지정하지 않을 경우 대화식으로 사용자의 정보를 물어본다.

사용예제

다음은 USERID로 'TEST01’을 지정하고, PASSWORD로 'abcde’를 지정하는 예이다.

$ tacflogin -iTEST01/abcde
Input GROUPNAME :
Logged-in as [TEST01]

11. tconmgr

tconmgr는 Mainframe에서의 콘솔에 대응하는 가상의 OpenFrame 콘솔 프로그램이다. 사용자가 원하는 ID의 콘솔 메시지를 보고자 할 때 tconmgr 프로그램을 실행한다.

사용법

tconmgr의 실행 방법은 다음과 같다.

$ tconmgr [CONSOLE_ID]
  • 입력 항목

    항목 설명

    CONSOLE_ID

    0부터 99까지 입력할 수 있다. 현재 OpenFrame에서는 0번 이외의 값은 현재 사용되지 않고, 만약 CONSOLE_ID를 생략하면 0으로 처리된다. 출력 항목에서 모든 메시지도 0번으로 출력된다.

  • 출력 항목

    다음은 콘솔에서 메시지 앞부분의 출력 내용에 대한 설명이다. 각각의 항목은 세미콜론( ; )으로 구분되며 전체는 [ ]로 쌓여 있다.

    항목 설명

    Msg Source

    메시지의 출처로 COBOL, TCONMGR 등이 있다.

    Date Time

    메시지가 생성된 날짜 및 시간이다. (YYYYMMDD_HHMMSS 형식)

    Length

    메시지의 길이가 출력된다.

    Console ID

    메시지를 보낸 곳의 Console ID가 출력되며, 현재는 0만 출력된다.

    User

    일반적으로 메시지를 보낸 곳의 JOBID가 출력되며, JOBID가 없는 경우에는 사용자 이름일 수도 있다. 메시지의 출처가 TCONMGR인 경우에는 응답 대상의 JOBID가 출력된다.

    Process ID

    메시지를 보낸 곳의 UNIX의 PID가 출력된다. 메시지의 출처가 TCONMGR의 경우에는 응답 대상의 UNIX의 PID가 출력된다.

사용예제

다음은 콘솔의 일반적인 사용 흐름에 관한 예로 애플리케이션에서 콘솔에 메시지를 보내거나 응답을 요청하는 내용이다.

IDENTIFICATION DIVISION
…
ENVIRONMENT DIVISION
…
DATA DIVISION
…
WORKING-STORAGE SECTION.
03 BUFFER PIC X(10).
PROCEDURE DIVISION.
A SECTION.
DISPLAY “CONSOLE DISPLAY TEST” UPON CONSOLE.
ACCEPT BUFFER FROM CONSOLE.
EXIT.
STOP RUN

사용 흐름대로 DISPLAY, ACCEPT가 수행되는 과정은 다음과 같다.

  1. 다음의 명령어로 DISPLAY가 수행된다.

    DISPLAY “CONSOLE_DISPLAY_TEST” UPON CONSOLE.

    명령어가 수행된 후 콘솔 화면에 "CONSOLE_DISPLAY_TEST" 메시지가 출력된다.

    figure 3 2
    DISPLAY 실행 결과 화면
  2. 다음의 명령어로 ACCEPT가 수행된다.

    ACCEPT BUFFER FROM CONSOLE.

    명령어가 수행된 후 콘솔 화면에 "Accept request received!!!" 메시지가 출력된다.

    figure 3 3
    ACCEPT 실행 결과 화면
  3. 사용자는 ‘R’이라는 REPLY 명령을 통해서 응답 요구 메시지에 응답을 할 수 있다. ‘R’ 명령을 수행하면 콘솔 화면에 새로운 화면이 생성되어 응답을 요청한 메시지들의 리스트를 볼 수 있다. 사용자는 원하는 번호를 선택하여 응답 메시지를 보낼 수 있다.

    사용자가 REPLY 명령인 ‘R’을 실행하면 다음과 같은 화면이 나타난다.

    figure 3 4
    REPLY 실행 결과 화면
  4. REPLY 명령에서 요청 메시지 리스트에 0번을 선택하고 "OK"라는 메시지를 응답한 화면은 다음과 같다.

    figure 3 5
    OK 실행 후 화면 (1)
  5. "OK" 메시지를 입력하고 전송하면 다음과 같이 tconmgr에서 메시지를 응답하였다는 내용이 출력된다.

    figure 3 6
    OK 실행 후 화면 (2)

앞의 내용은 tconmgr를 종료하고 나면 화면에서 사라진다. 그러므로 이전의 내용들을 검색할 경우 ‘H’라는 HISTORY 명령을 통해서 검색할 수 있다.

다음은 HISTORY 명령을 통해서 이전 내용을 검색하는 화면이다.

figure 3 7
History 실행 후 화면

HISTORY 명령인 ‘H’를 수행하면 새로운 화면이 생성되고, 다음 조건 항목에 따라 이전 내용을 검색한다.

항목 설명

Process ID

UNIX의 PID이다.

User

일반적으로 JOBID를 의미한다. 단, JOBID가 없는 메시지의 경우는 다른 이름을 의미할 수도 있다.

Msg Source

메시지의 출처로 COBOL, TCONMGR 등이 있다.

Date

메시지가 생성된 날짜이다. 입력값이 없을 경우 당일의 내용을 검색한다.

Time

메시지가 생성된 시간이다. 주어진 시간 이후의 메시지만 검색된다.

예를 들어 Process ID를 5169로 입력하여 검색한 경우 다음과 같이 해당 화면이 나타난다.

figure 3 8
Process ID를 5169로 검색한 결과

12. vtamadm

vtamadm 툴은 시스템이 기동된 후 VTAM DB에 저장되어 있는 VTAM 리소스 정보를 출력한다.

사용법

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

OpenFrame VTAM Admin Tool
Usage: vtamadm [options1]
options1:
    -l                  Display active LU list of VTAM
    -d                  Display resource list of VTAM
    -w                  Display VTAM Gateway list
    -f {gateway name}   Remove VTAM Gateway information from DB forcely
                        Warning: Be careful to use this option !!
    -r {LU}             Remove active LU of VTAM specified forcely
                        Warning: Be careful to use this option !!
    -h                  Display this information
    -v                  Display version information
  • [options1]

    항목 설명

    [-l]

    현재 접속되어 있는 터미널의 정보를 출력한다.

    [-f] {gateway name}

    지정한 게이트웨이 정보를 DB에서 삭제한다.

    [-w]

    운영 중인 OpenFrame GW 정보를 출력한다.

    [-d]

    VTAM 리소스 정보를 출력한다.

    [-r] {LU}

    현재 접속 중인 단말을 강제로 끊는 기능을 한다.

    [-h]

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

    [-v]

    vtamadm 툴의 버전 정보를 출력한다.

    [-r] <LU> 옵션은 네트워크 장애 상황에서 터미널의 정보가 비정상일 때만 사용할 것을 권고한다.

사용예제

다음은 vtamadm를 사용하여 리소스 정보를 출력하는 예제이다.

$ vtamadm -d
VTAM IP-LU mapping resource Information

========================================================================================
PORT   IPGROUP           RANGE(BEGIN..END)                   IP
----------------------------------------------------------------------------------------
18100  IPGPAY            B:192.168.33.1    E:192.168.34.255

========================================================================================
PORT   GROUP TYPE        GROUP NAME  RANGE(BEGIN..END..RULE)             LU
----------------------------------------------------------------------------------------
18100  LUGROUP           LUGRP       B:OIVPTRM1  E:OIVPTRM9  R:FFFFFFFN

========================================================================================
PORT   GROUP TYPE        GROUP NAME  RANGE(BEGIN..END..RULE)             LU
----------------------------------------------------------------------------------------
18100  DEFAULTLUS                    B:TCP00081  E:TCP00099  R:FFFFFFNN

========================================================================================
PORT   MAP TYPE      LUGROUP         CLIENT ID       DEFAULT APPLID      OPTIONS
----------------------------------------------------------------------------------------
18100  LUMAP         LUGRP           IPGPAY          IMSA                SPECIFIC

========================================================================================

다음은 vtamadm -l를 사용하여 현재 접속되어 있는 터미널의 정보를 출력하는 예제이다. 출력되는 USERID 항목은 SIGNON된 유저의 ID이다.

$ vtamadm -l
Active LU information connected to VTAM

==========================================================================================================
NO.  LU        TYPE          CLID       NODENAME         IP_ADDR           LOGON_REGION    USERID
----------------------------------------------------------------------------------------------------------
  1  OSC00001  OSC REGION               NODE1
  2  OIVPTRM1  IBM-3278-2-E  5          NODE1            192.168.33.33     OSC00001        ROOT
  3  TSO       TSO                      NODE1
==========================================================================================================

13. vtamcmd

vtamcmd 툴은 사용자가 입력한 VTAM 명령어를 파싱하고 파싱된 명령어를 실행한다.

사용법

vtamcmd를 실행하는 방법은 다음과 같다.

OpenFrame VTAM Command Execution Tool
Usage: vtamcmd [options]
Options:
    -c <VTAM command>   Specify VTAM command and options
    -h                  Display this information
    -v                  Display version information
Example:
$ vtamcmd -c 'VARY NET,ACT,ID=NET00001'
  • [options]

    항목 설명

    [-c <VTAM command>]

    VTAM 명령어를 입력한다.

    • DISPLAY NET : 현재 VTAM에 등록되어 있는 단말이나 단말 그룹들의 상태를 보여준다.

    • VARY NET : 특정 단말을 활성화 또는 비활성화시킨다.

    • CLEAR NET : DISPLAY 명령어를 통해 출력되는 목록 중 표시를 원하는 않는 정보를 삭제한다.

    [-h]

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

    [-v]

    vtamcmd 툴의 버전 정보를 출력한다.

13.1. DISPLAY NET

현재 VTAM에 등록되어 있는 단말이나 단말 그룹들의 상태를 보여준다. DISPLAY 대신 약어로 D를 사용할 수 있다.

  • 사용법

    -+-DISPLAY-+-NET-,TERMS-
     '-D-------'
  • 예제

    다음은 단말 TESTTRM1이 비활성화되어 있는 상태를 보여주는 예제이다.

    vtamcmd -c 'DISPLAY NET,TERMS'
    1. INACT ID LIST
    =========================================================================================
    NO.  ID              TYPE            STATUS
    -----------------------------------------------------------------------------------------
    1    TESTTRM1        LU              INACT
    =========================================================================================
    
    2. ACT ID LIST
    =========================================================================================
    NO.  ID              TYPE            STATUS
    -----------------------------------------------------------------------------------------
    =========================================================================================
    DISPLAY COMMAND COMPLETE

13.2. VARY NET

특정 단말을 활성화 또는 비활성화시킨다. 단말을 비활성화시키는 경우 해당 단말로부터의 입력이 서버로 전달되지 않는다. VARY 대신 약어로 V를 사용할 수 있다.

  • 사용법

    -+-VARY-+-NET-+-,ACT---+-,ID=termid-
     '-V----'     '-,INACT-'
    오퍼랜드 설명

    ACT | INACT

    단말이나 단말 그룹의 활성화 또는 비활성화를 선택한다.

    termid

    활성화 또는 비활성화할 단말의 이름이나 단말 그룹명을 입력한다.

  • 예제

    다음은 단말 TESTTRM1을 비활성화시키는 예제이다.

    vtamcmd -c 'VARY NET,INACT,ID=TESTTRM1'

13.3. CLEAR NET

DISPLAY 명령어를 통해 출력되는 목록 중 표시를 원하는 않는 정보를 삭제한다. CLEAR로 삭제된 단말 또는 단말 그룹은 활성화 상태가 된다. CLEAR 대신 약어로 CL을 사용할 수 있다.

DISPLAY 명령어를 통해 출력되는 단말이나 단말 그룹만 CLEAR 명령어로 삭제 가능하다.

  • 사용법

    -+-CLEAR-+-NET-+-,ACT---+-ID=termid-
     '-CL----'     '-,INACT-'
    오퍼랜드 설명

    ACT | INACT

    삭제할 단말이나 단말 그룹이 활성화 또는 비활성화 중 어떠한 목록에 포함되어 있는지 선택한다.

    termid

    정보를 삭제할 단말의 이름이나 단말 그룹명을 입력한다.

  • 예제

    다음은 비활성화되어 있는 단말 TESTTRM1의 정보를 삭제하고 활성화시키는 예제이다.

    vtamcmd -c 'CLEAR NET,INACT,ID=TESTTRM1'

    다음은 비활성화되어 있는 단말 그룹 LUGRP1의 정보를 조회 후 삭제하고 활성화시키는 예제이다.

    vtamcmd -c 'DISPLAY NET,TERMS'
    1. INACT ID LIST
    =========================================================================================
    NO.  ID              TYPE            STATUS
    -----------------------------------------------------------------------------------------
    1    LUGRP1          LUGRP           INACT
    =========================================================================================
    
    2. ACT ID LIST
    =========================================================================================
    NO.  ID              TYPE            STATUS
    -----------------------------------------------------------------------------------------
    =========================================================================================
    DISPLAY COMMAND COMPLETE
    vtamcmd -c 'CLEAR NET,INACT,ID=LUGRP1'

14. vtamdump

VTAM DB에 저장된 VTAM 리소스 정보를 출력한다.

사용법

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

VTAM Definition Dump Utility

Usage: vtamdump [<file>]
     | vtamdump [-h | -v]

<file>   Specify output file name

    -h      Display this information
    -v      Display version information
  • 입력 항목

    항목 설명

    file

    VTAM 리소스 정보를 출력할 파일을 지정한다.

  • [options]

    항목 설명

    [-h]

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

    [-v]

    vtamdump 툴의 버전 정보를 출력한다.

15. vtamgen

vtamgen 툴은 BEGINVTAM 매크로를 컴파일하여 VTAM DB에 정보를 저장한다.

BEGINVTAM 매크로의 사용법은 OpenFrame GW "운영자 안내서"의 "LU 자동할당"을 참고한다.

사용법

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

VTAM Definition Generator
Usage: vtamgen <file>
     | vtamgen [options]
<file>      Specify definition script file
Options:
  -h            Display this information
  -v            Display version information
  • 입력 항목

    항목 설명

    file

    BEGINVTAM 구문이 정의된 텍스트 파일을 지정한다.

  • [options]

    항목 설명

    [-h]

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

    [-v]

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