openframe - tmaxsoft...z 제1장: openframe 툴 개요 각 장에서 다뤄질 툴의 전반적인...

147
OpenFrame 참조 안내서 소프트웨어 OpenFrame/Online v5.3 OpenFrame/Batch v4.0 안내서 버전 v1.2 Copyright © 2008 TamxSoft Co., Ltd. All Rights Reserved.

Upload: others

Post on 13-Feb-2020

38 views

Category:

Documents


0 download

TRANSCRIPT

OpenFrame 툴 참조 안내서

소프트웨어

OpenFrame/Online v5.3 OpenFrame/Batch v4.0

안내서 버전 v1.2

Copyright © 2008 TamxSoft Co., Ltd. All Rights Reserved.

OpenFrame 툴 참조 안내서 2

Copyright Notice

Copyright © 2008 TmaxSoft Co., Ltd. All Rights Reserved.

TmaxSoft Co., Ltd.

서울특별시 강남구 대치동 946-1글라스타워 18층 우)135-708

Restricted Rights Legend

This software and documents are made available under the terms of the TmaxSoft License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be reproduced, transmitted, or translated in any form or by any means, electronic, mechanical, manual, or optical, without the prior written consent of TmaxSoft Co., Ltd.

이 소프트웨어 및 안내서는 오직 TmaxSoft Co., Ltd.와의 사용권 계약 하에서만 이용이 가능하며, 사용권 계약에 따라서 사용하거나 복사할 수 있습니다. 또한 이 안내서에서 언급하지 않은 정보에 대해서는 보증 및 책임을 지지 않습니다. 이 안내서에 대한 권리는 저작권에 보호되므로 발행자의 허가 없이 전체 또는 일부를 어떤 형식이나, 사진 녹화, 기록, 정보 저장 및 검색 시스템과 같은 그래픽이나 전자적, 기계적 수단으로 복제하거나 사용할 수 없습니다.

Trademarks

Tmax, WebtoB, WebT, JEUS and OpenFrame are registered trademarks of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies.

Tmax, WebtoB, WebT, JEUS, OpenFrame은 TmaxSoft Co., Ltd.의 등록 상표입니다. 기타 모든 제품들과 회사 이름은 각각 해당 소유주의 상표로서 참조용으로만 사용됩니다.

안내서 정보

안내서 제목: OpenFrame 툴 참조 안내서

발행일: 2008년7월15일

소프트웨어 버전: OpenFrame/Online v5.3, OpenFrame/Batch v4.0

안내서 버전: v1.2

OpenFrame 툴 참조 안내서 3

연락처

Korea TmaxSoft Co., Ltd. 18F Glass Tower, 946-1, Daechi-Dong, Kangnam-Gu, Seoul 135-708 South Korea Tel: 82-2-6288-2114 Fax: 82-2-6288-2115 Email: [email protected] Website: http://www.tmax.co.kr

USA TmaxSoft, Inc. US Headquarter (San Jose) 130 Rio Robles San Jose, CA 95134, USA Tel: 1-408-321-2400 Fax: 1-408-321-2444 Email: [email protected] Website: http://www.tmaxsoft.com Sales Office (New Jersey) 560 Sylvan Ave, Englewood Cliffs NJ 07632, USA Tel: 1-201-567-8266 Fax: 1-201-567-7339 Email: [email protected] Website: http://www.tmaxsoft.com

Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: 81-3-5765-2550 Fax: 81-3-5765-2567 Email: [email protected] Website: http://www.tmaxsoft.co.jp

OpenFrame 툴 참조 안내서 4

China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chao yang District, Beijing, China, 100027 Tel: 86-10-6410-6145~8 Fax: 86-10-6410-6144 Email: [email protected] Website: http://www.tmaxsoft.com.cn Shanghai Office Room 4123, 41 Floor, China Development Bank Building, No.500 Pudong Road(s), Shanghai, China, 200120 Tel: 86-21-6109-5751 Fax: 86-21-6109-5750 Email: [email protected] Website: http://www.tmaxsoft.com.cn

OpenFrame 툴 참조 안내서 5

내용 목차

안내서에 대하여 ............................................................................................... 10

안내서의 대상 ........................................................................................................ 10

안내서의 전제 조건 ............................................................................................... 10

안내서 구성............................................................................................................ 11

안내서 규약............................................................................................................ 12

시스템 사용 환경 ................................................................................................... 13

관련 안내서............................................................................................................ 14

제1장 OpenFrame 툴 개요............................................................................. 15

1.1 툴 소개 ............................................................................................................ 15

제2장 OpenFrame 초기화 툴 ......................................................................... 17

2.1 tjesinit.............................................................................................................. 17

2.2 lockinit............................................................................................................. 18

2.3 mascat............................................................................................................. 19

2.4 voladd.............................................................................................................. 21

제3장 데이터 셋 툴 ......................................................................................... 25

3.1 dsview ............................................................................................................. 25

3.2 dsedit............................................................................................................... 27

3.3 dsload.............................................................................................................. 29

3.4 dssave ............................................................................................................. 32

3.5 dsmigin ........................................................................................................... 35

3.6 dsmigout ......................................................................................................... 41

3.7 cobgensch ...................................................................................................... 43

3.8 pligensch ........................................................................................................ 47

3.9 dslist................................................................................................................ 49

3.10 dsmove.......................................................................................................... 55

3.11 dstouch ......................................................................................................... 61

3.12 pdsgen .......................................................................................................... 63

제4장 HiDB 관련 툴........................................................................................ 65

4.1 hdmpgen ......................................................................................................... 65

OpenFrame 툴 참조 안내서 6

4.2 hdgensch ........................................................................................................ 66

4.3 hdprecon......................................................................................................... 69

4.4 hdload ............................................................................................................. 72

4.5 hdprfxres......................................................................................................... 76

4.6 hdprfxup.......................................................................................................... 78

제5장 온라인 시스템 툴 .................................................................................. 81

5.1 ofboot .............................................................................................................. 81

5.2 ofdown ............................................................................................................ 82

5.3 ofadmin ........................................................................................................... 83

5.4 ofmadmin ........................................................................................................ 87

5.5 ofmsvr ............................................................................................................. 89

5.6 ofclient ............................................................................................................ 90

5.7 osddump......................................................................................................... 94

5.8 osdgen ............................................................................................................ 95

5.9 oscresp ........................................................................................................... 97

5.10 osccheck....................................................................................................... 98

5.11 osccblpp...................................................................................................... 100

5.12 mscasmc..................................................................................................... 101

5.13 mscmapc..................................................................................................... 102

5.14 msimapc...................................................................................................... 104

제6장 운영 편의를 위한 툴 ........................................................................... 109

6.1 icfscan........................................................................................................... 109

6.2 icfspchk......................................................................................................... 111

6.3 icfdump ......................................................................................................... 114

6.4 icfload............................................................................................................ 115

6.5 jclview ........................................................................................................... 116

6.6 textrun ........................................................................................................... 123

6.7 dlupdate ........................................................................................................ 126

6.8 dlclean........................................................................................................... 127

6.9 enpasswd...................................................................................................... 128

6.10 oferror ......................................................................................................... 129

제7장 기타 툴 ................................................................................................ 131

7.1 cobolprep...................................................................................................... 131

7.2 dliprep ........................................................................................................... 134

OpenFrame 툴 참조 안내서 7

7.3 offile............................................................................................................... 135

7.4 tplipp ............................................................................................................. 136

7.5 jobattr ............................................................................................................ 138

7.6 excicblpp....................................................................................................... 146

OpenFrame 툴 참조 안내서 8

그림 목차

[그림 3-1] PL/I 스키마 파일 생성과 OpenFrame 데이터 셋 생성 과정 ................................. 47

[그림 4-1] 입/출력 데이터 셋 형식............................................................................................ 70

[그림 4-2] 출력 파일 형식 ......................................................................................................... 76

[그림 6-1] 초기화면 .................................................................................................................. 119

[그림 6-2] 메뉴선택 화면 ......................................................................................................... 119

[그림 6-3] JCL 파일 open 후 화면.......................................................................................... 120

[그림 6-4] 데이터 셋 정보열람 화면 ....................................................................................... 120

[그림 6-5] GDG 멤버 정보조회 화면....................................................................................... 121

[그림 6-6] 데이터 셋 검색 화면 .............................................................................................. 121

[그림 7-1] tplipp 구조................................................................................................................ 136

OpenFrame 툴 참조 안내서 9

표 목차

[표 0-1] 안내서 규약 .................................................................................................................. 12

[표 0-2] 시스템 사용 환경 ......................................................................................................... 13

[표 0-3] OpenFrame 관련 안내서 .............................................................................................. 14

[표 3-1] dsview 명령어 ............................................................................................................... 26

[표 3-2] dsedit 명령어................................................................................................................. 28

[표 3-3] dsmigin 시 ASCII 변환 코드........................................................................................ 37

[표 3-5] dsmigout 시 ASCII 코드............................................................................................... 41

[표 6-1] jclview 메뉴 구성 ........................................................................................................ 118

[표 6-2] jclview 단축키 구성..................................................................................................... 118

[표 7-1] 일반 옵션 .................................................................................................................... 131

[표 7-2] 변환 및 추가 옵션 ..................................................................................................... 132

[표 7-3] 디버깅 관련 옵션 ....................................................................................................... 132

[표 7-4] 전처리 옵션 ................................................................................................................ 133

[표 7-5] 전처리 결과 옵션 ....................................................................................................... 133

[표 7-6] 프로젝트별 특별 옵션 ................................................................................................ 133

[표 7-7] tplipp 옵션 ................................................................................................................... 138

안내서에 대하여

OpenFrame 툴 참조 안내서 10

안내서에 대하여

안내서의 대상

본 안내서는 리호스팅 솔루션인 OpenFrame에서 필요로 하는 각종 툴 프로그램

을 사용하는 사용자를 대상으로 기술한다.

안내서의 전제 조건

본 안내서를 정확히 사용하려면 OpenFrame의 개념을 이해하고 있어야 한다.

OpenFrame에 대한 이해를 돕기 위해 “시작하기 안내서”와 “Batch 안내서”를 먼

저 숙지할 것을 권장한다.

안내서에 대하여

OpenFrame 툴 참조 안내서 11

안내서 구성

툴 참조 안내서는 총 7개의 장으로 구성되어 있다.

각 장의 주요 내용은 다음과 같다.

제1장: OpenFrame 툴 개요

각 장에서 다뤄질 툴의 전반적인 개요에 대해 기술한다.

제2장: OpenFrame 초기화 툴

OpenFrame 초기화 툴 프로그램인 tjesinit, lockinit, mascat, voladd를 사용하

여 OpenFrame을 초기화하는 방법에 대해 기술한다.

제3장: 데이터 셋 툴

데이터 셋 툴 프로그램인 dsview, dsedit, dsload, dssave, dsmigin, dsmigout,

dslist, dsmove, dstouch, pdsgen을 사용하여 여러 가지 데이터 셋 관련 작업

을 처리하기 위한 방법에 대해 기술한다.

제4장: HiDB 툴

HiDB 툴 프로그램인 hdgensch, hdload, hdmpgen, hdprecon, hdprfxres,

hdprfxup를 사용하여 HiDB 관련 작업을 수행하는 방법에 대해 기술한다.

제5장: 온라인 시스템 툴

온라인 시스템에서 필요로 하는 ofboot, ofdown, ofadmin, ofmadmin, ofmsvr,

ofclient, osddump, osdgen, osccblpp, mscasmc, mscmapc, msimapc 등을 사용

하는 방법에 대해 기술한다.

제6장: 운영 편의를 위한 툴

icfscan, icfspchk, icfdump, icfload, jclview, textrun, dlclean, dlupdate, enpasswd,

oferror 등 운영 편의를 위해 제공되는 툴을 사용하는 방법에 대해 기술한다.

제7장: 기타 툴

사용자 편의를 위해 제공되는 OpenFrame 초기화 툴, 데이터 셋 툴, HiDB 관

련 툴, 운영 편의를 위한 툴 그리고 온라인 시스템 툴 외에 cobolprep,

dliprep, cobgensch, pligensch, offile, tplipp, jobattr 툴을 사용하는 방법에 대해

기술한다.

안내서에 대하여

OpenFrame 툴 참조 안내서 12

안내서 규약

표기 의미

AaBbCc123 명령어

AaBbCc123 명령어 수행 후 화면에 출력된 결과물

참고: 참고 또는 주의 사항

{ } 필수 인수값

[ ] 옵션 인수값

| 선택 인수값

“ ” (따옴표) 다른 관련 안내서 또는 안내서 내의 다른 장 및 절

언급

하이퍼링크 메일계정, 웹 사이트, 다른 장 및 절 참고

진하게 강조

<AaBbCc123> 프로그램 소스 코드의 파일명, 디렉터리 이름

Courier New 파일, 디렉터리 이름, 환경설정 변수

_ 스페이스

..., +, * 파라미터 등이 반복되어 나옴

[그림 1-1] 그림 이름

[표 1-1] 표 이름

[표 0-1] 안내서 규약

안내서에 대하여

OpenFrame 툴 참조 안내서 13

시스템 사용 환경

요구사항

Platform IBM AIX 5.x

HP-UX 11.xx

Solaris 9 (SunOS 5.9)

Hardware 최소 120MB 하드디스크 공간

256MB 이상 메모리 공간

1GB 이상 하드디스크와 512MB 이상 메모리 공간 권장

Database Tibero 3.0

Oracle 9i 또는 10g

Compiler MF-Cobol 컴파일러

[표 0-2] 시스템 사용 환경

안내서에 대하여

OpenFrame 툴 참조 안내서 14

관련 안내서

제품 안내서

OpenFrame 시작하기 안내서

배치 안내서

유틸리티 안내서

TJES 안내서

데이터 셋 안내서

TSAM 안내서

HiDB 안내서

OSC 운영자 안내서

OSI 운영자 안내서

[표 0-3] OpenFrame 관련 안내서

제1장 OpenFrame 툴 개요

OpenFrame 툴 참조 안내서 15

제1장 OpenFrame 툴 개요

1.1 툴 소개

OpenFrame 툴 프로그램은 배치 JOB을 실행하는데 있어서 직접적으로 사용되지

않고, Mainframe에서 사용되었던 JCL이나 데이터 셋, 데이터베이스 등을 마이그

레이션하는 과정에서 편의성을 위해 제공되거나 OpenFrame 시스템을 운영하는

데 필요한 기능들을 제공한다.

본 안내서에서는 2장에서 OpenFrame 초기 설정을 위한 툴, 3장에서는 데이터 셋

을 조작하는 툴, 4장에서는 HiDB 관련 데이터 전환을 위한 툴, 5장에서는 온라인

시스템을 위한 툴, 6장에서는 OpenFrame 운영상 편의를 위해 제공되는 툴, 7장

에서는 기타 툴을 소개하며, 각 절에서는 툴의 소개와 기능, 사용법, 사용예제,

관련 환경설정 및 유의사항을 기술한다.

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 17

제2장 OpenFrame 초기화 툴

2.1 tjesinit

tjesinit은 OpenFrame 배치에서 시스템 데이터 셋뿐만 아니라 JOBQ와 SPOOL

등을 초기화하기 위해 사용되는 프로그램이다.

OpenFrame 시스템 초기화 작업을 담당하는 tjesinit은 시스템을 초기화할 때 다

음을 수행한다.

- JESST 초기화

tjes.conf로부터 JOBQ 크기, OUTPUTQ 크기, NODELIST 등을 읽어

SYSx.JESST를 초기화 한다.

- JOBQ 초기화

JOBQ에 등록된 모든 내용을 삭제한다.

- OUTPUTQ 초기화

OUTPUTQ에 등록된 모든 내용을 삭제한다.

- SPOOL 초기화

SPOOL 볼륨내의 TJES 관련 데이터를 모두 삭제한다.

다음의 주의사항을 주지한 권한이 있는 시스템 관리자가 tjesinit을 수행한다.

- TSAM은 사용 가능한 상태이어야 한다.

- OpenFrame 엔진(TMAX)은 기동되지 않은 상태이어야 한다.

- JOB의 수행내역이 백업되지 않고 삭제된다.

참고: OpenFrame 시스템을 완전히 초기화하기 위해서는 lockinit 툴을 이용하여 데이터 셋 lock을 초기화해야 한다.

사용법

tjesinit 프로그램을 실행하는 방법은 다음과 같다.

Usage: tjesinit

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 18

사용예제

다음은 TJES를 초기화하는 예이다.

$ tjesinit

참고: 관련 툴 프로그램으로는 lockinit이 있다.

2.2 lockinit

lockinit은 배치시스템을 부팅하기 전에 초기화 처리로써 lock 데이터 셋 혹은 로

그 데이터 셋을 제거(truncate)하는 프로그램이다.

lockinit은 lock 데이터 셋과 로그 데이터 셋을 제거 시에 해당 데이터 셋에 대해

서 별도의 백업을 하지 않는다. 또한 배치시스템이 기동 중일 때에는 lockinit을

사용해서는 안된다.

사용법

lockinit 프로그램을 실행하는 방법은 다음과 같다.

Usage: lockinit

| lockinit –l

| lockinit -d

- lockinit

환경설정 파일 ds.conf [LOCK_SERVER] 섹션의 LOG_DATASET과

LOCK_DATASET에 지정된 로그 및 lock 데이터 셋 모두를 제거한다.

- lockinit -l

환경설정 파일 ds.conf [LOCK_SERVER] 섹션의 LOG_DATASET에 지정된

로그 데이터 셋을 제거한다.

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 19

- lockinit -d

환경설정 파일 ds.conf [LOCK_SERVER] 섹션의 LOCK_DATASET에 지정된

lock 데이터 셋을 제거한다.

사용예제

다음은 로그 데이터 셋 및 lock 데이터 셋을 모두 제거하는 예이다.

$ lockinit

다음은 로그 데이터 셋을 제거하는 예이다.

$ lockinit –l

다음은 lock 데이터 셋을 제거하는 예이다.

$ lockinit –d

Appendix

lockinit을 실행했을 때 문제가 발생한 경우에는 먼저 ds.conf [TSAM_CLIENT]

섹션에 정의된 DATABASE 설정 값을 확인하고 정상적으로 데이터베이스에 접속

이 되는지를 확인한다. 또한 동일 설정파일의 [LOCK_SERVER] 섹션의

LOG_DATASET과 LOCK_DATSET에 지정된 데이터 셋 이름이 정확한지를 확인한

다.

2.3 mascat

mascat은 OpenFrame 제품을 처음 설치할 때, 마스터 카탈로그를 생성해주는 프

로그램이다.

OpenFrame 제품을 처음 설치할 때, 데이터 셋과 관련해서 기본적으로 수행해야

하는 절차는 다음과 같다.

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 20

디바이스 및 볼륨 설정

디바이스에 대한 설정파일인 unit.conf 파일과 볼륨에 대한 설정파일인

volume.conf 파일을 OpenFrame 운영환경에 맞게 설정한다.

Non-VSAM 볼륨 디렉터리 생성

UNIX 명령어인 mkdir을 사용해서 volume.conf 파일에 설정된 대로 볼륨 디렉

터리를 생성한다.

VSAM 볼륨 테이블 스페이스 생성

VSAM 데이터 셋이 저장되는 공간인 데이터베이스 테이블 스페이스를 생성한다.

(SQL 명령어 CREATE TABLESPACE 사용)

마스터 카탈로그 생성

OpenFrame 제품과 같이 배포되는 mascat 프로그램을 사용해서 마스터 카탈로

그를 생성한다.

VVDS (VSAM Volume Dataset) 데이터 셋 생성 및 등록

OpenFrame 제품과 같이 배포되는 voladd 프로그램을 사용해서 각 볼륨 별로

VVDS 데이터 셋을 생성하고 마스터 카탈로그에 등록한다.

사용법

mascat 프로그램을 실행하는 방법은 다음과 같다.

Usage: mascat create {dsname} {volser}

| mascat remove {dsname}

- create

마스터 카탈로그를 생성한다.

- remove

마스터 카탈로그를 제거한다.

- {dsname}

마스터 카탈로그의 이름을 지정한다.

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 21

- {volser}

마스터 카탈로그가 생성될 볼륨 시리얼이나 제거할 마스터 카탈로그가 등록

된 볼륨 시리얼을 지정한다.

사용예제

아래 예제는 100000이라는 볼륨에 SYS1.MASTER.ICFCAT 이라는 이름으로 마

스터 카탈로그를 생성하는 예이다.

$ mascat create SYS1.MASTER.ICFCAT 100000

관련 환경설정

mascat 프로그램은 마스터 카탈로그 VSAM 데이터 셋을 생성하기 위해

ds.conf 설정파일의 [SYS1_CLIENT] 섹션에 기술된 TSAM 서버로 접속한다.

mascat 프로그램으로 생성된 마스터 카탈로그 VSAM 데이터 셋을 OpenFrame

카탈로그로 사용하기 위해서는 카탈로그 접속정보를 ds.conf 설정파일의

[ICF_STORAGE] 섹션과 [ICF_BACKUP] 섹션에 등록해 주어야 한다.

mascat 프로그램으로 생성된 마스터 카탈로그는 ds.conf 설정파일의

[ICF_CATALOG] 섹션에 등록해 주어야 한다.

위의 사용예제에서 생성된 마스터 카탈로그를 ds.conf 설정파일에 다음과 같이

설정해 주어야 한다.

[ICF_CATALOG]

MASCAT_VSER=100000

MASCAT_NAME=SYS1.MASTER.ICFCAT

2.4 voladd

voladd는 OpenFrame 제품을 처음 설치할 때, VVDS 데이터 셋을 생성하고 마스

터 카탈로그에 등록해 주는 프로그램이다. OpenFrame 제품을 운용 중에 볼륨을

추가하는 경우에도 사용된다.

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 22

OpenFrame 제품을 처음 설치할 때, 데이터 셋과 관련해서 기본적으로 수행해야

하는 절차는 다음과 같다.

디바이스 및 볼륨 설정

디바이스에 대한 설정파일인 unit.conf 파일과 볼륨에 대한 설정파일인

volume.conf 파일을 OpenFrame 운영환경에 맞게 설정한다.

Non-VSAM 볼륨 디렉터리 생성

UNIX 명령어인 mkdir을 사용해서 volume.conf 파일에 설정된 대로 볼륨 디렉

터리를 생성한다.

VSAM 볼륨 테이블 스페이스 생성

VSAM 데이터 셋이 저장되는 공간인 데이터베이스 테이블 스페이스를 생성한다.

(SQL 명령어 CREATE TABLESPACE 사용)

마스터 카탈로그 생성

OpenFrame 제품과 같이 배포되는 mascat 프로그램을 사용해서 마스터 카탈로

그를 생성한다.

VVDS (VSAM Volume Dataset) 데이터 셋 생성 및 등록

OpenFrame 제품과 같이 배포되는 voladd 프로그램을 사용해서 각 볼륨 별로

VVDS 데이터 셋을 생성하고 마스터 카탈로그에 등록한다.

사용법

voladd 프로그램을 실행하는 방법은 다음과 같다.

Usage: voladd define {volser}

| voladd delete {volser}

- define

VVDS 데이터 셋을 정의한다.

- delete

VVDS 데이터 셋을 삭제한다.

제2장 OpenFrame 초기화 툴

OpenFrame 툴 참조 안내서 23

- {volser}

정의하거나 삭제하려고 하는 볼륨의 시리얼 번호를 지정한다.

사용예제

아래는 100000이라는 볼륨에 VVDS 데이터 셋을 생성하고 카탈로그에 등록하는

예이다.

$ voladd define 100000

아래는 VSPOOL이라는 볼륨에 VVDS 데이터 셋을 생성하고 마스터 카탈로그에

등록했다가 삭제하는 예이다.

$ voladd define VSPOOL

$ voladd delete VSPOOL

관련 환경설정 ds.conf [SYS1_CLIENT]

voladd 프로그램이 VVDS 데이터 셋을 생성하기 위해 접속하는 TSAM 서버 정보

가 설정되어 있다.

ds.conf [ICF_STORAGE]

voladd 프로그램이 VVDS 데이터 셋을 카탈로그에 등록하기 위해 접속하는

TSAM 서버 정보가 설정되어 있다.

주의: VVDS 데이터 셋도 ICF 카탈로그의 일부이므로 VVDS 데이터 셋을 생성하기 전에 ds.conf 설정파일의 [SYS1_CLIENT] 섹션의 내용이 [ICF_STORAGE] 섹션의 내

용과 동일한지 확인이 필요하다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 25

제3장 데이터 셋 툴

3.1 dsview

dsview는 데이터 셋의 내용을 보여준다.

사용법

dsview 프로그램을 실행하는 방법은 다음과 같다.

Usage: dsview [-s] dataset_name [member_name] [-c user_catalog]

- [-s]

시스템 데이터 셋의 내용을 보고자 할 때 사용하는 옵션이다.

설정 파일 중 ds.conf의 [SYS1_CLIENT] 섹션과 [TSAM_CLIENT] 섹션의

접속 계정이 같은 경우에는 옵션에 상관없이 시스템 데이터 셋의 내용을 볼

수 있다.

- dataset_name

보고자 하는 데이터 셋의 이름을 지정한다.

- [member_name]

보고자 하는 데이터 셋의 멤버 이름을 지정한다.

- [-c user_catalog]

보고자 하는 데이터 셋이 사용자 카탈로그에 등록되어있는 경우 이 옵션을

설정한다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터 셋 이름

만으로 찾을 수 있는 경우에는 이 옵션을 주지 않아도 된다.

참고: 자세한 내용은 “데이터 셋 안내서”의 “제4장 통합 카탈로그의 카탈로그 관리”를 참고

한다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 26

dsview에서 사용할 수 있는 명령어는 다음과 같다.

명령어 설명

CTRL+b 이전 페이지

CTRL+f 다음 페이지

^ 현재 행의 첫 문자로 이동

$ 현재 행의 마지막 문자로 이동

125G 125 라인으로 이동

:125 125 라인으로 이동

G 마지막 행으로 이동

h,j,k,l 왼쪽, 위쪽, 아래쪽, 오른쪽으로 이동

숫자를 앞에 붙이면 숫자만큼 이동한다.

예) 5h - 5칸 왼쪽으로 이동한다.

/abc abc를 검색

/abc 5 5행에서 abc를 검색

//616263 Hexa code로 검색

n 다음 검색

CTRL+l 화면 새로고침

:h 도움말

:q 종료

[표 3-1] dsview 명령어

사용예제

시스템 데이터 셋의 내용을 보여주는 예이다.

$ dsview -s SYS1.JOBQ

데이터 셋에 속한 멤버의 내용을 보여주는 예이다.

$ dsview AAA.PDS TESTPGM

사용자 카탈로그에 등록되어 있는 데이터 셋의 내용을 보여주는 예이다.

$ dsview AAA.BBB -c USERCAT

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 27

관련 환경설정 dstool.conf [DSVIEW] NOCATALOG_VIEW=[YES|NO]

카탈로그에 등록되어 있지 않은 Non-VSAM 데이터 셋의 내용을 보기 위한 설정

이다.

NOCATALOG_VIEW=YES를 지정하면, 카탈로그에 등록되어 있지 않은 데이터

셋이라도 디폴트 볼륨에 있는 Non-VSAM 데이터 셋의 내용을 볼 수 있다.

NOCATALOG_VIEW=NO를 지정하면, 카탈로그에 등록되어 있지 않은 데이터 셋

의 내용은 볼 수 없다.

참고: 데이터 셋에 대한 자세한 내용은 “데이터 셋 안내서”를 참고한다.

3.2 dsedit

dsedit은 dsview에서 좀더 발전된 형태로 데이터 셋의 내용을 보여주고 데이터

셋의 내용을 변경을 할 수 있다.

변경은 Replace만이 가능하다. 변경이 가능하기 때문에 데이터 셋에 lock을 독점

적으로(exclusive) 건다.

시용법

dsedit 프로그램을 실행하는 방법은 다음과 같다.

Usage: dsedit [-s] dataset_name [member_name] [-c user_catalog]

- [-s]

시스템 데이터 셋의 내용을 보고자 할 때 사용하는 옵션이다.

설정 파일 중 ds.conf 파일의 [SYS1_CLIENT] 섹션과 [TSAM_CLIENT]

섹션의 접속 계정이 같은 경우에는 옵션에 상관없이 시스템 데이터 셋의 내

용을 볼 수 있다.

- dataset_name

보고자 하는 데이터 셋의 이름이다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 28

- [member_name]

보고자 하는 데이터 셋의 멤버 이름이다.

- [-c user_catalog]

보고자 하는 데이터 셋이 사용자 카탈로그에 등록되어있는 경우 이 옵션을

설정한다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터 셋 이름

만으로 찾을 수 있는 경우에는 이 옵션을 주지 않아도 된다.

참고: 자세한 내용은 “데이터 셋 안내서”의 “제4장 통합 카탈로그의 카탈로그 관리”를 참

고한다.

dsedit에서 사용할 수 있는 명령어는 다음과 같다.

명령어 설명

CTRL+b 이전 페이지

CTRL+f 다음 페이지

^ 현재 행의 첫 문자로 이동

$ 현재 행의 마지막 문자로 이동

125G 125 라인으로 이동

:125 125 라인으로 이동

G 마지막 행으로 이동

h,j,k,l 왼쪽, 위쪽, 아래쪽, 오른쪽으로 이동

숫자를 앞에 붙이면 숫자만큼 이동한다.

예) 5h - 5칸 왼쪽으로 이동한다.

/abc abc를 검색

/abc 5 5행에서 abc를 검색

//616263 Hexa code로 검색

n 다음 검색

R Replace 모드의 시작이다. VSAM의 key는 변경할 수 없다.

ESC Replace한 내용을 저장한다.

Backspace Replace 모드 중에 변경 내용을 되돌린다.

CTRL+l 화면 새로고침

:h 도움말

:q 종료

[표 3-2] dsedit 명령어

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 29

사용예제

시스템 데이터 셋의 내용을 보여주는 예이다.

$ dsedit -s SYS1.JOBQ

데이터 셋에 속한 멤버의 내용을 보여주는 예이다.

$ dsedit AAA.PDS TESTPGM

사용자 카탈로그에 등록되어 있는 데이터 셋을 보고자 할 경우

$ dsedit AAA.BBB -c USERCAT

관련 환경설정 dstool.conf [DSVIEW] NOCATALOG_VIEW=[YES|NO]

카탈로그에 등록되어 있지 않은 Non-VSAM 데이터 셋의 내용을 보기 위한 설정

이다.

NOCATALOG_VIEW=YES를 지정하면, 카탈로그에 등록되어 있지 않은 데이터

셋이라도 디폴트 볼륨에 있는 Non-VSAM 데이터 셋의 내용을 볼 수 있다.

NOCATALOG_VIEW=NO를 지정하면, 카탈로그에 등록되어 있지 않은 데이터 셋

의 내용은 볼 수 없다.

참고: 데이터 셋에 대한 자세한 내용은 “데이터 셋 안내서”를 참고한다.

3.3 dsload

dsload는 dsedit의 기능을 보완하기 위한 툴로서 Non-VSAM 데이터 셋을 UNIX

파일로 백업하는 기능을 제공한다. 이후 백업한 파일을 열어서 내용을 수정한 후

dssave 툴을 사용하여 파일을 데이터 셋으로 올릴 수 있다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 30

사용법

dsload 프로그램을 실행하는 방법은 다음과 같다.

Usage: dsload dataset_name [-m member_name] [-t target filepath] [-f]

[-d delimiter] [-c user_catalog]

- dataset_name

파일로 내리고자 하는 데이터 셋의 이름이다.

- [-m member_name]

파일로 내리고자 하는 데이터 셋의 멤버 이름이다.

- [-t target filepath]

타깃 파일의 UNIX 파일경로이다.

이 옵션을 주지 않은 경우, 아래의 환경설정 중 LOAD_DIR에 지정된 디렉터

리를 타깃 UNIX 파일경로로 사용하고, 데이터 셋 이름과 동일한 파일을 생

성한다.

- [-f]

대상 파일이 이미 존재하는 경우 기존의 파일을 덮어쓰기 한다.

- [-d delimiter]

데이터 셋 레코드 사이의 delimiter를 지정한다.

특별히 newline으로 하고자 하는 경우 ‘NEWLINE’이라고 지정한다.

이 옵션을 주지 않은 경우, 아래의 환경설정 중에 DELIMITER의 값을 참조

한다.

- [-c user_catalog]

백업하려는 데이터 셋이 사용자 카탈로그에 등록되어있는 경우에 설정한다.

단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터 셋 이름 만으로 찾을

수 있는 경우에는 이 옵션을 주지 않아도 된다.

참고: 자세한 내용은 “데이터 셋 안내서”의 “제4장 통합 카탈로그의 카탈로그 관리”를 참

고한다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 31

사용예제

데이터 셋을 UNIX 파일로 백업하는 일반적인 예이다.

$ dsload AAA.BBB

데이터 셋의 멤버를 UNIX 파일로 백업하는 예이다.

$ dsload AAA.PDS -m MEMBER01

사용자 카탈로그에 등록되어 있는 데이터 셋을 UNIX 파일로 백업하는 예이다.

$ dsload AAA.BBB -c USERCAT

데이터 셋을 UNIX 파일로 백업하되, UNIX 상에 동일한 파일이 존재할 경우 덮어

쓰기 하는 예이다.

$ dsload AAA.BBB –f

데이터 셋을 UNIX 파일로 백업하며, 레코드간의 delimiter를 %%으로 지정하는

예이다.

$ dsload AAA.BBB -d %%

관련 환경설정 dstool.conf [DSLOAD] SIZE_LIMIT

dsload시 데이터 셋의 크기를 제한한다. 설정된 값보다 작은 크기의 데이터 셋만

사용 가능하다. 0보다 큰 수를 지정한다.

dstool.conf [DSLOAD] LOAD_DIR

dsload시에 파일을 생성할 UNIX 디렉터리 경로를 지정한다. LOAD_DIR과 [-t

target filepath] 옵션을 둘 다 설정하지 않은 경우 에러가 발생한다.

dstool.conf [DSLOAD] DELIMITER

dsload시에 레코드의 delimiter로 문자 또는 ‘NEWLINE’을 지정한다. DELIMITER

와 [-d delimiter] 옵션을 둘 다 설정하지 않은 경우 delimiter는 NULL 스트링이다.

참고: 관련 툴 프로그램으로는 dssave이 있다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 32

3.4 dssave

dssave는 dsedit의 기능을 보완하기 위한 툴로서 변경하고자 하는 데이터 셋을

dsload를 통해서 UNIX 파일로 백업하여 변경한 후, 변경한 UNIX 파일을 Non-

VSAM 데이터 셋으로 올리는 기능을 한다.

새로 데이터 셋을 생성하지 않고, 카탈로그에 이미 등록되어 있는 데이터 셋에만

덮어쓰기한다.

사용법

dssave 프로그램을 실행하는 방법은 다음과 같다.

Usage: dssave dataset_name [-m member_name] [-s source filepath] [-b]

[-d delimiter] [-r] [-t] [-c user_catalog]

- dataset_name

올리고자 하는 데이터 셋의 이름이다.

- [-m member_name]

올리고자 하는 데이터 셋의 멤버 이름이다.

- [-s source filepath]

소스 파일의 UNIX 파일경로이다.

이 옵션을 주지 않은 경우, 아래의 환경설정 중 LOAD_DIR에 지정된 디렉터

리를 소스 UNIX 파일경로로 사용하고, 이 디렉터리 상에서 데이터 셋 이름

으로 파일을 찾는다.

- [-b]

타깃 데이터 셋의 레코드 포맷(RECFM)이 FB(Fixed Block)일 때, 소스 파일

의 한 레코드의 길이가 짧다면 그 길이만큼 레코드의 뒷부분을 스페이스로

채워준다.

- [-d delimiter]

데이터 셋 레코드 사이의 delimiter를 지정한다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 33

특별히 newline으로 하고자 하는 경우 ‘NEWLINE’이라고 지정한다.

이 옵션을 주지 않은 경우, 아래의 환경설정 중에 DELIMITER의 값을 참조

한다.

- [-r ]

데이터 셋으로 올리고 난 후 소스 파일을 삭제한다.

- [-t]

소스 파일을 데이터 셋으로 올릴 수 있는지 레코드의 길이, 포맷, delimiter를

확인한다.

- [-c user_catalog]

올리고자 하는 데이터 셋이 사용자 카탈로그에 등록되어있는 경우에 설정한

다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터 셋 이름 만으로

찾을 수 있는 경우에는 이 옵션을 주지 않아도 된다.

참고: 자세한 내용은 “데이터 셋 안내서”의 “제4장 통합 카탈로그의 카탈로그 관리”를 참

고한다.

사용예제

UNIX 파일을 Non-VSAM 데이터 셋으로 올리는 일반적인 예이다.

$ dssave AAA.BBB

UNIX 파일을 Non-VSAM 데이터 셋의 멤버로 올리는 예이다.

$ dssave AAA.PDS -m MEMBER01

UNIX 파일을 사용자 카탈로그에 등록된 Non-VSAM 데이터 셋으로 올리는 예이

다.

$ dssave AAA.BBB -c USERCAT

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 34

RECFM=FB인 Non-VSAM 데이터 셋으로 올리는 경우 부족한 레코드 길이를 스

페이스로 채우는 예이다.

$ dssave AAA.BBB –b

데이터 셋 레코드간의 delimiter를 %%으로 지정하는 예이다.

$ dssave AAA.BBB -d %%

UNIX 파일을 데이터 셋으로 올린 후 소스 파일을 삭제하는 예이다.

$ dssave AAA.BBB –r

UNIX 파일을 데이터 셋으로 올릴 수 있는지 확인하는 예이다.

$ dssave AAA.BBB -t

참고: dssave를 수행하기 위해서는 사전에 dsload 툴을 사용하여 UNIX 상에 소스 파일을 생성해두어야 한다.

관련 환경설정 dstool.conf [DSLOAD] LOAD_DIR

dssave시에 소스 파일의 UNIX 디렉터리 경로를 지정한다. LOAD_DIR과 [-s

source filepath] 옵션을 둘 다 설정하지 않은 경우 에러가 발생한다.

dstool.conf [DSLOAD] DELIMITER

dssave시에 레코드의 delimiter로 문자 또는 ‘NEWLINE’을 지정한다. DELIMITER

와 [-d delimiter] 옵션을 둘 다 설정하지 않은 경우 delimiter는 NULL 스트링이다.

참고: 관련 툴 프로그램으로는 dsload가 있다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 35

3.5 dsmigin

dsmigin는 EBCDIC 코드 형태의 Mainframe 데이터 셋을 ASCII 코드 형태의

OpenFrame 데이터 셋으로 마이그레이션할 때 사용하는 프로그램이다.

Mainframe 데이터 셋을 UNIX 환경의 OpenFrame 데이터 셋으로 마이그레이션

하기 위해서는 일반적으로 다음과 같은 절차가 수행된다.

Step I. FTP를 이용하여 Mainframe 데이터 셋을 UNIX 파일로 다운로드 한다.

Step II. 데이터 셋을 마이그레이션할 때 스키마 파일이 필요한 경우 해당 데이

터 셋을 사용하는 COBOL이나 PL/I 소스파일을 참조하여 스키마 파일

을 작성한다.

Step III. dsmigin 툴을 이용하여 UNIX에 다운로드된 파일을 OpenFrame 데이터

셋으로 적재(import)하는 작업을 수행한다.

사용법

dsmigin 프로그램을 실행하는 방법은 다음과 같다.

Usage: dsmigin <src_file> <dest_file | dataset_name> [options]

- <src_file>

마이그레이션을 수행할 UNIX 소스 파일명 또는 파일 경로를 지정한다.

- <dest_file> 또는 <dataset_name>

생성할 파일 또는 데이터 셋 이름을 지정한다.

다음은 dsmigin의 옵션에 대한 설명이다.

- [-C]

EBCDIC 문자로 작성된 파일을 ASCII 문자로 변환만하고 OpenFrame으로

적재하지 않을 경우 지정한다.

- [-I]

[-C] 옵션과 반대로 변환 작업을 수행하지 않고 입력 파일을 직접

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 36

OpenFrame으로 적재하는 경우 지정한다.

- [-S]

입력 파일로 주어진 데이터가 소스 파일일 경우 지정한다. 이 옵션이 지정되

면, 레코드 포맷(RECFM)은 L 타입이 된다.

- [-m member_name]

생성할 멤버 이름 (PDS를 생성할 경우) 또는 생성할 상대 세대번호 (GDG를

생성할 경우)를 지정한다.

PDS(Partitioned Data Set)를 생성할 경우에는 <dataset_name>과

[member_name]을 모두 지정하여 주어야 하며, <dataset_name>만 지정되어

있는 경우에는 SDS(Sequential Data Set)를 생성하게 된다.

GDG(Generation Data Group)을 생성할 경우에는 <dataset_name>과 세대번

호를 지정하여 주어야 하며, 일반적으로 +1을 지정한다.

SDS를 생성하는 예)

$ dsmigin OFR.DATA.SDSEXAM01.TXT OFR.DATA.SDSEXAM01

PDS를 생성하는 예)

$ dsmigin OFR.DATA.PDSEXAM01.TXT OFR.DATA.PDSEXAM01 -m MEMBER1

GDG를 생성하는 예)

$ dsmigin OFR.DATA.GDGEXAM01.TXT OFR.DATA.GDGEXAM01 -m +1

- [-u unit]

데이터 셋이 생성될 UNIT 그룹명을 지정한다.

- [-v volume]

데이터 셋이 생성될 볼륨 시리얼을 지정한다.

이 옵션을 지정하지 않을 경우에는 ds.conf [DATASET_DEFAULT]

DEFAULT_VOLSER에 등록되어 있는 디폴트 볼륨 시리얼에 데이터 셋이 생성

된다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 37

- [-c user_catalog]

데이터 셋이 등록될 사용자 카탈로그를 지정한다. 지정하지 않을 경우에는

마스터 카탈로그에 데이터 셋이 등록된다.

- [-e encoding_code]

EBCDIC에서 ASCII로 코드 변환 시 EBCDIC 2바이트 문자를 어떤 ASCII 문

자 코드로 변환할지를 지정한다.

encoding_code 값에 따른 변환 처리는 다음과 같으며, 디폴트는 KR이다.

변환 코드 설명

US 영어 (Default)

KR 한국어 (EUC-KR)

JPW 일본어 (Shift-JIS)

[표 3-3] dsmigin 시 ASCII 변환 코드

- [-s scheme]

UNIX 소스 파일의 한 레코드에 여러 char-set이 섞여있는 경우에는

(EBCDIC, ASCII 코드가 섞여있거나 2바이트 문자, Packed Decimal, Zoned

Decimal이 사용된 경우 등) 레코드 단위의 단순 코드 변환이 불가능하기 때

문에 cobgensch 또는 pligensch 프로그램을 이용하여 스키마 파일을 생성한

후 해당 스키마 파일을 지정한다.

- [-o dsorg]

생성할 데이터 셋의 DSORG를 지정한다.

DSORG에 설정할 수 있는 값은 PS, PSU, DA, DAU 등이 있으며, 이 옵션을

지정하지 않은 경우 디폴트 값은 PS이다.

- [-p keypos]

마이그레이션 될 데이터 셋이 ISAM 타입일 경우 키 위치를 지정한다.

- [-l rec_len]

데이터 셋의 레코드 포맷(RECFM)을 F(Fixed)로 생성할 경우에 데이터 셋의

레코드 길이를 지정한다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 38

-l 옵션을 사용하는 예)

$ dsmigin OFR.DATA.SDSEXAM01.TXT OFR.DATA.SDSEXAM01 -s OFR.DATA.SDSEXAM01.conv -l 166

- [-b blksize]

데이터 셋의 블록 사이즈(BLKSIZE)를 지정한다.

- [-f recfm]

데이터 셋의 레코드 포맷(RECFM)을 지정한다. 지정할 수 있는 레코드 포맷

으로는 F(Fixed), FB(Fixed Blocked), V(Variable), VB(Variable Blocked), L 타입

이 있다.

- [-d delimiter]

UNIX 소스 파일에서 레코드 간의 구분을 위해 사용된 delimiter를 지정한다.

- [-w lockwait]

적재(Import) 대상 데이터 셋에 lock이 걸려있는 경우 lock이 풀릴 때까지 대

기하고 있다가 unlock이 되면 작업을 수행한다.

이 옵션을 지정하지 않은 경우 적재대상 데이터 셋에 이미 lock이 걸려있다

면 에러 메시지를 출력하고 작업 수행을 중단한다.

- [-N]

마이그레이션 과정에서 데이터 셋을 카탈로그에 등록하지 않을 경우 지정한

다.

- [-R]

데이터 셋이 이미 카탈로그에 등록된 경우에 re-catalog를 위한 옵션이다.

카탈로그에서 대상 데이터 셋의 등록 정보를 찾아, 해당 볼륨으로 데이터 셋

을 적재하고, UNIT, 볼륨, 생성일자 등의 기존 등록 정보는 그대로 유지한다.

이 옵션을 지정하면 unit(-u)이나 volume(-v) 파라미터는 무시되며, 이 옵션을

지정하지 않은 경우 적재대상 데이터 셋이 이미 카탈로그에 등록되어 있다면

에러 메시지를 출력하고 작업 수행을 중단한다.

- [-F]

대상 데이터 셋이 카탈로그에 이미 등록되어 있다면 해당 데이터 셋을 삭제

하고, 다시 데이터 셋 적재작업을 수행하여 카탈로그에 등록한다. UNIT, 볼륨,

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 39

생성일자 등 데이터 셋의 기존 등록 정보는 모두 새롭게 갱신된다.

이 옵션을 지정하지 않은 경우 적재대상 데이터 셋이 이미 카탈로그에 이미

등록되어 있다면 에러 메시지를 출력하고 작업 수행을 중단한다.

- [-D]

EBCDIC에서 ASCII로의 코드 변환과 마이그레이션 디버깅 결과를 화면에 출

력한다.

- [-V]

dsmigin의 버전 정보를 화면에 출력한다.

사용예제

스키마 파일의 간단한 sample을 보여주는 예이다.

############################

# conversion scheme sample #

############################

* scheme

# 01 a.

0, 166, EBC_ASC, L1 # I-TEST1

# 01 b.

0, 10, COPY, L2 # I-TEST2

10, 90, EBC_ASC, L3 # I-TEST3

100, 66, JO_KSC, L4 # I-TEST4

* condition

0, 0, "\0", ( L1 )

############################

<DSI.TESTDATA1.conv>

UNIX 파일을 데이터 셋으로 적재하는 예이다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 40

$ dsmigin DSI.TESTDATA1.txt DSI.TESTDATA1 -s DSI.TESTDATA1.conv -v 100000 -e KR

위의 dsmigin를 실행한 결과는 다음과 같다.

=====< DSMIGIN START >=====

DSMIGIN: (record count = 7)

=====< DSMIGIN FINISH >====

dsmigin를 실행한 후 데이터 셋 등록 정보를 확인하는 예이다.

$ tjesmgr psds DSI.TESTDATA1

위의 tjesmgr를 실행한 결과는 다음과 같다.

DSN : DSI.TESTDATA1

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : F

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 32760 LRECL(M) : 32760

BLKSIZE : 32760 DATASIZE : 17000

OWNER ID : OpenFrame DEVTYPE : 3380

CREATION : 20070121 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070121(055356)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

관련 환경설정 ds.conf [DATASET_DEFAULT] DEFAULT_VOLSER

디폴트 볼륨 시리얼을 지정한다.

참고: 관련 툴 프로그램으로는 dsmigout이 있다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 41

3.6 dsmigout

dsmigout은 ASCII 코드 형태의 OpenFrarme 데이터 셋을 EBCDIC 코드 형태의

Mainframe 데이터 셋으로 변환하여 UNIX 파일로 이출(export)하는 프로그램이다.

가변 길이 데이터 셋을 이출할 때, 레코드 구분을 위하여 각 레코드마다

delimiter로 0x0d0a(New Line)을 붙여준다.

사용법

dsmigout 프로그램을 실행하는 방법은 다음과 같다.

Usage: dsmigout <dataset_name> <dest_file> [options]

- <dataset_name>

이출(export)하려는 데이터 셋의 이름을 기술한다. 데이터 셋은 카탈로그에

등록되어 있어야 한다.

- <dest_file>

Output으로 생성될 파일 이름을 기술한다.

다음은 dsmigout의 옵션에 대한 설명이다.

- [-e encoding]

ASCII에서 EBCDIC으로 코드 변환 시 ASCII 코드의 종류를 지정한다.

encoding 값에 따른 변환 처리는 다음과 같다.

변환 코드 설명

KR 한국어 (EUC-KR)

US 영어

JP 일본어 (Shift-JIS)

[표 3-4] dsmigout 시 ASCII 코드

- [-s scheme]

OpenFrame 데이터 셋의 한 레코드에 여러 char-set이 섞여있는 경우에는

(EBCDIC, ASCII 코드가 섞여있거나 2바이트 문자, Packed Decimal, Zoned

Decimal이 사용된 경우 등) 레코드 단위의 단순 코드 변환이 불가능하기 때

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 42

문에 cobgensch 또는 pligensch 프로그램을 이용하여 스키마 파일을 생성한

후 해당 스키마 파일을 지정한다.

- [-D]

ASCII에서 EBCDIC으로의 코드 변환과 마이그레이션 디버깅 결과를 화면에

출력한다.

- -V

dsmigout의 버전 정보를 화면에 출력한다.

사용예제

스키마 파일의 간단한 sample을 보여주는 예이다.

############################

# conversion scheme sample #

############################

* scheme

# 01 a.

0, 166, EBC_ASC, L1 # I-TEST1

# 01 b.

0, 10, COPY, L2 # I-TEST2

10, 90, EBC_ASC, L3 # I-TEST3

100, 66, JO_KSC, L4 # I-TEST4

* condition

0, 0, "\0", ( L1 )

############################

<DSI.TESTDATA1.conv>

dsmigout 결과를 보여주는 예이다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 43

$ dsmigout DSI.TESTDATA1 DSI.TESTDATA1.out -e KR -s DSI.TESTDATA1.con

위의 dsmigout을 실행한 결과는 다음과 같다.

==> 100 records is exported.

DSI.TESTDATA1의 레코드들이 EBC_ASC 변환 방식에 의해서 바뀌어

DSI.TESTDATA1.out으로 출력된다.

참고 관련 툴 프로그램으로는 dsmigin이 있다.

3.7 cobgensch

cobgensch는 Mainframe 데이터 셋을 OpenFrame 데이터 셋으로 마이그레이션

하는 과정에서 필요한 데이터 셋 마이그레이션 스키마 파일을 생성해주는 프로그

램이다.

데이터 셋 마이그레이션 스키마 파일을 생성하는 프로그램으로는 cobgensch과

pligensch가 있다. cobgensch는 코볼 copybook 소스파일을 참조하여 스키마 파일

을 생성하고, pligensch는 PL/I 소스파일을 참조하여 스키마 파일을 생성한다.

데이터 셋 마이그레이션 수행 시 원본 데이터 파일인 UNIX 소스파일의 한 레코

드에 여러 char-set이 섞여 있는 경우에는 (EBCDIC, ASCII 코드가 섞여있거나 2

바이트 문자, Packed Decimal, Zoned Decimal이 사용된 경우 등) 레코드 단위의

일괄적인 단순 코드변환을 할 수 없다. 따라서 레코드의 각 필드에 대한 코드 변

환 규칙을 스키마 파일에 정의한다.

이 후 dsmigin 프로그램을 실행할 때 각 데이터 셋에 해당하는 스키마 파일을 지

정하여 데이터 셋 마이그레이션 작업을 수행한다.

cobgensch 프로그램은 코볼 소스파일이나 코볼 copybook 파일로 마이그레이션

스키마 파일을 생성한다.

사용법

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

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 44

Usage: cobgensch input_file [-r rec_len]

- input_file

코볼 소스파일 또는 코볼 copybook 파일을 지정한다.

- [-r rec_len]

스키마 파일을 사용할 데이터 셋이 고정길이 레코드이고 레코드 길이를 알고

있는 경우에 레코드 길이를 지정하면, 스키마 파일 생성 시에 레코드 길이

정합성을 체크한다.

사용예제

코볼 copybook 파일의 간단한 sample을 보여주는 예이다.

FD I-FILE

RECORDING MODE IS F

RECORD CONTAINS 95 CHARACTERS

BLOCK CONTAINS 0 RECORDS

LABEL RECORDS ARE STANDARD

DATA RECORD ARE I-REC.

01 I-REC.

05 I-SAGNO PIC X(11).

05 I-DAMBO PIC X(02).

05 I-PHNO PIC X(03).

05 I-BKNO PIC 9(03).

05 I-BKDT PIC X(10).

05 I-BKDT-I PIC X(01).

05 I-BSGB PIC X(02).

05 I-BSHG PIC X(02).

05 I-CIGB PIC X(02).

05 I-CIHG PIC X(02).

05 I-JHGB PIC X(02).

05 I-TTJC PIC S9(13) COMP-3.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 45

05 I-TTIC PIC S9(13).

05 I-NAME PIC X(20).

05 I-TEST1 PIC Z(10).

05 I-TEST2 PIC +(10).

05 I-TEST3 PIC -(10).

05 I-TEST4 PIC ---------9.

05 I-TEST5 PIC ----------.

05 I-TEST6 PIC $(10).

05 I-TEST7 PIC \(10).

<COB.TESTDATA1.cpy>

cobgensch를 실행하여 정합성을 체크하는 예이다.

$ cobgensch COB.TESTDATA1.cpy -r 100

위의 cobgensch를 실행한 결과, 레코드 길이 정합성 체크에서 에러가 발생했다.

input filename = COB.TESTDATA1.cpy

input record length = 100

scheme filename = /home/tmax/openframe/schema/COB.TESTDATA1.conv

** input record length is different from scheme record length!!!

** (input reclen = 100, scheme reclen = 150)

cobgensch를 실행하여 코볼 스키마 파일을 생성하는 예이다.

$ cobgensch COB.TESTDATA1.cpy

위의 cobgensch를 실행한 결과 정상적으로 코볼 스키마 파일이 생성되었다.

input filename = COB.TESTDATA1.cpy

scheme filename = /home/tmax/openframe/schema/COB.TESTDATA1.conv

cobgensch를 실행하여 코볼 스키마 파일을 생성하고, 정합성을 체크하는 예이다.

$ cobgensch COB.TESTDATA1.cpy -r 150

위의 cobgensch를 실행한 결과 정상적으로 코볼 스키마 파일이 생성되었고, 정

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 46

합성 체크시 오류가 발생하지 않았다.

input filename = COB.TESTDATA1.cpy

input record length = 150

scheme filename = /home/tmax/openframe/schema/COB.TESTDATA1.conv

위의 cobgensch를 실행한 후 생성된 스키마 파일의 내용 sample을 보여준다.

* scheme

# 01 ROOT_REC_01.

0, 11, EBC_ASC, L2 # I-SAGNO

11, 2, EBC_ASC, L3 # I-DAMBO

13, 3, EBC_ASC, L4 # I-PHNO

16, 3, ZONED, L5 # I-BKNO

19, 10, EBC_ASC, L6 # I-BKDT

29, 1, EBC_ASC, L7 # I-BKDT-I

30, 2, EBC_ASC, L8 # I-BSGB

32, 2, EBC_ASC, L9 # I-BSHG

34, 2, EBC_ASC, L10 # I-CIGB

36, 2, EBC_ASC, L11 # I-CIHG

38, 2, EBC_ASC, L12 # I-JHGB

40, 7, COPY, L13 # I-TTJC

47, 13, ZONED, L14 # I-TTIC

60, 20, EBC_ASC, L15 # I-NAME

80, 10, ZONED, L16 # I-TEST1

90, 10, ZONED, L17 # I-TEST2

100, 10, ZONED, L18 # I-TEST3

110, 10, EBC_ASC, L19 # I-TEST4

120, 10, ZONED, L20 # I-TEST5

130, 10, ZONED, L21 # I-TEST6

140, 10, ZONED, L22 # I-TEST7

* condition

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 47

0, 0, "\0", ( L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15 L16 L17 L18 L19 L20 L21 L22 )

<COB.TESTDATA1.conv>

3.8 pligensch

pligensch는 Mainframe 데이터 셋을 OpenFrame 데이터 셋으로 마이그레이션 하

는 과정에서 필요한 데이터 셋 마이그레이션 스키마 파일을 생성해주는 프로그램

이다.

cobgensch 프로그램과 마찬가지로 PL/I 소스파일을 참조하여 Mainframe 데이터

셋의 레코드 구조를 파악하여 스키마 파일을 생성한다.

[그림 3-1] PL/I 스키마 파일 생성과 OpenFrame 데이터 셋 생성 과정

[그림 3-1]과 같이 pligensch에 PL/I 소스를 입력하면 레코드 구조를 담은 스키마

파일이 생성된다. dsmigin 수행 시 스키마 파일과 Mainframe 데이터 셋을 입력

파라미터로 지정하여 OpenFrame 데이터 셋을 생성할 수 있다.

사용법

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

Usage: pligensch [-h] [-y] [-l] [-d] [-o file] [-i dir] [-s]

[-f aix] [-f liant] file1 [file2 ...]

- [-h]

pligensch에서 사용 가능한 옵션에 대한 정보를 보여준다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 48

- [-y]

parser에서 생성된 디버그 메시지를 보여준다.

- [-l]

scanner에서 생성된 디버그 메시지를 보여준다.

- [-d]

scanner와 parser를 포함한 모든 생성된 디버그 메시지를 보여준다.

- [-o file]

전처리 결과를 출력할 파일명을 지정한다.

- [-i dir]

PL/I의 include 파일들이 존재하는 위치를 지정한다.

- [-s]

입력 파일이 structure만을 포함하는 파일일 때 지정한다.

- [-f aix]

입력으로 받을 PL/I 소스가 AIX PL/I일 때 지정한다. -f 옵션을 주지 않으면

기본적으로 AIX PL/I로 인식한다.

- [-f liant]

입력으로 받는 PL/I 소스가 Liant Open PL/I 일 때 지정한다.

사용예제

다음은 PL/I Include 파일의 간단한 sample을 보여주는 예이다.

3 TEST1 CHAR(02) ,

3 TEST2 CHAR(05) ,

3 TEST3 ,

5 TEST4 PIC ‘(03)9’ ,

5 TEST5 PIC ‘(03)X’ ,

3 TEST6 FIXED DEC (3, 0);

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 49

<PLI.TESTDATA1.inc>

pligensch를 실행하여 코볼 스키마 파일을 생성하는 예이다.

$ pligensch –s PLI.TESTDATA1.inc

위의 pligensch를 실행한 결과 정상적으로 코볼 스키마 파일이 생성되었다.

Initiation

Scheme filename = /home/tmax/openframe/schema/PLI.TESTDATA1.conv

pligensch를 실행한 후 생성된 스키마 파일의 내용 sample을 보여준다.

* scheme

# 01 TEST1_STRUCTURE.

0, 2, EBC_ASC, L2 # TEST1

2, 5, EBC_ASC, L3 # TEST2

# 03 TEST3.

7, 3, ZONED, L5 # TEST4

10, 3, EBC_ASC, L6 # TEST5

13, 2, COPY, L7 # TEST6

* condition

0, 0, "\0", ( L2 L3 L5 L6 L7 )

<PLI.TESTDATA1.conv>

3.9 dslist

dslist는 데이터 셋에 대한 정보를 조회할 때 사용하는 프로그램이다.

사용자의 옵션에 따라 다음의 기능이 있다.

- 특정 데이터 셋 이름으로 데이터 셋 정보를 조회한다.

- 특정 볼륨에 들어있는 데이터 셋에 대한 정보를 조회한다..

- 특정 카탈로그에 등록된 데이터 셋에 대한 정보를 조회한다..

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 50

- 생성일자, 마지막 참조 일자 및 데이터 셋 크기 별로 조건을 주어서 조건에

해당하는 데이터 셋 정보를 조회한다.

- 결과는 카탈로그 별로 데이터 셋 이름을 기준으로 정렬되어 조회된다.

사용법

dslist 프로그램을 실행하는 방법은 다음과 같다.

Usage: dslist [-v volser] [-dsn dsname] [-cat user_catalog]

[-cd create_date] [-rd last_reference_date]

[-sz data_size] [-V]

- [-v volser]

특정 볼륨에 속해있는 데이터 셋을 조회한다. 지정한 볼륨에 해당하는 데이

터 셋 정보만 조회된다.

- [-dsn dsname]

조회하고자 하는 데이터 셋 이름을 지정한다. 와일드 카드 문자를 사용하여

데이터 셋 이름을 지정할 수 있다.

AAA.*는 AAA.BBB나 AAA.CCC 처럼 다음 한 개의 퀄리파이어에 대해서 모

든 데이터 셋을 찾는다.

AAA.**는 AAA.BBB, AAA.CCC, AAA.BBB.FFF, AAA.BBB.GGG 처럼 AAA.으로

시작하는 모든 데이터 셋을 찾는다.

- [-cat user_catalog]

특정 카탈로그에 등록된 데이터 셋을 조회할 때 사용된다. 지정된 카탈로그

에 등록된 데이터 셋 정보만 조회한다.

- [-cd create_date]

create_date에 해당하는 데이터 셋만 조회한다.

생성일자가 2006년 3월 28일인 데이터 셋 정보만 조회하는 예이다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 51

$ dslist -cd 20060328

생성일자가 2006년 1월 1일 이후부터 2006년 3월 31일 이전인 데이터 셋

정보만 조회하는 예이다.

$ dslist -cd 20060101-20060331

생성일자가 2006년 1월 1일 이후인 데이터 셋 정보만 조회하는 예이다.

$ dslist -cd 20060101-

생성일자가 2006년 3월 31일 이전인 데이터 셋 정보만 조회하는 예이다.

$ dslist -cd -20060331

- [-rd last_reference_date]

last_reference_date에 해당하는 데이터 셋만 조회한다.

마지막 참조 일자가 2006년 3월 28일인 데이터 셋 정보만 조회하는 예이다.

$ dslist -rd 20060328

마지막 참조 일자가 2006년 1월 1일 이후부터 2006년 3월 31일 이전인 데

이터 셋 정보만 조회하는 예이다.

$ dslist -rd 20060101-20060331

마지막 참조 일자가 2006년 1월 1일 이후인 데이터 셋 정보만 조회하는 예

이다.

$ dslist -rd 20060101-

마지막 참조 일자가 2006년 3월 31일 이전인 데이터 셋 정보만 조회하는 예

이다.

$ dslist -rd -20060331

- [-sz data_size]

data_size에 해당하는 데이터 셋만 조회한다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 52

데이터 셋 크기가 1K 바이트인 데이터 셋 정보만 조회하는 예이다.

$ dslist -sz 1K

데이터 셋 크기가 100 바이트 이상이고 100M 바이트 이하인 데이터 셋 정

보만 조회하는 예이다.

$ dslist -sz 100-1M

데이터 셋 크기가 1M 바이트 이상인 데이터 셋 정보만 조회하는 예이다.

$ dslist -sz 1M-

데이터 셋 크기가 12M 바이트 이하인 데이터 셋 정보만 조회하는 예이다.

$ dslist -sz -12M

- [-V]

dslist의 버전을 확인한다.

사용예제

볼륨 100000에 속해있는 데이터 셋 중 2007년 1월 21일 이후에 생성된 데이터

셋의 정보를 조회하는 예이다.

$ dslist -v 100000 -cd 20070121-

위의 dslist 프로그램 수행 후 출력되는 내용은 다음과 같다.

----------< CATALOG: SYS1.MASTER.ICFCAT.MJES >-----------

DSN : DSI.TESTDATA1

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : VB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 32760 LRECL(M) : 32760

BLKSIZE : 2097152 DATASIZE : 17000

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 53

OWNER ID : saza DEVTYPE : 3380

CREATION : 20070121 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070121(055815)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

DSN : TEST.INPUT01

VOLUME : 100000 TYPE : NONVSAM

DSORG : PO RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 21 LRECL(M) : 21

BLKSIZE : 2100 DATASIZE : 357

OWNER ID : ROOT DEVTYPE : 3380

CREATION : 20070124 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(162253)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

DSN : TEST.INPUT02

VOLUME : 100000 TYPE : NONVSAM

DSORG : PO RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 21 LRECL(M) : 21

BLKSIZE : 2100 DATASIZE : 252

OWNER ID : ROOT DEVTYPE : 3380

CREATION : 20070124 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(154028)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

====> 3 entries exist in catalog SYS1.MASTER.ICFCAT.MJES

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 54

======== total 3 entries are found. ========

데이터 셋 크기가 10K 바이트 이상 20K 바이트 이하인 데이터 셋의 정보를 보

여주는 예이다.

$ dslist -sz 10K-20K

위의 dslist 프로그램 수행 후 출력되는 내용은 다음과 같다.

----------< CATALOG: SYS1.MASTER.ICFCAT.MJES >-----------

DSN : DSI.TESTDATA1

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : VB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 32760 LRECL(M) : 32760

BLKSIZE : 2097152 DATASIZE : 17000

OWNER ID : saza DEVTYPE : 3380

CREATION : 20070121 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070121(055815)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

====> 1 entries exist in catalog SYS1.MASTER.ICFCAT.MJES

----------< CATALOG: TEST.UCAT >-----------

DSN : YTH.TEST01

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 100 LRECL(M) : 100

BLKSIZE : 100 DATASIZE : 18000

OWNER ID : saza DEVTYPE : 3380

CREATION : 20061230 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20061230(013412)

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 55

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

====> 1 entries exist in catalog TEST.UCAT

======== total 2 entries are found. ========

3.10 dsmove

dsmove는 데이터 셋을 move 시키는 기능을 하는 프로그램이다.

다시 말해, 데이터 셋의 이름은 유지하면서 볼륨만을 변경하거나 데이터 셋의 이

름만을 변경할 수 있고, 또는 이름과 볼륨을 모두 변경할 수도 있다.

데이터 셋이 move될 때 생성일자는 입력 데이터 셋의 생성일자로 유지된다.

사용법

dsmove 프로그램을 실행하는 방법은 다음과 같다.

Usage: dsmove IN-DSN OUT-DSN [-v out_volser] [-V]

| dsmove -V

- in_dsn

입력 데이터 셋 이름을 기술한다. dsmove가 정상 종료되면 입력 데이터 셋

은 삭제된다.

- out_dsn

출력 데이터 셋 이름을 기술한다.

와일드 카드 문자를 사용하여 in_dsn과 out_dsn을 지정할 수 있다.

in_dsn에는 AAA.* 또는 AAA.** 처럼 마지막에 와일드 카드를 사용한다.

AAA.*는 AAA.BBB나 AAA.CCC 처럼 AAA으로 시작되는 데이터 셋 중에 다

음 한 개의 퀄리파이어에 대해서 모든 데이터 셋을 찾아 dsmove의 입력 데

이터 셋으로 사용한다.

AAA.**는 AAA.BBB, AAA.CCC, AAA.BBB.FFF, AAA.BBB.GGG 처럼 AAA.으로

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 56

시작하는 모든 데이터 셋을 찾아 입력 데이터 셋으로 사용한다.

out_dsn에는 DDD.* 또는 DDD.** 모두 동일한 결과를 보인다. out_dsn에서 *

는 에러 메시지를 출력하고 종료한다.

다음은 AAA.으로 시작하는 모든 데이터 셋을 DDD.으로 시작하는 데이터 셋

으로 변경하는 예이다.

$ dsmove AAA.** DDD.*

위의 예제에서 AAA.BBB와 AAA.BBB.CCC는 DDD.BBB와 DDD.BBB.CCC로

각각 변경된다.

- [-v out_volser]

출력 데이터 셋이 생성될 볼륨을 기술한다. 만일 in_dsn 이름과 out_dsn 이

름이 같다면 볼륨을 반드시 기술해야 한다. 그리고 이 때 기술된 볼륨은 입

력 데이터 셋의 볼륨과 달라야 한다.

- [-V]

dsmove의 버전을 확인한다.

사용예제

데이터 셋의 볼륨만 변경하는 예이다.

$ dsmove DSMOVE.TEST01 DSMOVE.TEST01 -v 200000

위의 dsmove 프로그램 실행 전 DSMOVE.TEST01의 정보는 다음과 같다.

DSN : DSMOVE.TEST01

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 11 LRECL(M) : 11

BLKSIZE : 110 DATASIZE : 32472

OWNER ID : saza DEVTYPE : 3380

CREATION : 20061215 EXPIRATION : 99991231

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 57

LAST REFERENCE DATE(TIME) : 20070124(131120)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

<DSMOVE.TEST01>

dsmove 프로그램 실행 후 다음 메시지가 출력된다.

[20070124 13:13:31]: dsmove start

[20070124 13:13:31]: -----------------------------------------

[20070124 13:13:31]: dsname DSMOVE.TEST01 is processing.

[20070124 13:13:32]: Dataset DSMOVE.TEST01 is moved to volume 200000

[20070124 13:13:32]: -----------------------------------------

[20070124 13:13:32]: dsmove end

[20070124 13:13:32]: RC = 0

dsmove 프로그램 실행 후 DSMOVE.TEST01의 정보는 다음과 같다.

DSN : DSMOVE.TEST01

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 11 LRECL(M) : 11

BLKSIZE : 110 DATASIZE : 32472

OWNER ID : saza DEVTYPE : 3480 (TAPE Device)

CREATION : 20061215 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(131509)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

<DSMOVE.TEST01>

위의 예제에서 데이터 셋 DSMOVE.TEST01의 볼륨이 100000에서 200000으로

바뀌었다. 볼륨 200000은 테이프 볼륨으로 설정된 상태라 DEVTYPE도 TAPE으

로 바뀌었다.

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 58

데이터 셋의 이름을 변경하는 예이다.

$ dsmove DSMOVE.TEST02 DSMOVE.TEST03

dsmove 프로그램 실행 전 DSMOVE.TEST02의 정보는 다음과 같다.

DSN : DSMOVE.TEST02

VOLUME : 200000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 11 LRECL(M) : 11

BLKSIZE : 110 DATASIZE : 32472

OWNER ID : saza DEVTYPE : 3480 (TAPE Device)

CREATION : 20061215 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(132209)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

<DSMOVE.TEST02>

dsmove 프로그램 실행 후 다음 메시지가 출력된다.

[20070124 13:23:03]: dsmove start

[20070124 13:23:03]: -----------------------------------------

[20070124 13:23:03]: dsname DSMOVE.TEST02 is processing.

[20070124 13:23:04]: dataset DSMOVE.TEST02 is moved to dataset DSMOVE.TEST03

[20070124 13:23:04]: -----------------------------------------

[20070124 13:23:04]: dsmove end

[20070124 13:23:04]: RC = 0

데이터 셋 DSMOVE.TEST02는 삭제되고, 데이터 셋 DSMOVE.TEST03이 생성된

다. DSMOVE.TEST03의 정보는 다음과 같다.

DSN : DSMOVE.TEST03

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 59

VOLUME : 200000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 11 LRECL(M) : 11

BLKSIZE : 110 DATASIZE : 32472

OWNER ID : saza DEVTYPE : 3480 (TAPE Device)

CREATION : 20061215 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(132304)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

위의 예제에서 데이터 셋 이름만 DSMOVE.TEST03으로 변경되고, LAST

REFERENCE DATE(TIME)을 제외한 나머지 정보는 동일하다.

데이터 셋의 이름과 볼륨을 둘 다 변경하는 예이다.

$ dsmove DSMOVE.TEST04 DSMOVE.TEST05 -v 100000

dsmove 실행 전 DSMOVE.TEST04의 정보는 다음과 같다.

DSN : DSMOVE.TEST04

VOLUME : 200000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 11 LRECL(M) : 11

BLKSIZE : 110 DATASIZE : 32472

OWNER ID : saza DEVTYPE : 3480 (TAPE Device)

CREATION : 20061215 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(132719)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

<DSMOVE.TEST04>

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 60

dsmove 프로그램 실행 후 다음 메시지가 출력된다.

[20070124 13:28:58]: dsmove start

[20070124 13:28:58]: ------------------------------------------------

[20070124 13:28:58]: dsname DSMOVE.TEST04 is processing.

[20070124 13:28:58]: 데이터 셋 DSMOVE.TEST04 is moved to 데이터 셋 DSMOVE.TEST05

[20070124 13:28:58]: ------------------------------------------------

[20070124 13:28:58]: dsmove end

[20070124 13:28:58]: RC = 0

데이터 셋 DSMOVE.TEST04는 삭제되고, 데이터 셋 DSMOVE.TEST05가 볼륨

100000에 생성된다. DSMOVE.TEST05의 정보는 다음과 같다.

DSN : DSMOVE.TEST05

VOLUME : 100000 TYPE : NONVSAM

DSORG : PS RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 11 LRECL(M) : 11

BLKSIZE : 110 DATASIZE : 32472

OWNER ID : saza DEVTYPE : 3380

CREATION : 20061215 EXPIRATION : 99991231

LAST REFERENCE DATE(TIME) : 20070124(133028)

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS : MCLAS001

SMS DATA CLASS :

와일드 카드 문자를 사용하여 데이터 셋 이름을 변경하는 예이다.

$ dsmove TEST01.* TEST02.*

위의 dsmove 프로그램 실행 후 다음의 메시지가 출력된다.

[20070124 14:54:39]: dsmove start

[20070124 14:54:39]: ------------------------------------------------

[20070124 14:54:39]: dsname TEST01.EDIT01 is processing.

[20070124 14:54:40]: dataset TEST01.EDIT01 is moved to dataset

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 61

TEST02.EDIT01

[20070124 14:54:40]: ------------------------------------------------

[20070124 14:54:40]: dsname TEST01.FB01 is processing.

[20070124 14:54:40]: dataset TEST01.FB01 is moved to dataset TEST02.FB01

[20070124 14:54:40]: ------------------------------------------------

[20070124 14:54:40]: dsname TEST01.PDS01 is processing.

[20070124 14:54:40]: dataset TEST01.PDS01 is moved to dataset TEST02.PDS01

[20070124 14:54:40]: ------------------------------------------------

[20070124 14:54:40]: dsmove end

[20070124 14:54:40]: RC = 0

세 개의 데이터 셋 TEST01.EDIT01, TEST01.FB01, TEST01.PDS01이 각각

TEST02.EDIT01, TEST02.FB01, TEST02.PDS01으로 이름이 변경되었다.

관련 환경설정 dstool.conf [DSMOVE] SYSOUT=log file path

dsmove 수행 중 발생하는 메시지가 stdout, stderr 대신 SYSOUT에 설정된 로그

파일 경로에 기록된다.

3.11 dstouch

dstouch는 데이터 셋의 레코드 카운트 및 생성 일자를 갱신하는 프로그램이다.

데이터 셋의 실제 레코드 카운트가 카탈로그에 기록되어 있는 카운트와 다른 경

우 실제 카운트로 카탈로그의 기록을 갱신한다.

사용법

dstouch 프로그램을 실행하는 방법은 다음과 같다.

Usage: dstouch dataset_name [member_name] [-c user_catalog]

[-d creation_date]

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 62

- dataset_name

변경하고자 하는 데이터 셋의 이름을 지정한다.

- [member_name]

변경하고자 하는 데이터 셋의 멤버 이름을 지정한다.

- [-c user_catalog]

변경하고자 하는 데이터 셋이 사용자 카탈로그에 등록되어있는 경우 지정한

다. 단, 사용자 카탈로그 alias가 설정되어 있어서 데이터 셋 이름 만으로 찾

을 수 있는 경우에는 이 옵션을 주지 않아도 된다.

참고: 자세한 내용은 “데이터 셋 안내서”의 “제4장 통합 카탈로그의 카탈로그 관리”를 참고한다.

- [-d creation_date]

변경하고자 하는 생성일자를 YYYYMMDD 형식으로 지정한다.

이 옵션으로 데이터 셋의 생성일자도 함께 갱신할 수 있다.

사용예제

AAA.BBB 데이터 셋의 레코드의 카운트를 갱신하는 예이다.

$ dstouch AAA.BBB

AAA.BBB데이터 셋의 멤버 MEMBER01의 레코드 카운트를 갱신하는 예이다.

$ dstouch AAA.BBB MEMBER01

사용자 카탈로그 USERCAT에 등록되어 있는 AAA.BBB 데이터 셋의 레코드 카운

트를 갱신하는 예이다.

$ dstouch AAA.BBB -c USERCAT

AAA.BBB 데이터 셋의 레코드 카운트 갱신하고 생성일자 2007년4월30일로 변경

하는 예이다.

$ dstouch AAA.BBB -d 20070430

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 63

참고: 데이터 셋에 대한 자세한 내용은 “데이터 셋 안내서”를 참고한다.

3.12 pdsgen

pdsgen은 PDS 데이터 셋을 생성하거나 OpenFrame 인스톨러에서 시스템에 필

요한 PDS 데이터 셋을 생성하는 프로그램이다.

PDS 데이터 셋을 생성할 때 데이터 셋에 lock을 걸지 않으므로, 운영 중에는 사

용하지 않고 인스톨할 때만 사용하도록 권장한다.

사용법

pdsgen 프로그램을 실행하는 방법은 다음과 같다.

Usage: pdsgen {dsname} {volser} [-rf {recfm}] [-len {lrecl}]

- {dsname}

생성할 PDS 데이터 셋 이름을 지정한다.

- {volser}

생성한 PDS 데이터 셋을 저장할 볼륨 시리얼을 지정한다.

- [-rf {recfm}]

생성할 PDS 데이터 셋의 레코드 포맷을 지정한다.

- [-len {lrecl}]

생성할 PDS 데이터 셋의 레코드 길이를 지정한다.

pdsgen을 통해 생성된 PDS는 RECFM=FB, LRECL=80, BLKSIZE=8000의 속성을

가진다.

사용예제

TEST.PDS 데이터 셋을 100000 볼륨에 생성하는 예이다.

$ pdsgen TEST.PDS 100000

제3장 데이터 셋 툴

OpenFrame 툴 참조 안내서 64

위의 프로그램을 실행하면 다음과 같은 TEST.PDS 파일이 생성된다.

DSN : TEST.PDS

VOLUME : 100000 TYPE : NONVSAM

DSORG : PO RECFM : FB

KEYPOS : 0 KEYLEN : 0

LRECL(A) : 80 LRECL(M) : 80

BLKSIZE : 8000 DATASIZE : 0

OWNER ID : open DEVTYPE : 3380

CREATION : 20070126 EXPIRATION :

LAST REFERENCE DATE(TIME) : ()

SMS STORAGE CLASS :

SMS MANAGEMENT CLASS :

SMS DATA CLASS :

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 65

제4장 HiDB 관련 툴

4.1 hdmpgen

hdmpgen은 IMS DB 데이터 셋을 OpenFrame HiDB 데이터 셋으로 마이그레이션

하기 위해서 IMS DB 데이터 셋을 SAM 파일로 덤프할 때 사용할 코볼 프로그램

을 생성하는 툴이다.

사용법

hdmpgen 프로그램을 실행하는 방법은 다음과 같다.

Usage: hdmpgen DBDNAME

- DBDNAME

마이그레이션할 데이터 셋의 구조를 정의한 DBD 이름을 지정한다. hdmpgen

은 DBD를 바탕으로 코볼 프로그램을 생성한다.

hdmpgen을 실행시킨 디렉터리에 DBDNAME.cbl 코볼 프로그램이 생성된다.

사용예제

EXDBD1으로 코볼 프로그램을 생성하는 예이다.

$ hddmpgen EXDBD1

위의 예제 실행 결과 코볼 프로그램 EXDBD1.cbl이 생성된다.

참고: HiDB에 대한 자세한 내용은 “HiDB 안내서”를 참고한다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 66

4.2 hdgensch

hdgensch는 IMS DB 데이터 셋을 OpenFrame HiDB 데이터 셋으로 마이그레이션

할 때 EBCDIC 코드에서 ASCII 코드로 변환 시 사용되는 스키마 파일을 생성하

는 프로그램이다.

스키마 파일에는 레코드의 필드 별로 코드변환 규칙이 지정되어 있다.

사용법

hdgensch 프로그램을 실행하는 방법은 다음과 같다.

Usage: hdgensch DBDNAME

- DBDNAME

마이그레이션할 HiDB 데이터 셋의 구조를 정의한 DBD 이름을 지정한다.

DBD 안에는 여러 개의 세그먼트들이 정의되어 있다. hdgensch를 이용하여

스키마 파일을 만들기 위해서는 이들 세그먼트 이름에 해당하는 코볼

copybook이 $WORK/cpybook 디렉터리에 존재해야 한다.

$WORK/hidb_conv/scheme에 DBDNAME.conv 스키마 파일이 생성된다.

사용예제

스키마 파일을 생성하는 예이다.

$ hdgensch EXDBD1

PRINT NOGEN

DBD NAME=EXDBD1,ACCESS=(HIDAM,VSAM)

DATASET DD1=HIDAMD,DEVICE=3380

*

SEGM NAME=SEG1,BYTES=48,POINTER=TWINBWD

LCHILD NAME=(POINTER,EXHIIND),POINTER=INDX

FIELD NAME=(SEG1KEY,SEQ),BYTES=6,START=1,TYPE=C

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 67

FIELD NAME=KOSI,BYTES=4,START=7,TYPE=C

FIELD NAME=/CKXX,BYTES=4,START=1

FIELD NAME=/SX1,BYTES=4

*

SEGM NAME=SEG2,PARENT=((SEG1,DBLE)),BYTES=32,POINTER=TWINBWD

FIELD NAME=(SEG2KEY,SEQ),BYTES=6,START=1,TYPE=C

FIELD NAME=HAHA,BYTES=4,START=7,TYPE=C

FIELD NAME=/SX2,BYTES=4

*

SEGM NAME=SEG3,PARENT=((SEG2,DBLE)),BYTES=16,POINTER=TWINBWD

FIELD NAME=(SEG3KEY,SEQ),BYTES=6,START=1,TYPE=C

*

SEGM NAME=SEG4,PARENT=((SEG2,DBLE)),BYTES=32,POINTER=TWINBWD

FIELD NAME=(SEG4KEY,SEQ),BYTES=6,START=1,TYPE=C

*

SEGM NAME=SEG5,PARENT=((SEG1,DBLE)),BYTES=48,POINTER=TWINBWD

FIELD NAME=(SEG5KEY,SEQ),BYTES=6,START=1,TYPE=C

*

DBDGEN

FINISH

END

<DBD EXDBD1>

위의 <DBD EXDBD1>에서 SEGM 구문에 정의된 NAME은 SEG1, SEG2, SEG3,

SEG4, SEG5가 있으며 이들을 세그먼트라 부른다.

hdgensch는 DBD에서 이들 세그먼트 이름을 찾고, 지정된 디렉터리

($WORK/cpybook)에서 세그먼트에 해당하는 코볼 copybook을 찾는다.

위의 예제에서는 지정된 디렉터리($WORK/cpybook)에서 SEG1.cpy, SEG2.cpy,

SEG3.cpy, SEG4.cpy, SEG5.cpy를 찾는다. 그리고 hdgensch 프로그램을 사용하

여 각각의 copybook에서 스키마 파일 SEG1.conv, SEG2.conv, SEG3.conv,

SEG4.conv, SEG5.conv을 생성한다. 마지막으로 이들 5개의 스키마 파일을 하나

의 EXDBD1.conv 스키마 파일로 생성한다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 68

EXDBD1.conv의 결과는 다음과 같다.

# conversion scheme

*conversion SEG1

0 , 8, EBC_ASC # SEGMENT ID

8, 48, EBC_ASC # SEG1-DATA

# conversion scheme

*conversion SEG2

0 , 8, EBC_ASC # SEGMENT ID

8, 16, EBC_ASC # SEG2-DATA

24, 4, ZONED # SEG2-NUM

28, 12, EBC_ASC # SEG2-NAME

40, 16, COPY # FILLER

# conversion scheme

*conversion SEG3

0 , 8, EBC_ASC # SEGMENT ID

8, 16, EBC_ASC # SEG3-NAME

24, 32, COPY # FILLER

# conversion scheme

*conversion SEG4

0 , 3, EBC_ASC # SEGMENT ID

8, 28, EBC_ASC # SEG4-NAME

36, 4, COPY # SEG-VAL

40, 16, COPY # FILLER

# conversion scheme

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 69

*conversion SEG5

0 , 3, EBC_ASC # SEGMENT ID

8, 48, EBC_ASC # SEG5-DATA

*condition

0, 8, "SEG1 ", SEG1

0, 8, "SEG2 ", SEG2

0, 8, "SEG3 ", SEG3

0, 8, "SEG4 ", SEG4

0, 8, "SEG5 ", SEG5

관련 환경설정

UNIX 환경파일(.profile)에 환경변수 WORK를 설정한다.

WORK=$HOME/work

$WORK/cpybook 디렉터리 안에 필요한 copybook이 존재해야 한다.

hdprecon, hdload, hdprfxres, hdprfxup과 함께 IMS DB 데이터 셋을 HiDB 데이터

셋으로 마이그레이션할 때 쓰인다.

참고: HiDB에 대한 자세한 내용은 “HiDB 안내서”를 참고한다.

4.3 hdprecon

hdprecon은 IMS DB 데이터 셋을 OpenFrame HiDB 데이터 셋으로 마이그레이션

할 때 데이터의 포맷을 원하는 형태로 맞추기 위해 사용되는 프로그램이다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 70

hdprecon의 입/출력 데이터 셋의 형식은 다음과 같다.

[그림 4-1] 입/출력 데이터 셋 형식

사용법

hdprecon 프로그램을 실행하는 방법은 다음과 같다.

Usage: hdprecon IN-FILE OUT-FILE DBDNAME record_size [header_size]

- IN-FILE

포맷팅에 사용할 파일명을 지정한다.

- OUT-FILE

포맷팅 후 생성된 파일을 저장할 파일명을 지정한다.

- DBD_NAME

마이그레이션할 데이터 셋을 정의한 DBD 이름을 지정한다.

- record_size

입력 데이터 셋의 레코드 크기를 지정한다.

- [header_size]

데이터가 아닌 키 부분의 크기를 지정한다.

사용예제

마이그레이션 대상 데이터 셋을 DBD에 맞춰 포맷팅한 후 새로운 데이터 셋을

생성하는 예이다. 이때 각 레코드의 크기는 66 바이트로 맞춰진다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 71

$ hdprecon EXDBD1.in EXDBD1.out EXDBD1 66

PRINT NOGEN

DBD NAME=EXDBD1,ACCESS=(HIDAM,VSAM)

DATASET DD1=HIDAMD,DEVICE=3380

*

SEGM NAME=SEG1,BYTES=48,POINTER=TWINBWD

LCHILD NAME=(POINTER,EXHIIND),POINTER=INDX

FIELD NAME=(SEG1KEY,SEQ),BYTES=6,START=1,TYPE=C

FIELD NAME=KOSI,BYTES=4,START=7,TYPE=C

FIELD NAME=/CKXX,BYTES=4,START=1

FIELD NAME=/SX1,BYTES=4

*

SEGM NAME=SEG2,PARENT=((SEG1,DBLE)),BYTES=32,POINTER=TWINBWD

FIELD NAME=(SEG2KEY,SEQ),BYTES=6,START=1,TYPE=C

FIELD NAME=HAHA,BYTES=4,START=7,TYPE=C

FIELD NAME=/SX2,BYTES=4

*

SEGM NAME=SEG3,PARENT=((SEG2,DBLE)),BYTES=16,POINTER=TWINBWD

FIELD NAME=(SEG3KEY,SEQ),BYTES=6,START=1,TYPE=C

*

SEGM NAME=SEG4,PARENT=((SEG2,DBLE)),BYTES=32,POINTER=TWINBWD

FIELD NAME=(SEG4KEY,SEQ),BYTES=6,START=1,TYPE=C

*

SEGM NAME=SEG5,PARENT=((SEG1,DBLE)),BYTES=48,POINTER=TWINBWD

FIELD NAME=(SEG5KEY,SEQ),BYTES=6,START=1,TYPE=C

*

DBDGEN

FINISH

END

<DBD.EXDBD1>

위 예제에서 hdprecon은 EXDBD1.in 파일을 읽어서 [그림 4-1]의 출력 데이터

형식으로 변환하여 EXDBD1.out 파일을 생성한다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 72

관련 환경설정

UNIX 환경파일(.profile)에 환경변수 WORK를 설정한다.

WORK=$HOME/work

$WORK/data 디렉터리 입력 파일이 존재해야 한다. 포맷팅 후 생성되는 출력 파

일도 이 디렉터리에 생성된다.

DBDLIB이 정의되어 있어야 하고, 필요한 DBD가 DBDLIB에 존재해야 한다.

hdgensch, hdload, hdprfxres, hdprfxup과 함께 IMS DB 데이터 셋을 HiDB 데이터

셋으로 마이그레이션 할 때 쓰인다.

참고: HiDB에 대한 자세한 내용은 “HiDB 안내서”를 참고한다.

4.4 hdload

hdload는 IMS DB 데이터 셋을 OpenFrame HiDB 데이터 셋으로 마이그레이션할

때 ASCII 코드로 변환된 데이터를 OpenFrame HiDB 데이터베이스로 로드하기

위해 사용되는 프로그램이다.

사용법

hdload 프로그램을 실행하는 방법은 다음과 같다.

Usage : hdload PSB_name DATA_file DD_list

- PSB_name

데이터를 로드시킬 때 필요한 PSB 이름을 지정한다.

- DATA_file

ASCII 코드로 변환된 데이터를 저장할 파일을 지정한다. 데이터 내의 레코드

는 계층 순서에 맞게 정렬되어있어야 한다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 73

- DD_list

PSB에서 사용되는 DBD에는 DDNAME만 기술되어 있다. 따라서 데이터 셋

을 로드하기 위해서는 DDNAME에 데이터 셋 이름을 연결시켜 주어야 한다.

HiDB 데이터 셋을 로드할 때는 한 개의 DD만 필요한 것이 아니므로, 필요

한 DD 개수만큼 기술해주어야 한다.

사용예제

데이터를 로드시키는 예이다.

$ hdload EXPSB1 EXPSB1.data EXPSB1.ddlist

PSB EXPSB1의 내용은 다음과 같다.

PRINT NOGEN

PCB TYPE=DB,DBDNAME=EXDBD1,KEYLEN=18,PROCOPT=LS

SENSEG NAME=SEG1

SENSEG NAME=SEG2,PARENT=SEG1

SENSEG NAME=SEG3,PARENT=SEG2

SENSEG NAME=SEG4,PARENT=SEG2

SENSEG NAME=SEG5,PARENT=SEG1

PSBGEN PSBNAME=EXPSB1,LANG=COBOL

END

이 PSB는 DBD EXDBD1를 지정하고 있다. DBD EXDBD1의 내용은 다음과 같다.

PRINT NOGEN

DBD NAME=EXDBD1,ACCESS=(HIDAM,VSAM)

DATASET DD1=HIDAMD,DEVICE=3380

*

SEGM NAME=SEG1,BYTES=48,POINTER=TWINBWD

LCHILD NAME=(POINTER,EXHIIND),POINTER=INDX

FIELD NAME=(SEG1KEY,SEQ),BYTES=6,START=1,TYPE=C

FIELD NAME=KOSI,BYTES=4,START=7,TYPE=C

FIELD NAME=/CKXX,BYTES=4,START=1

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 74

FIELD NAME=/SX1,BYTES=4

*

SEGM NAME=SEG2,PARENT=((SEG1,DBLE)),BYTES=32,POINTER=TWINBWD

FIELD NAME=(SEG2KEY,SEQ),BYTES=6,START=1,TYPE=C

FIELD NAME=HAHA,BYTES=4,START=7,TYPE=C

FIELD NAME=/SX2,BYTES=4

*

SEGM NAME=SEG3,PARENT=((SEG2,DBLE)),BYTES=16,POINTER=TWINBWD

FIELD NAME=(SEG3KEY,SEQ),BYTES=6,START=1,TYPE=C

*

SEGM NAME=SEG4,PARENT=((SEG2,DBLE)),BYTES=32,POINTER=TWINBWD

FIELD NAME=(SEG4KEY,SEQ),BYTES=6,START=1,TYPE=C

*

SEGM NAME=SEG5,PARENT=((SEG1,DBLE)),BYTES=48,POINTER=TWINBWD

FIELD NAME=(SEG5KEY,SEQ),BYTES=6,START=1,TYPE=C

*

DBDGEN

FINISH

END

이 DBD는 3번째 줄 DATASET DD1=HIDAMD,DEVICE=3380에서 쓰여진 것처럼

HIDAMD라는 DD를 사용한다.

그리고 6번째 줄 LCHILD NAME=(POINTER,EXHIIND),POINTER=INDX에서,

EXHIIND라는 DBD를 사용한다.

DBD EXHIIND는 INDEX를 위해서 사용된다.

DBD EXHIIND 의 내용은 다음과 같다.

PRINT NOGEN

DBD NAME=EXHIIND,ACCESS=(INDEX,VSAM)

DATASET DD1=HIDAMI,DEVICE=3380

*

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 75

SEGM NAME=POINTER,BYTES=6

LCHILD NAME=(SEG1,EXDBD1),INDEX=SEG1KEY

FIELD NAME=(INDEXFLD,SEQ),BYTES=6,START=1

*

DBDGEN

FINISH

END

이 DBD는 HIDAMI라는 DD를 사용한다. 따라서 이 예제의 HiDB 데이터 셋을 로

드하기 위해서는 HIDAMD, HIDAMI 두 개의 DD에 대해서 데이터 셋을 정의해야

한다.

EXPSB1.ddlist는 다음과 같다.

HIDAMD,TEST.HDLOADD

HIDAMI,TEST.HDLOADI

hdload를 실행하면 EXPSB1.data가 로드된다.

환경설정

UNIX 환경파일(.profile)에 환경변수 WORK를 설정해야 한다.

WORK=$HOME/work

$WORK/hidb_conv/data에 로드되는 데이터 파일과 DD list가 정의된 파일이 존

재해야 한다.

hdprecon, hdgensch, hdprfxres, hdprfxup과 함께 IMS DB 데이터 셋을 HiDB 데이

터 셋을 마이그레이션할 때 쓰인다.

참고: HiDB에 대한 자세한 내용은 “HiDB 안내서”를 참고한다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 76

4.5 hdprfxres

hdprfxres는 IMS DB 데이터 셋을 OpenFrame HiDB 데이터 셋으로 마이그레이션

할 때 Logical Relationship이 있는 경우에 사용되는 프로그램이다.

hdload를 통해 Logical Relationship에 관계된 데이터 셋이 모두 로드된 후에 사용

한다. 데이터 셋 간에 Logical Relationship이 존재하는 경우, 서로 연관된 세그먼

트들의 prefix를 [그림 4-2]의 형태로 출력 파일에 출력한다.

여기서 생성된 출력 파일은 LPCK와 Sequence를 키로 하여 정렬한 후 hdprfxup

을 통해 다시 HiDB 데이터 셋으로 로드시킨다.

[그림 4-2] 출력 파일 형식

사용법

hdprfxres 프로그램을 실행하는 방법은 다음과 같다.

Usage: hdprfxres PSB_name DD_list OUTPUT_FILE

- PSB_NAME

어플리케이션 프로그램에서 HiDB를 사용하기 위한 정보를 담고 있는 PSB

이름을 기술한다.

- DD_list

PSB 안에는 어플리케이션 프로그램이 HiDB를 사용하는데 필요한 DBD가 기

술되어 있다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 77

또 DBD에는 DDNAME이 기술되는데, DD_list는 DBD에 기술된 DDNAME과

데이터가 저장되는 데이터 셋 이름을 연결시킨 정보를 담고 있는 파일을 기

술한다.

- OUTPUT_FILE

hdprfxres의 출력 파일명을 기술한다.

사용예제

Logical Relationship에 관련된 세그먼트들의 prefix를 추출하는 예이다.

$ hdprfxres EX1LPSB EX1PDBD.ddlist EX1PRFX1.out

- EX1LPSB에는 Logical Relationship으로 연관된 HiDB에 대한 DBD 및 여러

정보들이 기술되어 있다.

- EX1PDBD.ddlist에는 EX1LPSB에서 사용하는 모든 DBD에 대해서 DDNAME

과 데이터가 저장되는 데이터 셋 이름의 연결 정보가 기술되어 있다.

- 관계된 HiDB에서 Logical Relationship으로 연관된 세그먼트들에 대한 prefix

정보가 [그림 4-2]의 형태로 EX1PRFX1.out에 출력된다.

환경설정

UNIX 환경파일(.profile)에 환경변수 WORK를 설정해야 한다.

WORK=$HOME/work

$WORK/ddlist 디렉터리에 DD_list 파일이 존재해야 한다.

$WORK/hdprfx 디렉터리에 output 파일이 생성된다.

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 78

Appendix

hdprfxup을 하기 전에 [그림 4-2]에서의 LPCK(Logical Parent Concatenated Key)

와 SEQUENCE을 키로 하여 정렬을 해야 한다.

hdgensch, hdprecon, hdload, hdprfxup과 함께 IMS DB 데이터 셋을 HiDB 데이터

셋으로 마이그레이션 할 때 쓰인다.

참고: HiDB에 대한 자세한 내용은 “HiDB 안내서”를 참고한다.

4.6 hdprfxup

hdprfxup은 IMS DB 데이터 셋을 OpenFrame HiDB 데이터 셋으로 마이그레이션

할 때 Logical Relationship이 있는 경우에 사용되는 프로그램이다.

hdprfxres의 출력 파일에 대해서 정렬 작업을 거친 후에 사용된다. 정렬된 데이터

를 사용하여 HiDB의 Logical Relationship에 관련된 세그먼트들의 prefix를 갱신하

여 세그먼트들간에 Logical Relation을 맺어준다.

사용법

hdprfxup 프로그램을 실행하는 방법은 다음과 같다.

Usage: hdprfxup PSB_name DD_list INPUT-FILE

- PSB_name

어플리케이션 프로그램에서 HiDB를 사용하기 위한 정보를 담고 있는 PSB

이름을 기술한다. hdprfxres에서 사용하는 것과 동일한 PSB를 사용한다.

- DD_list

PSB안에는 어플리케이션 프로그램이 HiDB를 사용하는데 필요한 DBD가 기

술되어 있다. 또 DBD에는 DDNAME이 기술되는데, DD_list는 DBD에 기술된

DDNAME과 데이터가 저장되는 데이터 셋 이름을 연결시킨 정보를 담고 있

제4장 HiDB 관련 툴

OpenFrame 툴 참조 안내서 79

는 파일을 기술한다.

hdprfxres에서 사용하는 것과 동일한 DD_list를 사용한다.

- INPUT-FILE

hdprfxup의 input으로 사용되는 파일을 기술한다.

hdprfxres의 output 파일에 대해서 정렬 작업을 거친 파일을 사용한다.

사용예제

hdprfxres에서 생성된 파일을 정렬한 prefix를 로드하여 logical relationship을 맺어

주는 예이다.

$ hdprfxup EX1LPSB EX1PDBD.ddlist EX1PRFX1.in

EX1LPSB에는 Logical Relationship으로 연관된 HiDB에 대한 DBD 및 정보들이

기술되어 있다.

EX1PDBD.ddlist에는 EX1LPSB에서 사용하는 모든 DBD에 대해서 DDNAME과

데이터 셋 이름의 연결 정보가 기술되어 있다.

EX1PRFX1.in의 데이터를 바탕으로 Logical Relationship에 관련된 세그먼트들의

prefix를 갱신한다.

관련 환경설정

UNIX 환경파일(.profile)에 환경변수 WORK를 설정해야 한다.

WORK=$HOME/work

$WORK/ddlist 디렉터리에 DD_list 파일이 존재해야 한다.

$WORK/hdprfx 디렉터리에 input 파일이 존재해야 한다.

hdgensch, hdprecon, hdload, hdprfxres과 함께 IMS DB 데이터 셋을 HiDB 데이터

셋으로 마이그레이션할 때 쓰인다.

참고: HiDB에 대한 자세한 내용은 “HiDB 안내서”를 참고한다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 81

제5장 온라인 시스템 툴

5.1 ofboot

ofboot는 OpenFrame 온라인 시스템을 부팅하는 프로그램이다.

엔진을 부팅하기 전에 필요한 리소스들을 준비하고, 엔진을 부팅한 후에는 실제

사용자의 요청을 처리하기 전에 필요한 작업을 자동으로 수행한다.

ofboot를 실행시키면 다음과 같은 세 단계를 거쳐서 부팅 작업을 수행하게 된다.

첫번째 단계는 OpenFrame 온라인 시스템에서 사용할 공유 메모리나 디렉터리,

파일 등의 리소스들을 할당하는 단계이다.

두번째 단계는 실제 OpenFrame 엔진을 기동시키는 단계이다.

마지막 단계에서는 OpenFrama 온라인 시스템을 기동 후 실제 사용자의 요청을

처리하기 전에 필요한 초기화 작업을 수행하는 단계이다.

이 단계에서는 온라인 서버의 부팅 상태를 확인해서 정상적으로 부팅될 때까지

기다리는 작업과 OpenFrame 엔진의 포트를 개방하는 작업을 기본적으로 수행하

게 된다. 이 외에도 ofboot.post 파일에 트랜잭션 관련 스크립트를 추가하여,

ofclient 툴을 이용해서 특정 트랜잭션을 호출하는 작업 등을 수행할 수 있다.

첫번째 단계와 마지막 단계는 각각 $(TMAXDIR)/config 디렉터리에 있는

ofboot.pre, ofboot.post 라는 두 개의 쉘 스크립트를 이용해서 시스템 운영

자가 직접 설정할 수 있다.

참고: ofclient에 대한 내용은 본 안내서의 “5.6 ofclient”를 참고한다. ofboot.pre와 ofboot.post에 대한 자세한 내용은 “OpenFrame OSC 운영자 안내

서”와 “OpenFrame OSI 운영자 안내서”를 참고한다.

두번째 단계는 $(OPENFRAME_HOME)/config 디렉터리에 있는 ofsys.seq,

ofuser.seq 라는 두 개의 텍스트 파일을 이용해서 ofboot 시 OpenFrame 엔진

의 서버를 순서대로 기동시킨다. 이때 ofuser.seq는 시스템 운영자가 직접 설

정할 수 있다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 82

사용법

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

Usage: ofboot

| ofboot -n [NODE]

- -n [NODE]

OpenFrame 온라인 시스템의 해당 노드만 부팅한다.

아무런 옵션을 지정하지 않을 경우, OpenFrame 온라인 시스템 전체를 부팅

한다.

5.2 ofdown

ofdown은 OpenFrame 온라인 시스템을 종료하는 프로그램이다.

엔진을 실제로 내리기 전에 최종적으로 필요한 작업을 수행하고, 엔진을 종료한

후에는 엔진에서 사용하는 리소스들을 반환해주는 작업을 자동화한다.

ofboot를 실행시키면 다음과 같은 세 단계를 거쳐서 종료 과정을 수행하게 된다.

첫번째 단계는 OpenFrame 온라인 시스템을 내리기 전에 필요한 작업을 수행하

는 단계이다. 이 외에도 ofdown.pre 파일에 종료시 필요한 트랜잭션 관련 스크

립트를 추가하여, ofclient 툴을 이용해서 특정 트랜잭션을 호출하는 작업 등을 수

행할 수 있다.

두번째 단계는 실제 OpenFrame 엔진을 종료하는 단계이다.

마지막 단계에서는 엔진 종료 후 OpenFrame 온라인 시스템에서 사용하고 있던

공유 메모리나 디렉터리, 파일 등의 리소스들을 삭제하는 단계이다.

첫번째 단계와 마지막 단계는 각각 $(TMAXDIR)/config 디렉터리에 있는

ofdown.pre, ofdown.post 라는 두 개의 쉘 스크립트를 이용해서 시스템 운영

자가 직접 설정할 수 있다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 83

참고: ofdown.pre와 ofdown.post에 대한 자세한 내용은 “OpenFrame OSC 운영자 안

내서”와 “OpenFrame OSI 운영자 안내서”를 참고한다.

두번째 단계는 $(OPENFRAME_HOME)/config 디렉터리에 있는 ofsys.seq,

ofuser.seq 라는 두 개의 텍스트 파일을 이용해서 ofdown 시 OpenFrame 엔진의

서버를 순서대로 종료시킨다. 이때 ofuser.seq는 시스템 운영자가 직접 설정할 수

있다.

사용법

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

Usage: ofdown

| ofdown -n [NODE]

| ofdown -i

- -n [NODE]

OpenFrame 온라인 시스템의 해당 노드만 종료한다.

- -i

OpenFrame의 모든 서버들에 대해서 종료과정을 거치지 않고 강제로 종료한

다. 특정 서버가 종료되지 않거나 모든 서버들을 즉시 종료시키고자 할 경우

에 사용한다.

아무런 옵션을 지정하지 않을 경우, OpenFrame 온라인 시스템 전체를 종료

한다.

5.3 ofadmin

ofadmin은 OSC와 OSI 서버를 부팅하기 위해서 필요한 공유 메모리나 디렉터리

등의 리소스를 준비하며 서버가 종료된 후에는 서버를 위해 준비된 리소스들을

반환하는 프로그램이다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 84

사용법

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

Usage: ofadmin [options]

| ofadmin -create {OSC|OSI|OSInn}

| ofadmin -remove {OSC|OSI|OSInn}

| ofadmin -create <server> [-x <resource> ...]

| ofadmin -remove <server> [-x <resource> ...]

| ofadmin -loglvl {OSC|OSI|OSInn}:{E|I|D}

| ofadmin -tacf {OSC|OSI|OSInn}:{on|off}

[options]은 ofmsvr의 정보를 확인하는 –h, -v 옵션이 있다.

- -create OSC

OSC 시스템에서 사용할 SWA(System Work Area) 영역을 공유 메모리에 생

성한다.

- -create <server> [-x <resource> ...]

아래와 같은 작업을 거쳐 OSC 서버에서 사용되는 리소스들을 준비한다.

<server>의 종류는 OSC 어플리케이션 서버와 MSC 게이트웨이 서버가 있다.

–x 옵션은 <resource>를 나열할 경우 해당 리소스를 제외하고 OSC 서버에

서 사용되는 리소스들을 준비한다.

1. OSC 서버에서 사용할 RWA(Region Work Area) 영역을 공유 메모리에

생성하고 OSC 서버에서 필요한 설정 파일을 읽어서 RWA 영역에 저장

한다.

2. OSC 서버에서 사용할 CWA(Common Work Area) 영역을 공유 메모리에

생성한다.

3. OSC 서버에서 사용할 RTSD(RunTime System Definition) 영역을 공유

메모리에 생성하고, OSD 데이터 셋으로부터 System Definition 정보를 읽

어서 RTSD 영역에 저장한다.

4. OSC 서버의 종류가 MSC 게이트웨이 서버일 경우 사용할 ATI(Active

Terminal Information) 영역을 공유 메모리에 생성한다.

5. Intra Partition TDQ에서 사용하는 데이터 셋을 초기화한다.

6. OSC 서버에서 사용할 TSQ(Temporary Storage Queue) 영역을 공유 메

모리에 생성한다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 85

7. OSC 태스크 컨트롤 기능을 위해 사용되는 임시파일을 저장할 디렉터리

를 생성한다.

- -create OSI | OSInn

아래의 작업을 거쳐 OSI 시스템에서 사용할 리소스들을 준비한다. (nn : OSI

콘트롤 리전을 여러 개 설정할 때 사용 예) ofadmin –create OSI01)

1. OSI 시스템에서 사용할 RWA 영역을 공유 메모리에 생성하고, OSI 시스

템에서 필요한 설정 파일을 읽어서 RWA 영역에 저장한다.

2. OSI 시스템에서 사용할 SWA 영역을 공유 메모리에 생성한다.

3. OSI 시스템에서 사용할 ATI 영역을 공유 메모리에 생성한다.

4. OSI 시스템에서 사용할 RTSD(RunTime System Definition) 영역을 공유

메모리에 생성하고, OSD 데이터 셋으로부터 OSI 사용자 서버 및 사용자

트랜잭션 정보를 읽어서 RTSD 영역에 저장한다.

- -remove OSC

OSC 시스템을 위해 할당된 SWA 공유 메모리 영역을 삭제한다.

- -remove <server> [-x <resource> ...]

아래의 작업을 거쳐 OSC 서버를 위해 할당된 리소스들을 제거한다.

<server>의 종류는 OSC 어플리케이션 서버와 MSC 게이트웨이 서버가 있다.

–x 옵션은 <resource>를 나열할 경우 해당 리소스를 제외하고 OSC 서버를

위해 할당된 리소스들을 제거한다.

1. OSC 태스크 컨트롤 기능을 위해 사용되는 임시파일을 저장할 디렉터리

를 삭제한다

2. OSC 서버를 위해 할당된 TSQ 공유 메모리 영역을 삭제한다.

3. OSC 서버의 종류가 MSC 게이트웨이 서버일 경우 할당된 ATI 공유 메

모리 영역을 삭제한다.

4. OSC 서버를 위해 할당된 RTSD 공유 메모리 영역을 삭제한다.

5. OSC 서버를 위해 할당된 CWA 공유 메모리 영역을 삭제한다.

6. OSC 서버를 위해 할당된 RWA 공유 메모리 영역을 삭제한다.

- -remove OSI

아래의 작업을 거쳐 OSI 시스템을 위해 준비된 리소스들을 제거한다.

1. OSI 시스템을 위해 할당된 RTSD 공유 메모리 영역을 삭제한다.

2. OSI 시스템을 위해 할당된 ATI 공유 메모리 영역을 삭제한다.

3. OSI 시스템을 위해 할당된 SWA 공유 메모리 영역을 삭제한다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 86

4. OSI 시스템을 위해 할당된 RWA 공유 메모리 영역을 삭제한다.

- -loglvl {OSC|OSI|OSInn}:{E|I|D}

OSC 시스템 또는 OSI 시스템의 로그 레벨을 다음의 세가지 중 하나로 수정

한다.

E (Error Level)는 에러가 발생했을 경우의 로그 정보만 기록한다.

I (Information Level)는 에러 레벨보다 더 자세한 경고나 알림 메시지까지 로

그에 기록한다.

D (Debug Level)는 엔진의 버그 상황을 추적하기 위해서 도움이 되는 자세한

로그 정보를 기록한다.

- -tacf {OSC|OSI|OSInn}:{on|off}

OSC 시스템 또는 OSI 시스템의 자원을 사용할 때 TACF를 사용한 보안인증

과정을 거칠 것인지 혹은 생략할 것인지 결정한다.

on은 TACF를 사용한 보안인증 과정을 거치도록 설정한다.

off는 TACF를 사용한 보안인증 과정을 생략한다.

사용예제

OSC 시스템을 위한 공유 리소스를 할당한다.

$ ofadmin -create OSC

OSC00001 서버를 위해 cwa와 tdq를 제외한 나머지 공유 리소스를 할당한다.

$ ofadmin -remove OSC00001 –x cwa tdq

OSC00001 서버를 위해 할당된 공유 리소스를 제거한다.

$ ofadmin -remove OSC00001

OSC00001 서버를 위해 cwa와 tdq를 제외한 나머지 할당된 공유 리소스를 제거

한다.

$ ofadmin -remove OSC00001 –x cwa tdq

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 87

OSC 시스템의 로그 레벨을 Information level로 설정한다.

$ ofadmin -loglvl OSC:I

OSI 시스템의 자원을 사용할 때 TACF 보안 인증 과정을 거치도록 설정한다.

$ ofadmin -tacf OSI:on

관련 환경설정 OSC.conf

ofadmin 툴의 OSC 관련 기능을 사용하기 위해서는 OSC.conf 파일 및 OSC,

MSC 개별 서버를 위한 설정 파일들이 모두 설정되어 있어야 한다.

OSI.conf

ofadmin 툴의 OSI 관련 기능을 사용하기 위해서는 OSI.conf 파일의 설정 항목

들이 모두 설정되어 있어야 한다.

5.4 ofmadmin

ofmadmin은 멀티 노드로 구성된 OpenFrame 온라인 시스템의 부팅을 위해서 필

요한 기능을 제공하는 TCP/IP 클라이언트 프로그램이다.

OpenFrame 온라인 시스템을 멀티 노드로 설정할 경우, 모든 노드의 온라인 시

스템이 동일한 온라인 설정 파일을 사용할 수 있도록 하고, 각 노드에서는 개별

적으로 ofboot 및 ofdown을 실행함으로써 노드들이 사용할 리소스들을 각자 할당

받을 수 있도록 하는 기능을 제공한다.

ofmsvr 툴이 ofmadmin의 서버 역할을 수행한다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 88

사용법

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

Usage: ofmadmin [options]

| ofmadmin -cpcfg <remoteip>:<remoteport>

| ofmadmin -boot <remoteip>:<remoteport>:<remotenode>

| ofmadmin -shutdown <remoteip>:<remoteport>:<remotenode>

[options]은 ofmsvr의 정보를 확인하는 –h, -v 옵션이 있다.

- -cpcfg <remoteip>:<remoteport>

online.conf 설정 파일을 원격 노드로 복사한다. <remoteip>에는 원격 노

드의 IP 주소를, <remoteport>에는 원격 노드에 떠있는 ofmsvr의 포트 번호를

설정한다.

- -boot <remoteip>:<remoteport>:<remotenode>

원격 노드에 부팅 명령을 요청한다. <remoteip>에는 원격 노드의 IP 주소를,

<remoteport>에는 원격 노드에 떠있는 ofmsvr의 포트 번호를, 그리고

<remotenode>에는 원격의 노드의 이름을 입력한다.

- -shutdown <remoteip>:<remoteport>:<remotenode>

원격 노드에 다운 명령을 요청한다. <remoteip>에는 원격 노드의 IP 주소를,

<remoteport>에는 원격 노드에 떠있는 ofmsvr의 포트 번호를, 그리고

<remotenode>에는 원격의 TMAX 노드의 이름을 입력한다.

사용예제

현재 노드의 온라인 설정파일(online.conf)을 로컬 시스템상의 127.0.0.1의 IP

주소를 갖고 32000번 포트를 사용하는 ofmsvr로 복사한다.

$ ofmadmin -cpcfg 127.0.0.1:32000

127.0.0.1의 IP 주소를 가지는 서버의 32000번 포트를 사용하는 ofmsvr에게

TMAX의 NODE2를 부팅하도록 요청한다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 89

$ ofadmin -boot 127.0.0.1:32000:NODE2

127.0.0.1의 IP 주소를 가지는 서버의 32000번 포트를 사용하는 ofmsvr에게

TMAX의 NODE2를 내리도록 요청한다.

$ ofadmin -shutdown 127.0.0.1:32000:NODE2

5.5 ofmsvr

ofmsvr는 다른 노드의 ofmadmin으로부터 노드의 부팅이나 다운에 관련된 요청이

발생하면 발생한 요청을 수행하고 수행 과정이나 결과 등을 로그로 남기는 역할

을 수행하는 TCP/IP 서버 프로그램이다.

ofmsvr는 다음과 같은 기능을 가지고 있다.

첫째, ofmadmin으로부터 cpcfg 옵션의 요청을 받으면 ofmadmin이 전송한 환경파

일 내용을 로컬 노드의 online.conf에 덮어쓰기한다.

둘째, ofmadmin으로부터 boot 옵션의 요청을 받으면 ofboot의 -n 옵션을 이용해

서 로컬 노드를 부팅시킨다.

셋째, ofmadmin으로부터 down 옵션의 요청을 받으면 ofdown의 -n 옵션을 이용해

서 로컬 노드를 종료시킨다.

사용법

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

Usage: ofmsvr [options]

| nohup ofmsvr&

[options]은 ofmsvr의 정보를 확인하는 –h, -v 옵션이 있다.

ofmsvr 프로세스를 실행시킨다. ofmsvr은 항상 메모리에 상주해야 하는 프로그램

으로 프로그램 이름 뒤에 &를 붙여서 실행시킨다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 90

관련 환경설정 ofmsvr.conf [OFMSVR] PORT=32000

ofmsvr가 사용할 포트 번호를 얻어온다.

ofmsvr.conf 설정파일을 작성한 후 $(OpenFrame_HOME)/config 디렉터리에

저장한다. ofmsvr이 사용할 포트번호는 사용 환경에 따라 빈 포트번호로 설정한

다.

Appendix

ofmsvr는 $(OpenFrame_HOME)/log/ofmsvr.log 파일에 원격으로부터 요청

받은 내용 및 처리 결과를 기록한다.

5.6 ofclient

ofclient는 OpenFrame 온라인 시스템에 트랜잭션을 요청하기 위한 클라이언트 프

로그램이다.

이 외에도 특정 TMAX 서버의 상태를 확인하는 기능과 TMAX 엔진의 차단된 포

트를 해제하는 기능, 사용자 인증을 필요로 하는 트랜잭션을 위해서 사용자 인증

후 트랜잭션을 발생하는 기능을 한다.

사용법

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

Usage: ofclient [[-s <IP>] -p <port>] <transID> [<send_buf>] [-l <recv_buflen>]

| ofclient [[-s <IP>] -p <port>] -oesn [<username>/<password> [<transID> [<send_buf>]]]

| ofclient [[-s <IP>] -p <port>] -oplt <tmaxsvr> [-wait]

| ofclient [[-s <IP>] -p <port>] -unblock

| ofclient [-h | -v]

- [-s <IP>]

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 91

연결하려는 OpenFrame 온라인 시스템이 설치된 시스템의 IP 주소를 지정한

다. OpenFrame이 동작하고 있는 UNIX 시스템과 동일한 시스템에서 ofclient

를 실행할 경우 이 옵션을 생략할 수 있으며, 이 경우 로컬 시스템의 IP 주

소로 접속한다.

- -p <port>

연결하려는 OpenFrame 온라인 시스템이 사용하고 있는 포트 번호를 지정한

다. online.conf 설정파일에 아래와 같이 [TMAX] 섹션 및 TMAXIP 항목을

설정할 경우 –p 옵션을 설정하지 않아도 ofclient에서 자동으로 아래 옵션에

설정된 포트로 연결을 시도하게 된다.

[TMAX]

TMAXPORT=12120

- <transID>

발생시키려고 하는 트랜잭션의 이름을 지정한다.

- <send_buf>

트랜잭션을 호출할 때 보낼 데이터를 버퍼에 기술한다.

- -l <recv_buflen>

트랜잭션의 응답을 받을 버퍼의 크기를 지정한다. 지정하지 않으면 64K 바

이트 크기의 버퍼를 설정한다.

- -oplt <tmaxsvr> [-wait]

이 옵션에 지정된 tmax_server가 현재 사용자 요청을 받을 수 있는지 또는

받을 수 없는 상태인지 확인한다.

-wait 옵션을 추가로 설정하면 TMAX 서버가 준비상태가 될 때까지 1초 간격

으로 계속해서 확인을 수행한다.

- -oesn [<username>/<password> [<transID> [<send_buf>]]]

트랜잭션을 요청할 사용자에 대한 TACF 인증을 받은 후 인증을 필요로 하

는 트랜잭션을 발생시킨다.

명령어 라인에서 파라미터를 지정하지 않은 경우 (즉, -oesn만 입력한 경우),

프롬프트에 user id, group, password, new password를 입력하고 TACF 사용자

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 92

인증과정을 거친다. 사용자 인증에 성공한 후 프롬프트에 트랜잭션 이름과

그 트랜잭션에 전송할 메시지를 입력하여 해당 트랜잭션을 발생시키거나,

‘quit’ 이라고 입력하여 ofclient를 종료한다.

명령어 라인에서 파라미터로 사용자 아이디와 비밀번호를 지정하면 사용자

인증을 위한 프롬프트를 생략할 수 있고, 사용자 아이디와 비밀번호 그리고

트랜잭션 이름을 함께 입력하면 프롬프트 입력을 생략하고 TACF 사용자 인

증을 거친 후 바로 요청된 트랜잭션을 발생시킨다.

send_buf에는 트랜잭션에 넘겨줄 메시지를 입력한다.

- [-unblock]

TMAX의 Call Block 기능으로 차단되어 있는 TMAX 포트를 해제한다.

사용예제

로컬 시스템의 12100번 포트를 통해 TRAN이라는 트랜잭션을 발생시키는 예이다.

이 때 트랜잭션에 1234567890이라는 메시지를 전송하고, 받는 버퍼의 크기는

1024K 바이트로 지정한다.

$ ofclient -s 127.0.0.1 -p 12100 TRAN 1234567890 -l 1024

(OFCLIENT ) service TRAN is started..

(OFCLIENT ) service TRAN done

$

트랜잭션 결과로 메시지가 돌아온다면 다음과 같은 형태로 화면에 출력된다.

(OFCLIENT ) service TRAN is started..

(OFCLIENT ) service TRAN output:

<<OUTPUT MESSAGE>>

$

OSC00001이라는 서버가 준비상태인지 확인하는 예이다. 준비상태가 아니라면

준비상태가 될 때까지 1초 간격으로 계속해서 서버의 상태를 확인한다. 준비상태

가 되면 서버가 준비상태가 되었음을 출력하고 종료한다.

$ ofclient -p 12100 -oplt OSC00001 -wait

(OFCLIENT ) Wait until the tmax server OSC00001 being ready..

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 93

(OFCLIENT ) server OSC00001 is ready.

$

사용자 아이디와 비밀번호를 입력하고 TACF 사용자 인증을 받은 뒤 TRAN이라

는 트랜잭션을 발생시키는 예이다. 비밀번호를 입력할 때에는 화면에 입력한 값

이 표시되지 않는다.

$ ofclient -p 12100 -oesn

user id: USER

group id:

password:

new password:

service (or type 'quit' to quit): TRAN

send buffer: 1234567890

(OFCLIENT ) service FC01 is started..

(OFCLIENT ) service FC01 output:

<<OUTPUT MESSAGE>>

service (or type 'quit' to quit): quit

$

하나의 트랜잭션만 요청할 경우에는 아래와 같은 방식을 사용한다.

$ ofclient -p 12100 -oesn USER/PASS TRAN

(OFCLIENT ) service FC01 is started..

(OFCLIENT ) service FC01 output:

<<OUTPUT MESSAGE>>

$

12120번 포트를 통해서 해당 시스템에 차단되었던 TMAX 포트를 해제한다. 이

때, 12120번 포트는 해당 시스템의 TMAX 설정 파일에 CllUnBlkPort로 설정되어

있는 포트번호를 사용해야 한다.

$ ofclient -p 12120 -unblock

(OFCLIENT ) Unblock done.

$

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 94

Appendix

Call Block이란 TMAX가 부팅되었을 때 특별한 초기화 단계를 거칠 때까지 다른

클라이언트의 접속을 막기 위해서, 처음 부팅될 시점에 TMAX 포트를 차단하는

기능이다.

TMAX 시스템에는 Call Block 기능이 사용 중이더라도 Unblock call을 받기 위해

서 항상 열려있는 포트가 있으며, 그 포트는 CllUnBlkPort 항목으로 설정된다.

5.7 osddump

osddump는 OSD 데이터 셋에 들어있는 온라인 리소스 정의들을 매크로 형태의

파일로 저장하는 프로그램이다.

특정 OSD 데이터 셋에 정의되어 있는 리소스의 정의들을 전부 혹은 특정 타입

의 리소스 정의들을 선택해서 추출할 수 있다. 생성된 매크로 파일은 다시

osdgen의 입력 파일로 사용할 수 있다.

사용법

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

Usage: osddump [options1]

| osddump <file> <dataset> [options2]

[option1]은 osddump의 정보를 확인하는 –h, -v 옵션이 있고, [option2]는 osddump

를 실행하는데 필요한 –t, -s 옵션이 있다.

- file

추출된 매크로 형식의 텍스트를 저장할 파일 이름을 지정한다. 기존에 있던

파일을 선택했을 경우 기존의 내용은 모두 삭제되고 새로 추출된 매크로 형

식의 텍스트로 덮어쓰기 된다.

- dataset

추출할 대상이 되는 OSD 데이터 셋의 이름을 지정한다.

- [-t <type>+]

추출할 리소스들의 타입을 지정한다. 아무것도 지정하지 않을 경우에는 선택

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 95

한 OSD 데이터 셋에 정의되어 있는 모든 타입의 리소스 정의들을 추출한다.

type에는 다음과 같은 종류들이 있으며 하나 이상 지정할 수 있다.

OSC에서 사용하는 리소스: file, tdq, terminal, typeterm, connection. tsmodel

OSI에서 사용하는 리소스: lterm, region, applctn, trans

- [-s]

OSD 데이터 셋을 사용하기 위해 SYS1 연결을 사용하도록 설정한 경우에는

반드시 -s 옵션을 추가해야 한다.

사용예제

OPNFRAME.ONLINE.OSDLIB 데이터 셋에 정의되어 있는 모든 리소스 정의를

읽어서 매크로 형태로 resource.dat 파일에 저장하는 예이다.

$ osddump resource.dat OPNFRAME.ONLINE.OSDLIB

시스템 데이터 셋 서버에서 관리되는 OPNFRAME.ONLINE.OSDLIB 이라는 데이

터 셋으로부터 TDQueue에 대한 정의를 읽어서 dct.dat 파일에 저장하는 예이다.

$ osddump dct.dat OPNFRAME.ONLINE.OSDLIB -t tdq -s

5.8 osdgen

osdgen은 매크로 형식의 리소스 정의가 정의되어 있는 텍스트 파일을 읽어서

OpenFrame 온라인 시스템에서 사용하는 구조로 만들고 지정된 데이터 셋에 저

장하는 역할을 수행하는 프로그램이다.

리소스 정의들을 저장하고 있는 데이터 셋을 OSD(Online System Definition) 데이

터 셋이라고 부른다. 텍스트 파일에 중복되는 정의가 있거나 OSD 데이터 셋에

같은 자원에 대한 정의가 이미 존재하는 경우에는 기존의 것을 마지막에 정의된

것으로 덮어쓰기 한다.

사용법

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

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 96

Usage: osdgen [options1]

| osdgen <file> <dataset> [options2]

[option1]은 osdgen의 정보를 확인하는 –h, -v 옵션이 있고, option2는 osdgen를

실행하는데 필요한 -s 옵션이 있다.

- file

OSD 데이터 셋에 저장하려는 리소스 정의 매크로 파일을 지정한다.

- dataset

리소스 정의 매크로를 저장할 OSD 데이터 셋의 이름을 지정한다.

- [-s]

OSD 데이터 셋을 사용하기 위해 SYS1 연결을 사용하도록 설정한 경우에는

반드시 -s 옵션을 추가해야 한다.

사용예제

resource.dat 파일에 들어있는 리소스 정의 매크로들을 읽어서 시스템에서 사용

하는 구조로 만든 후 OPNFRAME.ONLINE.OSDLIB 데이터 셋에 저장하는 예이

다.

$ osdgen resource.dat OPNFRAME.ONLINE.OSDLIB

Appendix

OSD 데이터 셋을 생성하는 IDCAMS 스크립트의 예는 다음과 같다.

다음 스크립트를 이용하면 1000000 볼륨에 OPNFRAME.ONLINE.OSDLIB이라는

데이터 셋이 생성된다.

DELETE OPNFRAME.ONLINE.OSDLIB CLUSTER

DEFINE CLUSTER (NAME(OPNFRAME.ONLINE.OSDLIB) -

KILOBYTES (128,128) -

VOLUMES (100000) -

INDEXED KEYS (9,0) -

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 97

RECORDSIZE (100,2000) ) -

DATA (CONTROLINTERVALSIZE (2048))

관련 환경설정

IDCAMS를 통해 생성된 OSD 데이터 셋에 osdgen을 이용해서 리소스 정의를 저

장한 후 다음과 같은 환경을 설정한다.

OSC.conf [OSD] DSNAME

OSC 서버에서 설정한 OSD 데이터 셋에 정의된 리소스들을 사용할 수 있다.

OSI.conf [OSD] DSNAME

OSI 서버에서 설정한 OSD 데이터 셋에 정의된 리소스들을 사용할 수 있다.

5.9 oscresp

oscresp는 OSC 어플리케이션 서버에서 사용자 어플리케이션 수행 중에 어플리

케이션에서 사용하고 있는 EXEC CICS 구문의 수행 결과로 RESP, RESP2 값이

세팅되었을 경우 해당 값이 어떤 의미인지 조회할 수 있도록 제공되는 툴이다.

사용자는 oscresp에 EIBFN, RESP, RESP2 값을 입력함으로써 에러 원인에 대한

상세한 설명을 조회할 수 있고, 특정 EIBFN에 대응되는 EXEC CICS 커맨드를

찾아내거나 EIBFN, RESP값만 입력해서 가능한 RESP2 값이 어떤 것들이 있는지

확인하는 것도 가능하다.

사용법

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

Usage: oscresp [options]

| oscresp <EIBFN> [<RESP> [<RESP2>]]

[options]에는 oscresp의 정보를 확인하는 –h, -v 옵션이 있다.

- EIBFN

오류가 발생한 EXEC CICS 커맨드의 EIBFN 값을 입력한다. RESP, RESP2

값을 입력하지 않을 경우 해당 EIBFN이 어떤 커맨드를 의미하는지 알려준다.

- RESP

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 98

EIBLK에 설정된 RESP 값을 입력한다. RESP2 값이 입력되지 않았을 경우에

는 가능한 모든 RESP2값의 종류를 나열한다.

- RESP2

EIBLK에 설정된 RESP2 값을 입력한다.

사용예제

다음은 EXEC CICS RECEIVE MAP (EIBFN=1802)에서 RESP=10, RESP2=00 값

이 설정되었을 경우 해당 에러의 내용을 조회하는 예이다.

$ oscresp 1802 10 00

EIBFN 1802 RECEIVE MAP

INVREQ occurs if a RECEIVE MAP command is issued in a nonterminal task; these tasks do not have a TIOA or a TCTTE.

$

5.10 osccheck

osccheck는 OSC 어플리케이션 서버를 위한 설정 파일들을 체크해서 항목들의

설정 내용을 조회하고, 설정 파일에 오류나 빠진 항목이 없는지 확인하는 툴이다.

osccheck 툴을 통해서 누락된 필수 항목, 설정 값 형식 및 범위 오류, 권장하지

않는 중복 설정된 값, 경우에 따라 문제가 될 수 있는 설정 정보 등을 체크할 수

있고, 실제 서버에서 사용될 설정 값들이 어떻게 되는지 확인하는 것도 가능하다.

osccheck에서 제공되는 정보는 서버 부팅이 안 되는 설정 오류 레벨, 설정 오류

외에 기동 중에 문제를 야기할 수 있는 경고 레벨, 특정 시스템에서만 문제가 될

소지가 있는 정보 레벨, 그리고 모든 설정에 대한 정보를 보여주는 메시지 레벨

의 4 단계가 있으며, 옵션을 통해서 어느 레벨 이상의 메시지만 보여줄 것인지

설정할 수 있다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 99

사용법

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

Usage: osccheck [-l<n>] [-a | [<server>] ...]

| osccheck [-h | -v]

옵션으로는 oscresp의 정보를 확인하는 -h, -v 옵션, 출력 메시지의 레벨을 설정

하는 -l 옵션, 모든 설정 파일을 검사하는 -a 옵션 등이 있다.

- l<n>

메시지의 레벨을 조정한다. <n>에 올 수 있는 레벨의 정보는 다음과 같다.

1: ERROR (오류를 야기하는 문제만 출력)

2: WARNING (오류를 야기하지는 않으나 시스템 운영 중에 문제가 될 소지가

있는 설정까지 출력)

3: INFO (특정 시스템에서는 정상이지만, 다른 시스템에서는 오류일 수 있는

내용을 추가로 출력)

4: MESSAGE (특정 파일의 특정 섹션의 특정 항목에 어떤 값이 설정되었는

지 모두 출력)

- a

$OPENFRAME_HOME/config 디렉터리에 있는 모든 OSC 관련 설정 파일들

을 체크한다.

- <server>

입력된 서버에서 사용하는 설정 파일들만 체크한다.

사용예제

다음은 OSC00001 서버의 설정을 체크해서 경고 레벨까지 출력하도록 하는 예제

이다.

$ osccheck OSC00001

WARNING : file(osc.conf) section(OSC) key(JOBID) - setting this field in osc.conf is not recommanded

WARNING : file(osc.conf) section(OSC) key(RWA_SHMKEY) - setting this field in osc.conf is not recommanded

$

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 100

5.11 osccblpp

osccblpp는 OpenFrame OSC 어플리케이션 서버에서 처리될 코볼 프로그램 소스

내에 존재하는 EXEC CICS 명령어를 전처리하여 결과물을 산출하는 프로그램이

다. 결과물은 해당 파일명에 osccblpp_ 이라는 접두어가 붙는다.

사용법

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

Usage: osccblpp [-b] [-n] [-nc] [-v] file1 [file2 ...]

- file1:

전처리할 코볼 프로그램 소스 파일을 지정한다.

- [file2 ...]

전처리할 코볼 프로그램 소스 파일을 두 개 이상 지정할 수 있다.

- [-n]

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

- [-nc]

DFHCOMMAREA를 추가하지 않는다.

- [-v]

Verbose mode로 실행한다.

사용예제

CBLSAMPLE.cob 파일을 전처리하여 osccblpp_CBLSAMPLE.cob 이라는 파일을

생성하는 예이다.

$ osccblpp CBLSAMPLE.cob

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 101

5.12 mscasmc

mscasmc는 맵에 있는 덤프용 어셈블러 매크로 명령어를 없애주는 프로그램이다.

실제로 화면에 영향을 미치고 맵을 정의하는 부분 외에 덤프용으로 쓰여지는 매

크로들이 있는데, 가령 PRINT ON, NOGEN, TITLE 같은 매크로들은 mscasmc 툴

을 사용하여 전처리를 해준다.

사용법

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

Usage: mscasmc [options1] <file>

| mscasmc [options2] <output-file> <file>

[options1]에는 mscasmc의 사용법을 확인하고 입력된 맵을 보여주는 –h, -d 옵션

이 있다. [options2]에는 출력될 파일명을 설정하는 –o 옵션이 있다.

- [-d]

컴파일하고자 하는 파일의 전처리 과정을 출력하면서 컴파일 하는 옵션으로,

해당 소스가 어떻게 전처리되고 어디서 에러가 발생했는지를 한 눈에 알 수

있다.

- [-o file]

mscasmc 결과를 저장할 파일을 지정한다.

- [-h]

mscasmc의 옵션에 대한 도움말을 확인한다.

- file

전처리하려는 맵 파일의 이름을 지정한다.

사용예제

SCSOW03.map 파일의 덤프용 어셈블러 매크로 명령어를 제거해주는 예이다.

$ mscasmc SCSOW03.map

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 102

위의 명령어를 실행한 후 다음과 같은 메시지가 출력되면서 컴파일이 된다.

[BMSASMC] input map : SCSOW03.map

[BMSASMC] file[SCSOW03.map.atm] create ok.

5.13 mscmapc

mscmapc는 맵 파일을 작성한 후 MSC 게이트웨이나 기타 OSC 모듈에서 내부

적인 처리를 하기 위해 사용할 바이너리 파일과 코볼 어플리케이션에서 맵 필드

에 매치 시키기 위해 생성하는 코볼 카피 파일을 생성하는 프로그램이다.

사용법

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

Usage: mscmapc [options1] <file>

| mscmapc [options2] <dir> <file>

[options1]에는 mscmapc의 사용법을 확인하고 입력된 맵을 보여주는 등 -h, -d,

-m, -n, -p1, -p2 옵션이 있다. [options2]에는 OpenStudio를 위한 출력 디렉터리를

설정하는 -o 옵션이 있다.

- [-d]

컴파일 하고자 하는 소스의 전처리 과정을 출력해주는 옵션이다. 전처리 과

정을 보면서 컴파일이 되기 때문에 에러 발생 시 찾기가 쉽다.

- [-h]

옵션 도움말을 보여준다.

- [-m]

맵 셋 이름으로 코볼 카피 파일을 생성한다.

- [-n]

맵 셋 부분을 맵 이름으로 하여 바이너리 파일을 생성한다.

- [-o directory]

바이너리 파일과 카피 파일을 생성할 디렉터리를 지정한다. 주로 OpenStudio

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 103

에서 mscmapc 툴을 사용할 때 디렉터리를 지정하는 옵션으로 쓰인다.

- [-p [1|2]]

단말기 화면에 출력되는 내용을 미리 보여준다.

-p1이 주어졌을 경우에는 맵의 1 바이트 캐릭터만 정상적으로 출력되고 2

바이트 캐릭터는 정상 출력되지 않는다.

-p2가 주어지면 2 바이트 캐릭터까지 정상적으로 출력된다. 기본값은 p1이다.

- file

컴파일 하려는 맵 파일의 이름을 지정한다.

사용예제

다음은 BMSLOGO.map 파일을 컴파일한 후 바이너리 파일과 코볼 카피 파일을

현재 디렉터리에 생성하는 예이다.

$ mscmapc -o ./ -p1 BMSLOGO.map

위와 같이 입력하면 아래의 화면이 출력된다.

* input map : BMSLOGO.map

* preview : ---------------------------------------------------------------(begin)-

MAP : [BGLOGO ]

123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+

------------------------------------------------------------------------------>S

01|

02| @*** WELCOME TO OpenFrame ONLINE ***

03|

04|

05| @ ***** /****** /*******/** /**/*******/****** /*** /**/**/**/*******

06| @/*******/*******/*******/*** /**/*******/******* /***** /********/*******

07| @/**///**/**///**/**//////*** /**/**//////**///**/**///**/********/**/////

08| @/** /**/** /**/** /****/**/** /** /**/** /**/**/**/**/**

09| @/** /**/*******/*******/*******/*******/*******/*******/**/**/**/*******

10| @/** /**/******//*******/*******/*******/******//*******/**/**/**/*******

11| @/** /**/**//// /**//////**/****/**//////**///**/**///**/**/**/**/**/////

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 104

12| @/** /**/** /** /** /***/** /** /**/** /**/**/**/**/**

13| @/*******/** /*******/** /***/** /** /**/** /**/**/**/**/*******

14| @//*****//** /*******/** //**/** /** /**/** /**/**/**/**/*******

15| @ ////// /// /////////// ////// /// ////// ////////////////////

16|

17| @Copyright 2000-2005 TMAX Soft Co.,Ltd.

18|

19|

20| @INPUT START MAP : @________@_

21|

22|

23|

24|

------------------------------------------------------------------------------<E

* ---------------------------------------------------------------------------(end)-

* copybook :

[.//BGLOGO_BGLOGO.cpy] create.

* binary image :

[.//BGLOGO_BGLOGO_CS.csym] create.

두 개의 파일이 정상적으로 만들어졌다는 메시지가 나오면 성공적으로 컴파일이

완료된 것이다.

5.14 msimapc

msimapc는 맵 파일을 작성한 후 MSI 게이트웨이나 기타 OSI 모듈에서 내부적인

처리를 하기 위해 사용할 바이너리 파일과 코볼 어플리케이션에서 맵 필드에 매

치 시키기 위해 생성하는 코볼 카피 파일을 생성하는 프로그램이다.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 105

사용법

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

Usage: msimapc [options1] <file>

| msimapc [options2] <dir> <file>

[options1]에는 msimapc의 사용법을 확인하고 입력된 맵을 보여주는 등 -h, -d, -p

옵션이 있다. [options2]에는 OpenStudio를 위한 출력 디렉터리를 설정하는 -o 옵

션이 있다.

- [-d]

컴파일 하고자 하는 소스의 전처리 과정을 출력해준다. 전처리 과정을 보면

서 컴파일이 되기 때문에 에러 발생 시 찾기가 쉽다.

- [-h]

옵션 도움말을 보여준다.

- [-o directory]

OpenStudio에서 사용하는 옵션으로 바이너리 파일과 카피 파일을 생성할 디

렉터리를 지정한다.

- [-p]

단말기 화면에 출력되는 내용을 미리 보여준다.

- file

컴파일하려는 맵 파일의 이름을 지정한다.

사용예제

다음은 MFSLOGO.fmt 파일을 컴파일한 후 바이너리 파일과 코볼 카피 파일을

생성하는 예이다.

$ msimapc -p MFSLOGO.fmt

위와 같이 입력하면 아래의 화면이 출력된다.

* INPUT FORMAT : MFSLOGO.fmt

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 106

----------------------------------------------------------------------------------

* preview : ---------------------------------------------------------------(BEGIN)-

FORMAT : [MSILOGO]

123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+

-------------------------------------------------------------------------------->S

01|

02|@*** WELCOME TO OpenFrame IMS ONLINE ***

03|

04|

05| @ ***** /****** /*******/** /**/*******/****** /*** /**/**/**/*******

06| @/*******/*******/*******/*** /**/*******/******* /***** /********/*******

07| @/**///**/**///**/**//////*** /**/**//////**///**/**///**/********/**/////

08| @/** /**/** /**/** /****/**/** /** /**/** /**/**/**/**/**

09| @/** /**/*******/*******/*******/*******/*******/*******/**/**/**/*******

10| @/** /**/******//*******/*******/*******/******//*******/**/**/**/*******

11| @/** /**/**//// /**//////**/****/**//////**///**/**///**/**/**/**/**/////

12| @/** /**/** /** /** /***/** /** /**/** /**/**/**/**/**

13| @/*******/** /*******/** /***/** /** /**/** /**/**/**/**/*******

14| @//*****//** /*******/** //**/** /** /**/** /**/**/**/**/*******

15| @ ////// /// /////////// ////// /// ////// ////////////////////

16|

17| @Copyright 2000-2006 TMAX Soft Co.,Ltd.

18|

19|

20| @______

21| @INPUT START MOD :

22|

23|

24|

-------------------------------------------------------------------------------<E

* ---------------------------------------------------------------------------(END)-

* COBOL SYMBOL FILE.

제5장 온라인 시스템 툴

OpenFrame 툴 참조 안내서 107

- [/user/of1a/OpenFrame/tmax/mfs/cobolsymbol/MSILOGO.cpy] CREATED.

* BINARY IMAGE.

- [/user/of1a/OpenFrame/tmax/mfs/csymbol/02mSILOGO.dif] CREATED.

- [/user/of1a/OpenFrame/tmax/mfs/csymbol/02MSILOGO.dof] CREATED.

- [/user/of1a/OpenFrame/tmax/mfs/csymbol/MSILOGOI.mid] CREATED.

- [/user/of1a/OpenFrame/tmax/mfs/csymbol/MSILOGOO.mod] CREATED.

다섯 개의 파일이 정상적으로 만들어졌다는 메시지가 나오면 성공적으로 컴파일

이 완료된 것이다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 109

제6장 운영 편의를 위한 툴

6.1 icfscan

icfscan은 카탈로그에 등록된 엔트리의 유효성 및 유형별 통계를 산출하는 프로

그램이다.

OpenFrame 시스템 운영 중 총 카탈로그 엔트리의 증감에 대한 보고와 등록된

엔트리의 유효성 검증을 위해 사용할 수 있다.

사용법

icfscan 프로그램을 실행하는 방법은 다음과 같다.

Usage: icfscan [-c user_catalog] [-h] [-i]

- [-c user_catalog]

지정된 사용자 카탈로그만을 점검한다.

user_catalog을 지정하지 않은 경우, 모든 카탈로그에 대한 엔트리의 유효성

과 유형별 통계를 산출한다.

- [-h]

도움말을 출력한다.

- [-i]

처리과정에 대한 메시지를 출력한다.

사용예제

모든 카탈로그에 대하여 엔트리의 유효성과 유형별 통계를 산출하는 예이다.

$ icfscan

위 예제에서 모든 카탈로그에 대한 카탈로그 스캔을 시도한 후 결과를 보여준다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 110

ICFSCAN [I] using master catalog : [SYS1.MASTER.ICFCAT.MJES]

ICFSCAN [I] [SYS1.MASTER.ICFCAT.MJES] scanning.

ICFSCAN [I] ============================================================

ICFSCAN [E] NONVSAM [DSMOVE.OUT.]......invalid path[/home/saza/OpenFrame/volume_default/DSMOVE.OUT.]

ICFSCAN [I] ============================================================

ICFSCAN [I] [SYS1.MASTER.ICFCAT.MJES] scan report.

ICFSCAN [I] ============================================================

ICFSCAN [I] ICF ENTRY TOTAL : 116

ICFSCAN [I] DATASET : 1/ 112

ICFSCAN [I] - NONVSAM : 1/ 58

ICFSCAN [I] - SDS/PDS : 1/ 47

ICFSCAN [I] - GDS : 0/ 11

ICFSCAN [I] - VSAM : 0/ 54

ICFSCAN [I] - CLUSTER : 0/ 9

ICFSCAN [I] - AIX : 0/ 6

ICFSCAN [I] - PATH : 0/ 7

ICFSCAN [I] CATALOG : 0/ 1

ICFSCAN [I] ETC : 0/ 0

ICFSCAN [I] ============================================================

ICFSCAN [I] using user catalog : [TEST.UCAT]

ICFSCAN [I] [TEST.UCAT] scanning.

ICFSCAN [I] ============================================================

ICFSCAN [I] ============================================================

ICFSCAN [I] [TEST.UCAT] scan report.

ICFSCAN [I] ============================================================

ICFSCAN [I] ICF ENTRY TOTAL : 1

ICFSCAN [I] DATASET : 0/ 1

ICFSCAN [I] - NONVSAM : 0/ 1

ICFSCAN [I] - SDS/PDS : 0/ 1

ICFSCAN [I] - GDS : 0/ 0

ICFSCAN [I] - VSAM : 0/ 0

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 111

ICFSCAN [I] - CLUSTER : 0/ 0

ICFSCAN [I] - AIX : 0/ 0

ICFSCAN [I] - PATH : 0/ 0

ICFSCAN [I] CATALOG : 0/ 0

ICFSCAN [I] ETC : 0/ 0

ICFSCAN [I] ============================================================

Appendix

카탈로그 스캔 시 특정 카탈로그 항목에 대해 오류가 발생한 경우, 해당 오류 메

시지를 화면에 출력하고 계속해서 스캔과정을 진행한다.

6.2 icfspchk

icfspchk은 카탈로그를 기준으로 VSAM 볼륨의 사용공간을 확인하는 프로그램이

다. 단, Non-VSAM 데이터 셋이 사용하는 공간에 대해서는 보고를 하지 않는다.

icfspchk 프로그램은 카탈로그에 등록되어 있는 모든 볼륨과 각 볼륨에 저장되어

있는 모든 VSAM 데이터 셋에 대해서 다음의 측정값을 출력한다.

- 카탈로그 이름, 데이터 셋 이름, 데이터 셋 유형

- 컨트롤 인터벌 크기, 평균 레코드 크기, 최대 레코드 크기, 전체 레코드 개수

- 추정 데이터 셋 크기, 최대 데이터 셋 할당 공간

한 볼륨 안에 저장되어 있는 모든 VSAM 데이터 셋에 대한 보고가 끝나면 해당

볼륨에 대한 총 추정 데이터 셋 크기와 총 데이터 셋 할당 공간을 출력한다.

사용법

icfspchk 프로그램을 실행하는 방법은 다음과 같다.

Usage: icfspchk {volser}

| icfspchk all

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 112

- {volser}

특정 볼륨에 대한 VSAM 데이터 셋의 사용량을 확인하기 위해 지정한다.

- all

모든 볼륨에 대한 VSAM 데이터 셋의 사용량을 확인하기 위해 지정한다.

사용예제

볼륨별 VSAM 데이터 셋의 사용량을 출력하는 예이다.

$ icfspchk all

위 예제 실행 후 VSAM 데이터 셋 사용량 보고를 출력한 화면이다.

prog_name: icfspchk_main.c

icf_initialize() success.

scan_master_catalog() success.

icfspchk: *** VVDS not defined for volume 200000. (continue)

icfspchk: *** VVDS not defined for volume 300000. (continue)

icfspchk: *** VVDS not defined for volume VSPOOL. (continue)

check_volume_config() success.

+ scanning catalog dataset... [SYS1.MASTER.ICFCAT]

+ scanning catalog dataset... [TAPECAT]

+ examining catalog entries.. (19) entries

--------------------------------------------------------------

> Space Usage Report for Volume MJES01

--------------------------------------------------------------

SYS1.MASTER.ICFCAT:AAA.KSDS01:C=(CISIZE=32,AVGLRECL=16,MAXLRECL=16,RECCOUNT=0,ESTSIZE=0,HARBADS=262144)

SYS1.MASTER.ICFCAT:MRDV.B01SYODB:C=(CISIZE=6144,AVGLRECL=6137,MAXLRECL=6137,RECCOUNT=2304,ESTSIZE=14139648,HARBADS=512753664)

SYS1.MASTER.ICFCAT:MRDV.B01SYODI:C=(CISIZE=1024,AVGLRECL=35,MAXLRECL=35,RECCOUNT=6849,ESTSIZE=239715,HARBADS=143654912)

SYS1.MASTER.ICFCAT:OPNFRAME.BATCH.DSLOCK:C=(CISIZE=256,AVGLRECL=222,MAXLRECL=222,RECCOUNT=2,ESTSIZE=444,HARBADS=262144)

SYS1.MASTER.ICFCAT:OPNFRAME.BATCH.DSLOCK.LOG:C=(CISIZE=32,AVGLRECL=16,MAXLR

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 113

ECL=16,RECCOUNT=7,ESTSIZE=112,HARBADS=262144)

SYS1.MASTER.ICFCAT:SYS1.JESST:C=(CISIZE=4096,AVGLRECL=32,MAXLRECL=32,RECCOUNT=1,ESTSIZE=32,HARBADS=65536)

SYS1.MASTER.ICFCAT:SYS1.JESST.SM:C=(CISIZE=4096,AVGLRECL=24,MAXLRECL=24,RECCOUNT=1,ESTSIZE=24,HARBADS=65536)

SYS1.MASTER.ICFCAT:SYS1.JOBQ:C=(CISIZE=4096,AVGLRECL=2200,MAXLRECL=2200,RECCOUNT=1000,ESTSIZE=2200000,HARBADS=9437184)

SYS1.MASTER.ICFCAT:SYS1.JOBQ.SM:C=(CISIZE=4096,AVGLRECL=2200,MAXLRECL=2200,RECCOUNT=1000,ESTSIZE=2200000,HARBADS=9437184)

SYS1.MASTER.ICFCAT:SYS1.JOBQ.STATUS:C=(CISIZE=4096,AVGLRECL=1024,MAXLRECL=1024,RECCOUNT=1,ESTSIZE=1024,HARBADS=65536)

SYS1.MASTER.ICFCAT:SYS1.JOBQ.STATUS.SM:C=(CISIZE=4096,AVGLRECL=1024,MAXLRECL=1024,RECCOUNT=1,ESTSIZE=1024,HARBADS=65536)

SYS1.MASTER.ICFCAT:SYS1.OUTPUTQ.SM.AIX:G=(CISIZE=32768,AVGLRECL=20,MAXLRECL=20,RECCOUNT=0,ESTSIZE=0,HARBADS=65536)

SYS1.MASTER.ICFCAT:SYS1.OUTPUTQ.SM.INFO:C=(CISIZE=4096,AVGLRECL=2048,MAXLRECL=2048,RECCOUNT=5,ESTSIZE=10240,HARBADS=131072)

SYS1.MASTER.ICFCAT:SYS1.OUTPUTQ.SM.MAIN:C=(CISIZE=4096,AVGLRECL=2048,MAXLRECL=2048,RECCOUNT=1,ESTSIZE=2048,HARBADS=135266304)

SYS1.MASTER.ICFCAT:SYS1.VVDS.VMJES01:C=(CISIZE=4096,AVGLRECL=288,MAXLRECL=288,RECCOUNT=6216,ESTSIZE=1790208,HARBADS=3145728)

SYS1.MASTER.ICFCAT:TAPECAT:U=(CISIZE=32768,AVGLRECL=512,MAXLRECL=32704,RECCOUNT=10,ESTSIZE=5120,HARBADS=65536)

--------------------------------------------------------------

> Total Space Used in Volume MJES01: 20589639 Bytes Used / 815005696 Bytes Allocated

report_space_usages() success.

icf_finalize() success.

Appendix

icfspchk 프로그램은 예전에 카탈로그 VVDS 데이터 셋의 레코드를 재사용할 수

없던 문제가 있어, VVDS 데이터 셋의 증가분을 측정하기 위해 개발된 프로그램

이다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 114

6.3 icfdump

icfdump는 OpenFrame 제품을 운용하면서 관리되는 카탈로그 정보를 백업하여

차후에 문제가 발생했을 경우 이를 복구할 수 있도록 해주는 프로그램이다.

icfdump 프로그램으로 백업을 한 카탈로그 덤프 데이터는 icfload 프로그램으로

복구할 수 있다.

카탈로그 백업을 수행하고 나면, 카탈로그 데이터가 저장된 디렉터리에 두 개의

UNIX 파일이 생성된다.

dataset.lst

백업에 사용된 카탈로그 데이터 셋의 종류와 이름 그리고 볼륨 정보가 저장

된다.

catalog.dat

카탈로그에 저장되어 있던 카탈로그 엔트리에 대한 정보가 저장된 파일이다.

사용법

icfdump 프로그램을 실행하는 방법은 다음과 같다.

Usage: icfdump {volser} {dumpdir}

| icfdump all {dumpdir}

| icfdump {dumpdir}

- {volser}

특정 볼륨에 저장되어 있는 카탈로그 데이터만 백업하고 싶은 경우에 사용한

다. {volser}을 지정하지 않은 경우 모든 볼륨에 대한 백업을 수행한다.

- all

모든 볼륨에 대한 카탈로그 데이터 백업을 수행한다.

- {dumpdir}

백업하려고 하는 카탈로그 데이터가 저장될 디렉터리를 지정한다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 115

사용예제

모든 카탈로그 데이터를 현재 디렉터리 밑에 있는 dump01 디렉터리에 백업하는

예이다.

$ icfdump all dump01

Appendix

카탈로그 데이터 덤프 시 특정 카탈로그 엔트리에 대한 오류가 발생한 경우, 해

당 오류 메시지를 화면에 출력하고 계속해서 백업과정을 진행한다.

이 경우 오류 메시지를 정확하게 분석해서 작업을 계속 진행할 것인지의 여부를

결정해야 한다.

6.4 icfload

icfload는 icfdump로 백업한 카탈로그 덤프 데이터를 사용하여 현재 카탈로그 시

스템을 백업할 당시의 시점으로 복구해주는 프로그램이다.

또한 icfload에는 카탈로그 데이터 셋을 초기화시키는 과정이 포함되어 있어서 사

용되지 않는 카탈로그 레코드 등이 정리되어 카탈로그 데이터 셋의 크기가 작아

지는 효과가 있다.

사용법

icfload 프로그램을 실행하는 방법은 다음과 같다.

Usage: icfload {volser} {dumpdir}

| icfload all {dumpdir}

| icfload {dumpdir}

- {volser}

특정 볼륨에 대한 카탈로그 내용만 복구할 경우에 지정한다.

{volser}를 지정하지 않은 경우 모든 볼륨에 대한 카탈로그 내용을 복구한다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 116

- all

모든 볼륨에 대한 카탈로그 데이터를 복구한다.

- {dumpdir}

icfdump 프로그램으로 백업된 데이터가 저장된 디렉터리를 지정한다.

사용예제

현재 디렉터리 밑에 있는 dump01 디렉터리에 백업된 데이터를 기준으로 모든

카탈로그 내용을 복구하는 예이다.

$ icfload all dump01

Appendix

특정 볼륨을 기준으로 카탈로그를 백업한 경우에는 해당 볼륨을 기준으로만 카탈

로그 복구가 가능하다.

하지만, 모든 볼륨에 대해서 카탈로그 백업을 한 경우에는 특정 볼륨 또는 모든

볼륨에 대해서 카탈로그 복구를 할 수 있다.

6.5 jclview

jclview는 tjesmgr와 같이 UNIX 터미널 창에서 실행되는 JCL 파일 뷰어를 제공하

는 프로그램으로, curses 라이브러리를 사용하여 터미널 창에서도 윈도우 화면처

럼 풀다운 메뉴, 화면 스크롤, 팝업 창, 단축키 등의 사용자 편의 UI와 다중 문서

인터페이스를 제공한다.

이 외에도 배치 JOB 테스트에 관련된 여러 가지 편의기능을 제공하여 개발 및

SE의 작업 능률 향상에 도움을 준다.

jclview의 주요기능은 다음과 같다.

JCL 파일의 멀티 경로 지원

JCL 프로시저 열람 (JCLLIB 문장, /*JOBPARM의 PROC 문장 지원)

데이터 셋 상세정보 열람 (JOBCAT, STEPCAT DD문 지원)

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 117

dsview, dsedit, vi 편집기 연계 호출

멤버 데이터 셋(PDS, GDS) 정보 열람

데이터 셋 조건 별 검색 (필터링, 카탈로그, 엔트리 타입)

사용법

jclview 프로그램을 실행하는 방법은 다음과 같다.

$ jclview [JCL File Name]

- [JCL FILE NAME]

조회하고자 하는 JCL 파일을 지정한다. 해당 JCL의 내용을 보여준다.

JCL 파일명을 지정하지 않으면 [그림 6-1]의 초기화면이 뜬다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 118

상위메뉴 하위메뉴 설명

Open JCL 파일열기

Select 열려진 여러 개의 JCL 파일 중에서 보기 원하는

JCL 파일 선택

JCL

Exit JCL View 종료

Search 데이터 셋 조건 별 검색 Dataset

Volume Info 볼륨 정보 조회

Find Error Msg TJES 에러 메시지 검색 Help

About JCL View JCL View 버전 정보

[표 6-1] jclview 메뉴 구성

단축키 기능 설명

1 Open JCL 파일 열기

2 Edit JCL 파일을 vi 편집기를 이용하여 열기

3 Select 열려진 여러 개의 JCL 파일 중에서 보기 원하

는 JCL 파일 선택

F PgUp 이전 페이지

D PgDn 다음 페이지

Tab Menu 메뉴바로 이동

Enter Ds Info 데이터 셋 정보 출력

Q Close 현재 보고 있는 JCL 파일 닫기

[표 6-2] jclview 단축키 구성

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 119

실행예제

jclview의 초기화면은 다음과 같다.

[그림 6-1] 초기화면

jclview 메뉴선택 화면은 다음과 같다.

[그림 6-2] 메뉴선택 화면

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 120

jclview에서 JCL 파일을 연 후 화면은 다음과 같다.

[그림 6-3] JCL 파일 open 후 화면

jclview에서 데이터 셋 정보를 열람하는 화면은 다음과 같다.

[그림 6-4] 데이터 셋 정보열람 화면

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 121

jclview에서 GDG 멤버 정보를 조회 화면은 다음과 같다.

[그림 6-5] GDG 멤버 정보조회 화면

jclview에서 데이터 셋을 검색하는 화면은 다음과 같다.

[그림 6-6] 데이터 셋 검색 화면

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 122

유의사항

jclview를 실행하기 전 터미널 창 사이즈는 24 라인 이상, 80 컬럼 이상이어야 한

다.

jclview는 제일 먼저 현재 디렉터리에서 JCL 파일을 검색하고, JCL 파일이 존재

하지 않을 경우 jclview.conf [JCLLIB] JCL_PATH에 나열된 디렉터리 순으

로 검색한다.

JCL 파일의 검색순서는 현재 디렉터리에 JCL 파일이 존재하지 않는 경우

jclview.conf에 나열된 디렉터리를 차례로 검색하며 여기에도 존재하지 않는

경우 tjes.conf [PROCLIB] 섹션에 기술된 JCLLIB의 순서로 검색한다.

JCL 프로시저인 경우 여기에 추가로 JCL의 JCLLIB 문장에서 기술한 카탈로그

PATH, /*JOBPARM에서 PROC 문으로 지정한 위치가 반영된다.

만약 동일한 이름의 JCL 파일이 지정된 여러 디렉터리에 존재하는 경우 별도의

JCL 파일 선택창이 뜨게 되며, 여기서 원하는 JCL 파일을 선택할 수 있다.

JCL에서 데이터 셋 정보를 열람하는 경우 STEPCAT → JOBCAT → Alias →

Master Catalog 순서로 검색하여 정보를 제공한다.

데이터 셋 열람이 가능한 위치에 반전 커서가 놓이게 되면 커서 앞부분의 모양이

‘→’ 으로 변한다.

관련 환경설정 jclview.conf [JCLLIB] JCL_PATH

jclview를 실행하기 전, JCL 또는 PROC 파일이 존재하는 절대 경로를 설정한다.

세미콜론(;)을 사용하여 다수의 JCL 디렉터리를 지정할 수 있으며, 기술된 순서대

로 JCL 파일을 검색하게 된다.

JCL_PATH를 설정하지 않으면, tjes.conf [PROCLIB] JCLLIB에 설정한 디렉

터리에서 검색한다.

현재 디렉터리를 가장 우선 검색하며 JCL 프로시저 검색도 동일한 순서를 따라

검색한다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 123

6.6 textrun

textrun은 JOB을 submit하고 JOB의 실행 결과를 보여주는 프로그램이다.

주로 자동으로 JOB을 실행하고 JOB의 결과에 따라서 다음 JOB을 실행할지 여

부를 결정하는 배치 맵에서 사용한다.

사용법

textrun 프로그램을 실행하는 방법은 다음과 같다.

Usage: textrun –jJCLRUN [-Cusercatalog] [-oDD[,DD]*] [-eDD[,DD]*]

[-c[PROJOBS | JP1 | CONTROL_M | A-AUTO | SENJU]

[-tSECOND] [-r] [-Rrestart_step]

- -jJCLRUN

JCL 이름 또는 UNIX 파일경로를 지정해 주거나 DATASET(member) 형식으

로 지정할 수 있다. jJCLRUN을 DATASET(member) 형식으로 설정할 때 데이

터 셋이 사용자 카탈로그에 등록되어 있다면 [-Cusercatalog]를 지정한다.

- [-Cusercatalog]

데이터 셋이 등록되어 있는 사용자 카탈로그를 지정한다.

- [-oDD[,DD]*]

주어진 DD들을 SPOOL에서 찾아 stdout으로 기록한다.

옵션을 지정하지 않은 경우 SYSOUT DD를 stdout으로 기록한다.

- [-eDD[,DD]*]

주어진 DD들을 SPOOL에서 찾아 stderr로 기록한다.

옵션을 지정하지 않은 경우 SYSMSG DD를 stderr로 기록한다.

- [-c[PROJOBS | JP1 | CONTROL_M | A-AUTO | SENJU]]

textrun을 실행하는 외부 스케줄러이다.

참고: 현재 textrun에서는 -c 옵션에 대해서 오류를 발생시키지 않도록 형식적으로만 지원하고 있다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 124

- [-tSECOND]

JOB을 실행한 후 JOB의 결과가 나올 때까지 모니터링을 하는 간격을 초 단

위로 지정한다.

이 옵션을 지정하지 않을 경우 기본 10초마다 모니터링을 한다.

- [-r]

JOB 실행 종료 후 JOB을 제거한다.

- [-Rrestart_step]

JOB을 재기동하는 경우 재기동할 스텝을 지정한다.

실행예제

JCL을 submit하는 일반적인 예이다.

$ textrun -jTEST.jcl

DD1과 DD2의 내용을 stdout으로 출력하는 예이다.

$ textrun -jTEST.jcl -oDD1,DD2

JOB을 실행한 후 결과를 출력할 때까지의 모니터링 간격을 60초로 설정하는 예

이다.

$ textrun -jTEST.jcl -t60

STEP2부터 JCL을 실행하는 예이다.

$ textrun -jTEST.jcl -RSTEP2

JOB 실행이 끝난 후 JOB을 삭제하는 예이다.

$ texturn -jTEST.jcl -r

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 125

관련 환경설정 textrun.conf

[DEFAULT_USER]

USERNAME=tacf user

PASSWORD=tacf password

GROUPNAME=tacf group

[EXIT_CODE]

USE_RC_CODE=YES|NO

STATUS 0-255=return value

[MONITORING]

RETRY_COUNT=number

RETRY_INTERVAL=seconds

[DEFAULT_USER]

- USERNAME, PASSWORD, GROUPNAME

TACF 인증을 위한 사용자 정보이다.

JCL에 사용자 정보가 기술되어 있지 않을 경우 TACF 인증을 받기 위해 참

조하는 사용자 정보이다.

[EXIT_CODE]

- USE_RC_CODE

JOB 상태에 따라서 반환코드를 설정할지 여부를 결정한다.

- STATUS

STATUS에는 STOP 또는 FLUSH 중에서 지정할 수 있다.

예) STOP=255

위와 같이 STATUS를 설정하고 USE_RC_CODE=YES로 설정을 하면 JOB이

STOP으로 끝나는 경우 255를 반환한다.

[MONITORING]

- RETRY_COUNT

JOB 모니터링 중에 모니터링 서비스 접속에 문제가 발생할 경우 재시도 횟

수이다. 설정되어 있지 않으면 디폴트로 3회 재시도한다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 126

- RETRY_INTERVAL

서비스 재접속을 시도하는 간격을 초 단위로 지정한다. 설정되어 있지 않으

면 디폴트로 3초 후에 재접속을 시도한다.

참고:: TJES에 대한 자세한 내용은 “TJES 안내서”를 참고한다.

6.7 dlupdate

dlupdate는 사용자가 만든 라이브러리를 변경하고자 할 때 사용하는 프로그램이

다.

라이브러리의 변경이 필요하지만 기존 라이브러리를 없애버릴 경우 그 라이브러

리를 사용중인 프로그램에 문제가 발생하기 때문에, 기존 라이브러리는 이름을

변경하여 환경 설정에 지정된 PDS 데이터 셋에 옮겨두고 신규 라이브러리는 기

존 라이브러리가 있던 데이터 셋에 복사하여 새로운 프로그램부터는 신규 라이브

러리를 이용할 수 있도록 한다.

사용법

dlupdate 프로그램을 실행하는 방법은 다음과 같다.

Usage: dlupdate source_path dataset_name

- source_path

신규 라이브러리 파일의 UNIX 절대 경로를 지정한다.

신규 라이브러리 파일의 이름은 바꾸고자 하는 기존 라이브러리의 이름과 같

아야 한다.

- dataset_name

변경하고자 하는 기존 라이브러리가 들어있는 PDS 데이터 셋 이름을 지정

한다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 127

사용예제

다음은 /tmp/libtest.so 라이브러리를 USER.LIB 데이터 셋에 update를 하는 예이

다.

$ dlupdate /tmp/libtest.so USER.LIB

USER.LIB에 있는 libtest.so 파일은 libtest.so_YYYYMMDD_HHMISS 형식으로

이름이 변경되어 환경 설정에 지정된 PDS 데이터 셋에 옮겨지고 /tmp/libtest.so

가 USER.LIB에 복사된다.

USER.LIB에 libtest.so가 없으면 /tmp/libtest.so가 USER.LIB에 복사만 된다.

관련 환경설정 tjes.conf [DYNAMIC_LIBRARY] TEMPLIB= datasetname

dlupdate 시에 기존 라이브러리를 옮겨놓는 임시 데이터 셋이다.

TEMPLIB을 설정하지 않은 경우 에러가 발생한다.

참고: 관련 툴 프로그램으로는 dlclean이 있다.

6.8 dlclean

dlclean은 dlupdate를 한 후에 임시 데이터 셋에 옮겨 놓은 이전 라이브러리들을

삭제하는 프로그램이다.

사용법

dlclean 프로그램을 실행하는 방법은 다음과 같다.

Usage: dlclean

사용예제

tjes.conf [DYNAMIC_LIBRARY] TEMPLIB에 설정되어 있는 PDS 데이터 셋

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 128

에 저장되어 있는 이전 라이브러리들을 모두 삭제한다.

$ dlclean

관련 환경설정 tjes.conf [DYNAMIC_LIBRARY] TEMPLIB= datasetname

dlclean 시에 삭제할 라이브러리들이 저장되어 있는 임시 데이터 셋이다.

TEMPLIB을 설정하지 않은 경우 에러가 발생한다.

참고: 관련 툴 프로그램으로는 dlupdate이 있다.

6.9 enpasswd

enpasswd는 사용자의 비밀번호를 64바이트 문자열로 인코딩 해주는 프로그램이

다.

OpenFrame 제품을 사용하면 설정파일에 사용자의 비밀번호를 입력해야 하는 경

우가 있다. 예를 들면, ikjeft01.conf 설정파일에는 특정 관계 데이터베이스

시스템에 접속할 수 있도록, 데이터베이스 시스템명, 사용자명, 비밀번호 등의 정

보를 적어 주어야 한다. 이 때, 사용자의 비밀번호를 직접 설정파일에 기입을 하

면, 정보 유출의 위험이 있으므로, 비밀번호를 인코딩해서 설정파일에 저장하도

록 한다.

사용법

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

Usage: enpasswd {username} {password}

- {username}

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

- {password}

인코딩할 비밀번호를 입력한다.

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 129

프로그램 실행 파라미터로 사용자명과 비밀번호를 주면 화면에 64 바이트로

인코딩된 비밀번호가 출력된다.

사용예제

사용자명으로 igkang을 주고, 비밀번호로 whoknows를 주었을 경우, enpasswd 프

로그램이 실행되어 인코딩된 비밀번호를 출력하는 예이다.

$ enpasswd igkang whoknows

970A3C79A0E803DCB62B276D91602D77500107695254FDA1BD477054AEBACBBD

Appendix

설정파일에서 인코딩된 비밀번호와 인코딩되지 않은 비밀번호를 동시에 지정할

경우에는 인코딩되지 않은 비밀번호가 우선적으로 사용된다.

인코딩된 비밀번호를 사용하는 설정파일로는 ds.conf, ikjeft01.conf 등이

있다.

6.10 oferror

oferror는 OpenFrame에서 발생하는 에러에 대한 간략한 에러번호, 에러코드, 에

러메시지 출력하는 프로그램이다. 복수개의 에러코드를 조회할 경우는 조회하려

는 에러를 스페이스로 구분해서 기술하면 된다.

사용법

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

Usage: oferror [ERRORNO [ERRORNO...]]

- ERRORNO

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

제6장 운영 편의를 위한 툴

OpenFrame 툴 참조 안내서 130

사용예제

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

$ oferror -1002

/*

/* error no : -1002

/* error code: TSAM_ERR_DUPLICATE_KEY

/* error msg : duplicate key

/*

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

$ oferror 23132

Not defined error no: 23132

Appendix

oferror를 사용하기 위해서는 $OPENFRAEME_HOME/data 디렉터리에

errcode.dat 파일이 반드시 존재해야 한다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 131

제7장 기타 툴

7.1 cobolprep

cobolprep는 OpenFrame 엔진이 원활하게 사용자 코볼 프로그램을 처리할 수 있

도록 프로그램 소스를 전처리하여 결과물을 산출하는 프로그램이다.

전처리 결과물은 결과물 파일 이름 혹은 prefix를 옵션으로 제공하지 않는 한, 해

당파일명에 cobolprep_ 이라는 접두어가 붙는다.

사용법

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

Usage: cobolprep [-h] [-v] [-V]

[-c1] [-c2] [-c3] [-c4] [-c5] [-c6]

[-h1] [-h2 table] [-h3 rule] [-C1] [-F1]

[-d1] [-d2] [-d3]

[-f1 extension] [-f2 directory] [-i1 copybook]

[-p directory] [-p1] [-p2]

[-o1 prefix] [-o2 filename] [-o3] [-o4]

[-s11] [-s21] filename

- filename

전처리할 코볼 프로그램 소스 파일을 지정한다.

일반 옵션

옵션 설명

-h 툴 사용법을 확인한다.

-v cobolprep의 버전을 확인한다.

-V Verbose mode로 실행한다.

[표 7-1] 일반 옵션

제7장 기타 툴

OpenFrame 툴 참조 안내서 132

변환 및 추가 옵션

옵션 설명

-c1 G Literal의 VALUE 절에 처음과 끝이 스페이스로 마이그레이션된

경우, 이를 삭제한다.

-c2 ENVIRONMENT DIVISION에 백슬래시(\) 문자를 CURRENCY SIGN

으로 설정한다.

-c3 'DISPLAY(ACCEPT) ... UPON CONSOLE' 문을 내부 콜로 변환한다.

-c4 'STOP RUN' 문을 내부 콜로 변환한다.

-c5 SPACE 키워드를 변수 타입에 맞추어 16진수로 변환(double-byte

only) 한다.

-c6 CBLTDLI 콜에 파라미터 개수를 알려주는 파라미터를 추가한다.

-h1 X'0E', X'0F'를 X'20'으로 변환한다.

-h2 table 16진수 변환 문자 테이블을 이용하여 변환한다.

-h3 rule 16진수 변환 규칙을 이용하여 변환한다.

-C1 OSC 시스템에서 TACF 트랜잭션 체크 루틴을 추가한다.

-F1 TCOBFH(TMAX OpenFrame Cobol File Handler)를 사용하기 위해

내부 소스를 변환한다.

[표 7-2] 변환 및 추가 옵션

디버깅 관련 옵션

옵션 설명

-d1 READY TRACE 문을 삽입한다.

-d2 OSC 시스템에서 모든 CALL 문 앞뒤에 cics_call_entry과 cics_call_exit

함수를 추가한다.

-d3 OSC 시스템의 EDF 기능을 사용한다.

[표 7-3] 디버깅 관련 옵션

전처리 옵션

옵션 설명

-f1 extension Copybook extension format을 지정한다.

-f2 directory 전처리 중 사용할 임시 저장 디렉터리를 지정한다.

-i1 copybook WORKING-STORAGE SECTION에 copybook을 추가한다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 133

옵션 설명

-p directory Copybook을 저장할 디렉터리를 지정한다.

-p1 내부 심볼테이블 작성을 위한 copybook을 읽는다.

-p2 모든 copybook을 코드로 가져온다. (-p1 자동추가)

[표 7-4] 전처리 옵션

전처리 결과 옵션

옵션 설명

-o1 prefix 전처리된 결과물 파일 이름에 붙일 접두어를 지정한다. 이 옵션

이 지정되면 cobolprep_ 접두어는 무시된다. (옵션 다음에 접두

어를 지정한다.)

-o2 filename 결과물의 파일이름을 지정한다. (옵션 다음에 결과물 파일이름

지정)

-o3 cobolprep.result (전처리 정보) 및 cobolprep.hexa (16진수 전처

리 정보) 파일을 현재 디렉터리에 저장한다.

-o4 내부 전처리 중간 단계의 파일을 생성한다. (cobolprep_ref_ 접

두어가 붙는다.)

[표 7-5] 전처리 결과 옵션

프로젝트별 특별 옵션

옵션 설명

-s11 ABEND-RTN 섹션을 추가한다. (MHI)

-s21 BUILDRULE 주석 라인을 보존한다.

[표 7-6] 프로젝트별 특별 옵션

사용예제

CBLSAMPLE.cob 파일을 전처리하여 cobolprep_CBLSAMPLE.cob 이라는 파일을

생성하는 예이다. 옵션이 없는 경우, 단순히 주석을 지우는 정도의 전처리를 수

행한다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 134

$ cobolprep CBLSAMPLE.cob

CBLSAMPLE.cob 파일에서 OSC 시스템에서 트랜잭션 보안 체크를 가능하게 하

고, 매 CALL 문을 트레이스 하도록 전처리하는 예이다.

$ cobolprep -C1 -d2 CBLSAMPLE.cob

CBLSAMPLE.cob 파일에 쓰여진 CBLTDLI call에 파라미터 개수를 알려주는 파라

미터를 추가하는 전처리를 수행하고, CBLSAMPLE.cbl 이라는 파일을 생성하는

예이다.

$ cobolprep -c6 -o1 CBLSAMPLE.cbl CBLSAMPLE.cob

7.2 dliprep

dliprep는 코볼 프로그래밍 언어로 구성된 프로그램 소스 내에 존재하는 EXEC

DLI 명령어를 전처리하여 결과물을 산출하는 프로그램이다. 배치 및 온라인 프로

그램 모두에 적용된다.

전처리 후 기존 파일명에 dliprep_ 이라는 접두어를 붙여 결과물을 생성한다.

결과물 생성 도중 기존 파일명에 dliprep_ref_ 이라는 접두어를 붙인 임시파

일을 현재 디렉터리에 생성하고, 이 임시파일을 전처리에 사용한다. 실행이 끝난

후 이 임시파일은 자동으로 삭제된다.

사용법

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

Usage: dliprep file

| dliprep -v

- file

전처리할 코볼 프로그램 소스 파일을 지정한다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 135

- -v

dliprep의 버전을 확인한다.

사용예제

CBLSAMPLE.cob 파일을 전처리하여 dliprep_CBLSAMPLE.cob 이라는 파일을 생

성하는 예이다.

$ dliprep CBLSAMPLE.cob

7.3 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 ...]

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

제7장 기타 툴

OpenFrame 툴 참조 안내서 136

사용예제

다음은 $OPENFRAME_HOME/lib 디렉터리에서 libcicstsq.so 이라는 OpenFrame

공유 라이브러리 모듈의 버전 정보와 빌드 정보를 출력하는 예이다.

$ offile libcicstsq.so

libcicstsq.so version 5.0.2(253), obm@tmaxs4/ofsrc4(#4) 2007-01-16 16:03:26

다음은 $OPENFRAME_HOME/bin 디렉터리에서 cpm으로 시작하는 모든 모듈의

버전 정보와 빌드 정보를 출력하는 예이다.

$ offile cpm*

cpmgencpm version 5.0.1(817), obm@tmaxs4/ofsrc4(#4) 2007-01-16 16:03:26

cpmgenucm version 5.0.1(817), obm@tmaxs4/ofsrc4(#4) 2007-01-16 16:03:26

cpmmergeucm version 5.0.1(817), obm@tmaxs4/ofsrc4(#4) 2007-01-16 16:03:26

cpmmgr version 5.0.1(841), obm@tmaxs4/ofsrc4(#4) 2007-01-16 16:03:26

7.4 tplipp

tplipp는 Mainframe에서 사용하던 PL/I 프로그램 소스를 OpenFrame에서 동작할

수 있도록 PL/I 프로그램 소스를 수정하는 프로그램이다.

UNIX 상에서 Mainframe에서 사용하던 PL/I 프로그램을 실행하면 파일에 대한

I/O를 할 때 데이터 셋이 아닌 UNIX 파일에 I/O를 하기 때문에 OpenFrame의 데

이터 셋에 I/O를 할 수 있도록 수정이 필요하다.

이 외에도 UNIX에서 지원하지 않는 오퍼레이터 콘솔을 제공하기 위해

OpenFrame 콘솔 서버를 사용할 수 있도록 소스를 수정해준다.

기본적으로 AIX PL/I 이나 Open Liant PL/I의 컴파일러에서 지원하지 않는 문법은

지원하지 않는다.

[그림 7-1] tplipp 구조

제7장 기타 툴

OpenFrame 툴 참조 안내서 137

[그림 7-1]과 같이 tplipp에 원본 PL/I 소스를 입력하면 수정된 PL/I 소스가 나오고

이를 컴파일하면 OpenFrame에서 동작하는 PL/I 바이너리가 생성된다.

사용법

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

Usage: tplipp [-h] [-V] [-y] [-l] [-d] [-info] [-l dir] [-o file] [-fetch]

[-s] [-f aix] [-f liant] [-u RC_STOP=n] [-u RC_FILE=n]

[-u RC_ERR=n] [-console] [-mfcobol] [-ims]

tplipp 옵션에 대한 설명은 아래의 표와 같다.

옵션 설명

-h tplipp에서 사용 가능한 옵션에 대한 정보를 보여준다.

-V tplipp의 버전 정보를 보여준다.

-y parser에서 생성된 디버그 메시지를 보여준다.

-l scanner에서 생성된 디버그 메시지를 보여준다.

-d parser와 scanner를 포함한 모든 생성된 디버그 메시지를 보

여준다.

-info PL/I 소스 내에서 사용된 파일 정보를 간략하게 보여준다.

-I dir PL/I의 include 파일들이 존재하는 위치를 지정한다.

-o file 전처리 결과를 출력할 파일명을 지정한다.

-fetch 모든 External Procedure를 Fetchable module로 인식한다.

-s C에서 사용하기 위해 PL/I을 공유 라이브러리로 만들 때 이용

한다.

-f aix 입력으로 받는 PL/I 소스가 AIX PL/I 일 때 지정한다. -f 옵션을

주지 않았을 때의 기본값으로 사용한다.

-f liant 입력으로 받는 PL/I 소스가 Liant Open PL/I 일 때 지정한다.

-u RC_STOP=n PL/I 동작 시, STOP 명령에 의해 프로그램이 종료되는 경우의

반환 값을 지정한다.

-u RC_FILE=n PL/I 동작 시, FILE ERROR에 의해 프로그램이 종료되는 경우

의 반환 값을 지정한다.

-u RC_ERR=n PL/I 동작 시, ERROR condition에 의해 프로그램이 종료되는

경우의 반환 값을 지정한다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 138

옵션 설명

-console PL/I 소스내의 DISPLAY 문과 REPLY 명령이 OpenFrame에서

제공하는 콘솔 서버를 이용할 때 지정한다.

-mfcobol PL/I에서 MF COBOL 프로시저를 호출 할 때 지정하는 옵션이

다. -fetch 옵션을 지정한 경우 이 옵션은 무시된다.

-ims IMS를 이용할 때 지정하는 옵션이다.

[표 7-7] tplipp 옵션

Appendix

PL/I 언어가 아닌 코볼 언어에 대한 유사한 기능을 하는 전처리 툴로 cobolprep

가 있다.

7.5 jobattr

jobattr은 JCL 파일을 파싱하여 JCL 구문 에러를 검사하고, JCL 파일의 JOB 문

장의 주요 파라미터를 조사하여 화면에 출력하는 프로그램이다.

OpenFrame TJES에서 JOB을 처리하기 위한 첫 단계는 사용자가 submit한 JCL

파일에 어떠한 JOB이 기술되어 있는지를 분석하여 JOBQ에 기록하는 것이다. 이

과정을 JOB의 submit이라고 한다. 이 단계에서 분석된 JOB에 관한 속성 정보는

이후에 뒤따르는 JOB 스케줄링 및 실행과 같은 JOB 프로세싱을 위한 인자로 사

용된다.

jobattr은 TJES에서 JOB의 submit 과정에서 일어나는 내부적인 JOB의 분석과정

과 동일한 분석 과정을 사용자가 JCL 파일 별로 직접 수행할 수 있게 하기 위한

도구이다. 분석 결과는 화면으로 출력되어 문제 분석 시에 사용할 수 있다.

다음 두 가지 용도로 jobattr을 사용할 수 있다.

JCL 파일(잡스트림) 구문 체크

많은 JCL 파일 중에서 구문 에러가 있는 JCL 파일을 일괄적으로 찾아내기

위해서 사용할 수 있다.

JCL JOB 문장의 속성 분석

제7장 기타 툴

OpenFrame 툴 참조 안내서 139

TJES의 JOB 처리과정 상의 문제점을 분석할 때 TJES에서의 JOB 처리 과

정의 인자로 사용되는 JOB 문장의 속성을 확인할 수 있다.

jobattr은 잡스트림 자체만 파싱하고 이 잡스트림으로 부터 호출되는 cataloged

procedure는 분석하지 않는다.

참고: jobattr은 정상 운영 시 사용되는 도구라기 보다 문제 분석 시 사용되는 도구이다. 현

재 EXPERIMENTAL한 단계에 있는 프로그램이다. 추후 기능의 추가 및 기존 기능 개선의 가능성이 높다.

사용법

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

Usage: jobattr jcl_file1 [jcl_file2 ...]

- jcl_file1

JCL 파일을 파싱하여 구문 에러를 확인하려는 JCL 파일을 지정한다.

하나 이상의 JCL에 대한 구문에러를 확인하려는 경우 여러 개의 JCL 파일명

을 지정한다.

현재 디렉터리의 BASEALC.jcl 이라는 JCL 파일을 검사하기 위해서는 다음과 같

이 실행한다.

jobattr BASEALC.jcl

여러개의 JCL 파일들을 분석하도록 지정 가능하다. 현재 디렉터리의 확장자가 jcl

인 모든 JCL 파일들을 검사하기 위해서는 다음과 같이 실행한다.

jobattr *.jcl

출력내용

jobattr을 실행하면, 먼저 사용자가 지정한 JCL 파일에 JCL 구문 에러가 없는지

확인한다. 구문 에러가 발견되면 에러가 존재하는 행 번호와 그 내용이 출력된다.

해당 JCL 파일이 구문적으로 문제가 없는 경우 JOB 문장의 주요속성 값을 화면

제7장 기타 툴

OpenFrame 툴 참조 안내서 140

으로 출력한다. 출력되는 JOB의 속성은 단순히 JCL 파일의 JOB 문장에 기술된

내용이 아니라 해당 속성에 영향을 주는 다른 문장 및 기본 설정을 고려해서 결

정되는 값이다. 필수 속성이 지정되지 않은 경우는 tjclrun.conf 설정파일에

지정된 디폴트 값을 사용한다. 자세한 내용은 Appendix를 참고한다.

(출력 형식)

JOB[jobpos]

NAME={jobname}

USER=username

GROUP=groupname

PASSWORD=password

CLASS=jobclass

TYPRUN=typrun

PRTY=prty

MSGCLASS=msgclass

STMTLEVEL=stmtlevel

MSGLEVEL=msglevel

jobattr이 출력하는 JOB의 속성은 다음과 같다.

하나의 JCL 파일에 여러 개의 JOB이 있는 경우 순서대로 각각의 JOB의 속성을

보여준다.

- jobpos

하나의 잡스트림에 여러 개의 JOB이 있는 경우, 잡스트림 내에서 JOB의 순

서에 해당하는 위치를 나타내는 번호이다. (0부터 시작)

- NAME

JOB 문장의 이름 혹은 JOB 이름이다. 지정되지 않은 경우는 JCL 구문 에러

가 발생한다.

- USER

JOB 문장의 USER 파라미터에 지정된 값이다. JCL에서 해당 파라미터를 지

정하지 않은 경우는 빈 값으로 출력된다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 141

- GROUP

JOB 문장의 GROUP 파라미터에 지정된 값이다. JCL에서 해당 파라미터를

지정하지 않은 경우는 빈 값으로 출력된다.

- PASSWORD

JOB 문장의 PASSWORD 파라미터에 지정된 값이다. JCL에서 해당 파라미

터를 지정하지 않은 경우는 빈 값으로 출력된다. JCL에 지정된 경우 화면에

는 '****'로 출력된다.

- CLASS

JOB 문장의 CLASS 파라미터에 지정된 값이다. 지정되지 않은 경우

tjclrun.conf 설정 파일에 지정된 기본 값을 사용한다.

- TYPRUN

JOB 문장의 TYPRUN 파라미터에 지정된 값이다. JOB의 실행 타입을 나타

낸다. 지정되지 않은 경우 SCAN이나 HOLD가 아닌 정상 실행 모드로 간주

된다.

- PRTY

JOB 문장의 PRTY 파라미터에 지정된 값이다. JOB의 실행 우선순위를 나타

낸다. 지정되지 않은 경우 tjes.conf [SCHEDULING] PRTYLOW에 지정된

기본 값을 사용한다.

- MSGCLASS

JOB 문장의 MSGCLASS 파라미터에 지정된 값이다. JOB 실행결과로 출력되

는 메시지를 처리하는데 사용되는 클래스 값이다. 지정되지 않은 경우

tjclrun.conf 설정 파일에 지정된 기본 값을 사용한다.

- STMTLEVEL

JOB 문장의 MSGLEVEL 파라미터의 첫 번째 위치의 파라미터 값이다. JOB

실행 시 실행된 문장에 해당하는 로그를 남길지 여부를 결정한다. 지정되지

않은 경우 tjclrun.conf 설정 파일 (MSGLEVEL[1])에 지정된 기본 값을

사용한다.

- MSGLEVEL

JOB 문장의 MSGLEVEL 파라미터의 두 번째 위치의 파라미터 값이다. JOB

제7장 기타 툴

OpenFrame 툴 참조 안내서 142

실행 시 내부적으로 수행되는 동작에 (데이터 셋 할당 등) 대한 로그를 남길

지 여부를 결정한다. 지정되지 않은 경우 tjclrun.conf 설정 파일

(MSGLEVEL[2])에 지정된 기본 값을 사용한다.

jobattr은 JOB 문장 이외의 문장에 대해서는 구문에러 여부만 검사할 뿐 해당 문

장의 값의 정합성 여부는 조사하지 않는다. JOB 문장에 대해서도 위에 나열된

JOB 문장의 파라미터와 설정을 고려하여 출력할 뿐 실제 지정된 값이 적합한 값

인지 여부는 검사하지 않는다.

예를 들어 JOB USER=USER01로 지정된 경우 실제 시스템에 USER01이라는 사

용자가 있는지 여부는 확인하지 않는다.

사용예제

JCL 파일을 파싱하고 구문에러를 확인한 후 화면에 결과를 출력하는 예이다.

$ jobattr BASEALC.jcl

위의 BASEALC.jcl 잡스트림에 대한 jobattr 실행 결과는 다음과 같다.

checking BASEALC.jcl ...

Number of jobs is 1

JOB[0]

NAME=BASEALC

USER=

GROUP=

PASSWORD=

CLASS=B

TYPRUN=N

PRTY=0

MSGCLASS=X

STMTLEVEL=1

MSGLEVEL=1

BASEALC.jcl의 내용은 다음과 같다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 143

//*********************************************************************

//BASEALC JOB CLASS=B,MSGCLASS=X,MSGLEVEL=(1,1),TIME=1440,

// COND=((12,EQ),(16,EQ),(2000,EQ),(3000,EQ))

//*********************************************************************

//* BASE CLUSTER itself

//*********************************************************************

//JS010 EXEC PGM=PGMDD

//INDD DD DSN=TEST.CLUS1,DISP=SHR

//SYSOUT DD SYSOUT=*

//*********************************************************************

//* PATH over BASE CLUSTER

//*********************************************************************

//JS020 EXEC PGM=PGMDD

//INDD DD DSN=TEST.PATH1,DISP=SHR

//SYSOUT DD SYSOUT=*

//*********************************************************************

//* AIX PATH

//*********************************************************************

//JS030 EXEC PGM=PGMDD

//INDD DD DSN=TEST.PATHA,DISP=SHR

//SYSOUT DD SYSOUT=*

//

<BASEALC.jcl>

다음은 두 개의 JOB이 들어있는 JCL의 구문에러를 확인하는 예이다.

$ jobattr TWOJOB.jcl

위의 TWOJOB.jcl 잡스트림에 대한 jobattr 실행 결과는 다음과 같다.

checking TWOJOB.jcl ...

Number of jobs is 2

JOB[0]

NAME=LONG00

제7장 기타 툴

OpenFrame 툴 참조 안내서 144

USER=

GROUP=

PASSWORD=

CLASS=A

TYPRUN=N

PRTY=0

MSGCLASS=X

STMTLEVEL=1

MSGLEVEL=1

JOB[1]

NAME=LONG01

USER=

GROUP=

PASSWORD=

CLASS=A

TYPRUN=N

PRTY=0

MSGCLASS=X

STMTLEVEL=1

MSGLEVEL=1

TWOJOB.jcl의 내용은 다음과 같다.

//*********************************************************************

//LONG00 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)

//*********************************************************************

//STEP1 EXEC PGM=SLEEP,REGION=2M

//SYSOUT DD SYSOUT=*

//*********************************************************************

//LONG01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)

//*********************************************************************

//STEP1 EXEC PGM=SLEEP,REGION=2M

//SYSOUT DD SYSOUT=*

제7장 기타 툴

OpenFrame 툴 참조 안내서 145

//

<TWOJOB.jcl>

JCLERR00.jcl에서 JCL은 DD1 DD 문장에 뒤따르는 파라미터가 없는데도 불구하

고 DD1 DD 문장이 콤마(,)로 끝나는 JCL 구문 에러가 있는 경우에 대한 jobattr

실행 결과를 보여주는 예이다.

$ jobattr JCLERR00.jcl

위의 JCLERR00.jcl 잡스트림에 대한 jobattr 실행 결과는 다음과 같다.

checking JCLERR00.jcl ...

Jcl parsing error

JCLERR00.jcl

(JCL0007E) Unexepected JCL input characters are found at line 8

//STEP2 EXEC PGM=IDCAMS

get_jobattr failed

JCLERR00.jcl의 내용은 다음과 같다.

//*********************************************************************

//* JCL parsing error (syntax)

//* ',' implies more parameters, but none

//*********************************************************************

//JOBA JOB CLASS=B,MSGCLASS=X,MSGLEVEL=(1,1)

//STEP1 EXEC PGM=IEFBR14

//DD1 DD DSN=TEST.CLUS1,DISP=SHR, <-- Useless ',' !!!

//STEP2 EXEC PGM=IDCAMS

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

DELETE TEST.CLUS1 CLUSTER NOERASE PURGE

IF MAXCC = 8 THEN SET MAXCC = 4

/*

//

제7장 기타 툴

OpenFrame 툴 참조 안내서 146

<JCLERR00.jcl>

Appendix

jobattr은 JCL에 기술된 JOB 문의 생략 가능한 파라미터가 생략되었을 경우

tjclrun.conf [JOB] 섹션의 필드 값을 각 파라미터의 설정 값으로 사용한다.

예를 들어, JOB 문장의 MSGCLASS가 생략된 경우 tjclrun.conf [JOB]

MSGCLASS의 설정 값을 사용한다.

tjclrun.conf 설정파일은 TJES에서 JCL을 처리하는 다른 프로그램에서도 사

용되므로 전체적인 JOB 실행 과정을 고려해서 신중하게 결정해야 한다.

7.6 excicblpp

excicblpp는 COBOL 프로그래밍 언어로 구성된 배치 프로그램 소스 내에서

CICS 프로그램을 호출하기 위해 존재하는 EXEC CICS LINK 명령어를 전처리하

여 결과물을 산출하는 프로그램이다.

전처리 후 기존 파일명에 excicblpp_ 이라는 접두어를 붙여 결과물을 생성한다.

사용법

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

Usage: excicblpp file

| excicblpp -v

- file

전처리할 코볼 프로그램 소스 파일을 지정한다.

- -v

Verbose mode로 실행한다.

제7장 기타 툴

OpenFrame 툴 참조 안내서 147

사용예제

CBLSAMPLE.cob 파일을 전처리하여 excicblpp_CBLSAMPLE.cob 이라는 파일을

생성하는 예이다.

$ excicblpp CBLSAMPLE.cob