OpenFrame

Similar documents
Tmax

MySQL-.. 1

Tablespace On-Offline 테이블스페이스 온라인/오프라인

슬라이드 1

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

안내서

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Microsoft Word - AnyLink Introduction v3.2.3.doc

USER GUIDE

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Tibero

튜닝및모니터링 HP JVM 튜닝옵션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Template

개발및운영 Tibero Perl 연동

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

OpenFrame

인디쓔피-IOM핸돜벁닄큐1014pdf, page Preflight ( IOM핸돜벁닄큐__1014 )

untitled

Microsoft PowerPoint - chap01-C언어개요.pptx

ISP and CodeVisionAVR C Compiler.hwp

PowerPoint 프레젠테이션

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

untitled

CD-RW_Advanced.PDF

DBMS & SQL Server Installation Database Laboratory

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

C# Programming Guide - Types

API 매뉴얼

Microsoft PowerPoint - PL_03-04.pptx

PowerPoint Presentation

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step

슬라이드 1

휠세미나3 ver0.4

안내서

PowerPoint 프레젠테이션

마리오와 소닉 리우 올림픽™

SRC PLUS 제어기 MANUAL

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

PowerPoint Presentation

OpenFrame

PowerPoint 프레젠테이션

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties...

PowerPoint 프레젠테이션

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

API 매뉴얼

OpenFrame

OpenFrame

윈백및업그레이드 Tibero Flashback 가이드

BSC Discussion 1

DocsPin_Korean.pages

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Windows 8에서 BioStar 1 설치하기

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Tibero

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

C++ Programming

문서 템플릿

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

개발및운영 Eclipse 를이용한 ANT 활용방법

BMP 파일 처리

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

기타자료.PDF

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

JVM 메모리구조

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

UI TASK & KEY EVENT

FY2005 LIG

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - [2009] 02.pptx

빅데이터분산컴퓨팅-5-수정

MS-SQL SERVER 대비 기능

APOGEE Insight_KR_Base_3P11

ez-shv manual

Backup Exec

Chapter 1

The Pocket Guide to TCP/IP Sockets: C Version

Mango220 Android How to compile and Transfer image to Target

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

PowerPoint 프레젠테이션

Microsoft PowerPoint - o8.pptx

PowerPoint 프레젠테이션

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

T100MD+

PRO1_09E [읽기 전용]

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

1217 WebTrafMon II

슬라이드 1

Transcription:

OpenFrame 툴참조안내서 OpenFrame/Base v5.1, Batch for VOS3 v2.0 Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved.

Copyright Notice Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 263 분당스퀘어 (AK 프라자 ) 12 층우 )463-824 Restricted Rights Legend All TmaxSoft Software (Tmax OpenFrame ) and documents are protected by copyright laws and the Protection Act of Computer Programs, and international convention. TmaxSoft 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 transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TmaxSoft Co., Ltd. 이소프트웨어 (Tmax OpenFrame ) 사용서의내용과프로그램은저작권법, 컴퓨터프로그램보호법및국제조약에의해서보호받고있습니다. 사용서의내용과여기에된프로그램은 TmaxSoft Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용서의전부또는일부분을 Tmaxsoft의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks Tmax and Tmax OpenFrame are registered trademarks of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Tmax 와 Tmax OpenFrame 은 TmaxSoft Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Open Source Software Notice This product includes open source software developed and/or licensed by "OpenSSL", "RSA Data Security, Inc.", "Apache Foundation", and "Jean-loup Gailly and Mark Adler". Information about the aforementioned and the related open source software can be found in the "${INSTALL_PATH}/license/oss_licenses" directory. 본제품은 OpenSSL, RSA Data Security, Inc., Apache Foundation 및 Jean-loup Gailly와 Mark Adler 에의해개발또는라이선스된오픈소스소프트웨어를포함합니다. 관련상세정보는제품의디렉터리 ${IN STALL_PATH}/license/oss_licenses 에기재된사항을참고해주십시오. 안내서정보안내서제목 : OpenFrame 툴참조안내서발행일 : 2009-11-30 소프트웨어버전 : OpenFrame/Base v5.1, Batch for VOS3 v2.0 안내서버전 : v2.1.2

내용목차 안내서에대하여... vii 제1장 개요... 1 1.1. 툴소개... 1 제2장 초기화툴... 5 2.1. mascat... 5 2.2. voladd... 7 2.3. pdsgen... 8 2.4. lockds... 9 제3장 마이그레이션툴... 11 3.1. cobgensch... 11 3.2. pligensch... 15 3.3. sqlgensch... 18 3.4. dsmigin... 19 3.5. dsmigout... 25 3.6. tplipp... 27 3.7. hcob85c... 29 제4장 데이터셋관리툴... 55 4.1. dsview... 55 4.2. dsedit... 57 4.3. dsload... 60 4.4. dssave... 62 4.5. dslist... 64 4.6. dstouch... 68 4.7. dscopy... 69 4.8. dsmove... 71 4.9. dsshm... 75 4.10. dscreate... 76 4.11. dsdelete... 78 4.12. gdgcreate... 79 4.13. gdgdelete... 80 4.14. idcams... 81 4.15. listvol... 87 4.16. listcat... 89 4.17. lockm... 91 제5장 카탈로그관리툴... 95 5.1. icfdump... 95 5.2. icfload... 96 5.3. icfscan... 97 5.4. icfspchk... 98 OpenFrame iii

제6장 Batch 시스템툴... 101 6.1. tjesinit... 101 6.2. dlclean... 102 6.3. jclview... 103 6.4. textrun... 109 6.5. dlupdate... 112 제7장 기타툴... 115 7.1. enpasswd... 115 7.2. oferror... 116 7.3. offile... 117 7.4. ofversion... 118 iv OpenFrame 툴참조안내서

그림목차 [ 그림 3.1] PL/I 스키마파일생성과 OpenFrame 데이터셋생성과정... 15 [ 그림 3.2] tplipp 구조... 28 [ 그림 6.1] jclview -초기화면... 105 [ 그림 6.2] jclview -메뉴선택화면... 105 [ 그림 6.3] jclview - JCL 파일 open 후화면... 106 [ 그림 6.4] jclview - 데이터셋정보열람화면... 106 [ 그림 6.5] jclview - GDG 멤버정보조회화면... 107 [ 그림 6.6] jclview - 데이터셋검색화면... 107 OpenFrame v

안내서에대하여 안내서의대상 본안내서는리호스팅솔루션인 Tmax OpenFrame ( 이하 OpenFrame) 에서필요로하는각종툴프로그 램을사용하는사용자를대상으로기술한다. 안내서의전제조건 본안내서를정확히사용하려면 OpenFrame 의개념을이해하고있어야한다. OpenFrame 에대한이해를 돕기위해 OpenFrame 안내서중 시작하기안내서 와 Batch 안내서 를먼저숙지할것을권장한다. 안내서의제한조건 본안내서는 OpenFrame 에서제공하는문법을제외하고는언급하지않는다. 참고 Mainframe 의 COBOL 관련은참고문헌에된안내서를참고한다. 안내서에대하여 vii

안내서구성 툴참조안내서는총 7개의장으로구성되어있다. 각장의주요내용은다음과같다. 제1장 : 개요각장에서다룰툴의전반적인개요에대해기술한다. 제 2 장 : 초기화툴 초기화툴프로그램을사용하여 OpenFrame 을초기화하는방법에대해기술한다. 제 3 장 : 마이그레이션툴 마이그레이션툴프로그램을사용하여데이터셋관련작업을처리하는방법에대해기술한다. 제 4 장 : 데이터셋관리툴 데이터셋관리툴프로그램을사용하여데이터셋관련작업을처리하는방법에대해기술한다. 제 5 장 : 카탈로그관리툴 카탈로그관리툴프로그램을사용하여데이터셋관련작업을처리하는방법에대해기술한다. 제 6 장 : 배치시스템툴 배치시스템에서필요로하는툴프로그램사용법에대해기술한다. 제 7 장 : 기타툴 사용자편의를위해제공되는초기화툴, 마이그레이션툴, 데이터셋관리툴, 카탈로그관리툴, 배치 시스템툴이외의툴을사용하는방법에대해기술한다. viii OpenFrame 툴참조안내서

안내서규약 표기 <AaBbCc123> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고 의미프로그램소스코드의파일명, 디렉터리 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항 [ 그림 1.1] [ 표 1.1] AaBbCc123 그림이름 표이름 명령어, 명령어수행후화면에출력된결과물, 예제코드 [ ] _..., +, * 옵션인수값선택인수값스페이스파라미터등이반복되어나옴 안내서에대하여 ix

시스템사용환경 요구사항 Platform IBM AIX 5.x HP-UX 11.xx Solaris 9 (SunOS 5.9) Linux IA64 2.6.x Hardware 최소 120MB 하드디스크공간 256MB 이상메모리공간 1GB 이상하드디스크와 512MB 이상메모리공간권장 Database Tibero 3.0 Oracle 9i 또는 10g Compiler COBOL2002 컴파일러 x OpenFrame 툴참조안내서

관련안내서 안내서 OpenFrame OpenFrame 의기본개념과개발사상에대해기술한안내서이다. 시작하기안내서 OpenFrame TJES 안내서 OpenFrame Batch 안내서 OpenFrame Base 안내서 OpenFrame 데이터셋안내서 Tibero TSAM 안내서 TJES가 OpenFrame 시스템의 Batch JOB 관리하는내용에대해기술한안내서이다. OpenFrame/Batch를구성하는전반적인기능에대해기술한안내서이다. OpenFrame/Base를구성하는전반적인기능에대해기술한안내서이다. OpenFrame 데이터셋에대한소개와데이터셋종류및카탈로그방법등에대해기술한안내서이다. VSAM에대응하는제품인 TSAM에대한소개와데이터셋종류및관리방법, 데이터셋처리방법에대해기술한안내서이다. 참고문헌 제품 Mainframe 안내서 COBOL2002 使用の手引手引編 VOS3 COBOL85 言語文法書 안내서에대하여 xi

연락처 Korea TmaxSoft Co., Ltd 263 BundangSquare (AK Plaza) 12th floor, Seohyeon-dong, Bundang-gu, Seongnam-si, Gyeonggi-do, 463-824 South Korea Tel: +82-31-8018-1000 Fax: +82-31-8018-1115 Email: info@tmax.co.kr Web (Korean): http://www.tmax.co.kr 기술지원 : http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632 U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web (English): 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: info@tmaxsoft.co.jp Web (Japanese): http://www.tmaxsoft.co.jp xii OpenFrame 툴참조안내서

China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027 China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn 안내서에대하여 xiii

제 1 장개요 1.1. 툴소개 OpenFrame 툴프로그램은 Batch JOB으로실행되는 OpenFrame 유틸리티프로그램과는다르게, UNIX 셸에서직접사용자의입력을받아서실행되는프로그램을의미한다. OpenFrame 툴프로그램은 Mainframe에서사용되었던애플리케이션이나데이터셋등을마이그레이션하기위한기능을제공하거나, OpenFrame Batch 시스템또는 Online 시스템을운영하는데필요한기능을제공한다. 초기화툴 다음은 OpenFrame 초기화를위한프로그램목록이다. 프로그램명 mascat voladd pdsgen lockds OpenFrame 제품을처음설치할때, 마스터카탈로그를생성하는툴이다. OpenFrame 제품을처음설치할때, VVDS를생성하고마스터카탈로그에등록하는툴이다. PDS를생성하거나 OpenFrame 인스톨러에서시스템에필요한 PDS를생성하는툴이다. Batch 시스템을부팅하기전에초기화처리로서, Lock 데이터셋혹은로그데이터셋을생성또는제거하는툴이다. 마이그레이션툴 다음은 OpenFrame 마이그레이션을위한프로그램목록이다. 프로그램명 cobgensch pligensch Mainframe 데이터셋을 OpenFrame 데이터셋으로마이그레이션하는과정에서필요한데이터셋마이그레이션스키마파일을생성하는툴이다. COBOL Copybook 소스파일을참조하여스키마파일을생성한다. Mainframe 데이터셋을 OpenFrame 데이터셋으로마이그레이션하는과정에서필요한데이터셋마이그레이션스키마파일을생성하는툴이다. pligensch는 PL/I 소스파일을참조하여스키마파일을생성한다. 제 1 장개요 1

프로그램명 sqlgensch dsmigin dsmigout tplipp hcob85c Mainframe 데이터셋을 OpenFrame 데이터셋으로마이그레이션하는과정에서필요한데이터셋마이그레이션스키마파일을생성하는툴이다. sqlgensch는 SQL 테이블생성스크립트를참조하여스키마파일을생성한다. EBCDIC 코드형태의 Mainframe 데이터셋을 ASCII 코드형태의 OpenFrame 데이터셋으로마이그레이션할때사용하는툴이다. ASCII 코드형태의 OpenFrarme 데이터셋을 EBCDIC 코드형태의 Mainframe 데이터셋으로변환하여 UNIX 파일로 Export하는툴이다. Mainframe에서사용하던 PL/I 프로그램소스를 OpenFrame에서동작할수있도록 PL/I 프로그램소스를수정하는툴이다. OpenFrame 엔진이 Hitachi용 COBOL 프로그램을원활하게처리할수있도록프로그램소스를전처리하고이를 Shared Object로컴파일하는툴이다. 데이터셋관리툴 다음은데이터셋관리를위한프로그램목록이다. 프로그램명 dsview dsedit dsload dssave dslist dstouch dscopy dsmove dsshm dscreate dsdelete gdgcreate gdgdelete idcams listvol listcat 데이터셋의내용을보여주는툴이다. 데이터셋의내용을보여주고데이터셋의내용을변경하는툴이다. Non-VSAM 데이터셋을 UNIX 파일로백업하는기능을제공하는툴이다. dsload로백업한 UNIX 파일을다시 Non-VSAM 데이터셋으로갱신하는툴이다. 특정볼륨에있는데이터셋에대한정보를출력하는툴이다. 카탈로그나 VTOC에저장된데이터셋의통계정보및생성일자를갱신하는툴이다. 데이터셋을다른볼륨이나다른이름으로복사하는툴이다. 데이터셋을이동시키는툴로, 데이터셋의볼륨을변경하거나이름을변경하는경우에사용한다. 데이터셋을할당할때생성되는 DCB 구조체의저장공간인공유메모리를관리하는툴이다. Non-VSAM 데이터셋을신규로생성하는툴이다. 기존 Non-VSAM 데이터셋을삭제하는툴이다. GDG 항목을신규로생성하는툴이다. 기존 GDG 항목을삭제하는툴이다. VSAM 데이터셋혹은사용자카탈로그를생성하거나삭제하는툴이다. 시스템에등록된볼륨정보를출력하는툴이다. 특정카탈로그에등록된항목에대한정보를출력하는툴이다. 2 OpenFrame 툴참조안내서

프로그램명 lockm 데이터셋을독점적으로사용하기위한데이터셋 Lock 정보를조회하고삭제할수 있는툴이다. 카탈로그관리툴 다음은카탈로그의관리를위한프로그램목록이다. 프로그램명 icfdump icfload icfscan icfspchk 카탈로그정보를백업하여차후에문제가발생했을경우이를복구하는툴이다. icfdump로백업한데이터를사용하여현재카탈로그시스템을백업할당시의시점으로복구하는툴이다. 카탈로그에등록된엔트리의유효성및유형별통계를산출하는툴이다. 카탈로그를기준으로 VSAM 볼륨의사용공간을확인하는툴이다. Batch 시스템툴 다음은 Batch 시스템의운영편의를위한프로그램목록이다. 프로그램명 tjesinit dlclean jclview textrun dlupdate OpenFrame/Batch에서시스템데이터셋뿐만아니라 JOBQ와 SPOOL 등을초기화하기위해사용되는툴이다. dlupdate를한후에임시데이터셋에옮겨놓은이전라이브러리들을삭제하는툴이다. tjesmgr와같이 UNIX 터미널화면에서실행되는 JCL 파일뷰어를제공하는툴이다. JOB을 submit하고 JOB의실행결과를보여주는툴이다. 사용자가만든라이브러리를변경하고자할때사용하는툴이다. 제 1 장개요 3

기타툴 다음은기타운영편의를위해제공되는툴목록이다. 프로그램명 enpasswd oferror offile ofversion 사용자의비밀번호를 64Byte 문자열로인코딩하는툴이다. OpenFrame에서발생하는에러에대한간략한에러번호, 에러코드, 에러메시지를출력하는툴이다. OpenFrame 전모듈에대한버전트랙킹을위한툴이다. 설치된 OpenFrame 서브제품의종류와각서브제품의버전을출력하는툴이다. 각프로그램의사용법과사용예제는각절에서상세히한다. 4 OpenFrame 툴참조안내서

제 2 장초기화툴 2.1. mascat mascat은 OpenFrame 제품을처음설치할때, 마스터카탈로그를생성하는프로그램이다. OpenFrame 제품을처음설치할때, 데이터셋과관련해서기본적으로수행해야하는절차는다음과같다. 1. 디바이스및볼륨설정디바이스에대한설정파일인 unit.conf 파일과볼륨에대한설정파일인 volume.conf 파일을 OpenFrame 운영환경에맞게설정한다. 2. Non-VSAM 볼륨디렉터리생성 UNIX 명령어인 mkdir 을사용해서 volume.conf 파일에설정된대로볼륨디렉터리를생성한다. 3. VSAM 볼륨테이블스페이스생성 VSAM 데이터셋이저장되는공간인데이터베이스테이블스페이스를생성한다. SQL 명령어중 CREATE TABLESPACE 사용한다. 4. 마스터카탈로그생성 OpenFrame 제품과같이배포되는 mascat 프로그램을사용해서마스터카탈로그를생성한다. 5. VVDS (VSAM Volume Dataset) 데이터셋생성및등록 OpenFrame 제품과같이배포되는 voladd 프로그램을사용해서각볼륨별로 VVDS 를생성하고마스 터카탈로그에등록한다. 제 2 장초기화툴 5

사용법 mascat 프로그램을실행하는방법은다음과같다. Usage: mascat create dsname volser mascat remove dsname 항목 create remove dsname volser 마스터카탈로그를생성한다. 마스터카탈로그를제거한다. 마스터카탈로그의이름을지정한다. 마스터카탈로그가생성될볼륨시리얼을지정한다. 사용예제 다음은 100000 이라는볼륨에 SYS1.MASTER.ICFCAT 이라는이름으로마스터카탈로그를생성하는예 이다. $ mascat create SYS1.MASTER.ICFCAT 100000 관련환경설정 mascat 프로그램은마스터카탈로그 VSAM 데이터셋을생성하기위해 ds.conf 파일의 [SYS1_CLIENT] 절에기술된 TSAM 서버로접속한다. <ds.conf> [SYS1_CLIENT] mascat 프로그램으로생성된마스터카탈로그 VSAM 데이터셋을 OpenFrame 카탈로그로사용하기위해서는카탈로그접속정보를 ds.conf 파일의 [ICF_STORAGE] 절과 [ICF_BACKUP] 절에등록해야한다. mascat 프로그램으로생성된마스터카탈로그는 ds.conf 파일의 [ICF_CATALOG] 절에등록해야한다. 위의사용예제에서생성된마스터카탈로그를 ds.conf 파일에다음과같이설정해야한다. 6 OpenFrame 툴참조안내서

<ds.conf> [ICF_CATALOG] MASCAT_VSER=100000 MASCAT_NAME=SYS1.MASTER.ICFCAT 2.2. voladd voladd는 OpenFrame 제품을처음설치할때, VVDS를생성하고마스터카탈로그에등록하는툴이다. OpenFrame 제품을운용중에볼륨을추가하는경우에도사용된다. 테이블스페이스와 volume.conf 파일에대한설정을마친후에프로그램을사용해야한다. 사용법 voladd 프로그램을실행하는방법은다음과같다. Usage: voladd define volser voladd delete volser 항목 define delete volser VVDS를정의한다. VVDS를삭제한다. 정의하거나삭제하려고하는볼륨의시리얼번호를지정한다. 사용예제 다음은 100000 이라는볼륨에 VVDS 를생성하고카탈로그에등록하는예이다. $ voladd define 100000 다음은 VSPOOL 이라는볼륨에 VVDS 를생성하고마스터카탈로그에등록했다가삭제하는예이다. $ voladd define VSPOOL $ voladd delete VSPOOL 제 2 장초기화툴 7

관련환경설정 voladd 프로그램이 VVDS를생성하기위해접속하는 TSAM 서버정보가설정되어있다. <ds.conf> [SYS1_CLIENT] voladd 프로그램이 VVDS 를카탈로그에등록하기위해접속하는 TSAM 서버정보가설정되어있다. <ds.conf> [ICF_STORAGE] 주의 VVDS 도 ICF 카탈로그의일부이므로 VVDS 를생성할때에는 ds.conf 파일의 [SYS1_CLIENT] 절의 내용이 [ICF_STORAGE] 절의내용과동일한지확인이필요하다. 2.3. pdsgen pdsgen은 PDS를생성하거나 OpenFrame 인스톨러에서시스템에필요한 PDS를생성하는툴이다. PDS 를생성할때데이터셋에 Lock을실행하지않으므로, 운영중에는사용하지않고인스톨할때만사용하도록권장한다. 사용법 pdsgen 프로그램을실행하는방법은다음과같다. Usage: pdsgen dsname volser [-f recfm] [-l lrecl] 항목 dsname volser [-f recfm] [-l lrecl] 생성할 PDS 이름을지정한다. 생성한 PDS를저장할볼륨시리얼을지정한다. 생성할 PDS의레코드포맷을지정한다. 생성할 PDS의레코드길이를지정한다. pdsgen 을통해생성된 PDS 는기본속성으로 RECFM=FB, LRECL=80, BLKSIZE=4096 의속성을가진다. 8 OpenFrame 툴참조안내서

사용예제 다음은 TEST.PDS 를 100000 볼륨에생성하는예이다. $ pdsgen TEST.PDS 100000 위의프로그램을실행하면다음과같은 TEST.PDS 파일이생성된다. Data Set Name... : TEST.PDS Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/08/24 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : PO Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : N.A. Number of Extents : N.A. Secondary Space. : N.A. Data Set Size.. : 0 Last Access Date Last Access Date : ***None*** Last Access Time : **None** 2.4. lockds lockds 는 OpenFrame 시스템에서사용되는 Lock 데이터셋및 Log 데이터셋을생성, 삭제하거나해당데 이터셋의내용을초기화 (truncate) 하는기능을제공하는툴이다. 주의 Batch 시스템이기동중일때에는 lockds 를사용하지않도록주의한다. 사용법 lockds 프로그램을실행하는방법은다음과같다. 제 2 장초기화툴 9

Usage: lockds [command] [options] command command create remove truncate 환경설정파일 ds.conf [LOCK_SERVER] 절의 LOCK_DATASET 항목과 LOG_DATASET 항목에지정된 Lock 또는 Log 데이터셋을생성하며마스터카탈로그에등록된다. 환경설정파일 ds.conf [LOCK_SERVER] 절의 LOG_DATASET 항목에지정된 Lock 또는 Log 데이터셋을삭제한다. 데이터셋을별도로백업하지않는점에주의한다. 환경설정파일 ds.conf [LOCK_SERVER] 절의 LOCK_DATASET 항목에지정된 Lock 또는 Log 데이터셋을초기화한다. 데이터셋은삭제하지않고내용만삭제한다. [options] 옵션 [-d] [-l] [-v] Lock 데이터셋에대해지정한명령어를수행한다. Log 데이터셋에대해지정한명령어를수행한다. lockds의버전을출력한다. 사용예제 다음은 Lock 데이터셋을생성하는예이다. $ lockds create -d 다음은 Log 데이터셋을삭제하는예이다. $ lockds remove -l 다음은 Log 데이터셋의내용을초기화하는예이다. $ lockds truncate -d 참고 lockds을실행하다가문제가발생한경우에는먼저 ds.conf [TSAM_CLIENT] 절에정의된 DATABASE 항목의설정값을확인하고정상적으로데이터베이스에접속이되는지를확인한다. 또한동일설정파일의 [LOCK_SERVER] 절의 LOCK_DATSET 항목과 LOG_DATASET 항목에지정된데이터셋이름이정확한지를확인한다. 10 OpenFrame 툴참조안내서

제 3 장마이그레이션툴 3.1. cobgensch cobgensch는 Mainframe 데이터셋을 OpenFrame 데이터셋으로마이그레이션하는과정에서필요한데이터셋마이그레이션스키마파일을생성하는툴이다. 데이터셋마이그레이션스키마파일을생성하는프로그램으로는 cobgensch과 pligensch가있다. cobgensch는 COBOL Copybook 소스파일을참조하여스키마파일을생성하고, pligensch는 PL/I 소스파일을참조하여스키마파일을생성한다. 데이터셋마이그레이션을수행할때원본데이터파일인 UNIX 소스파일의한레코드에여러 char-set이섞여있는경우에는 (EBCDIC, ASCII 코드가섞여있거나 2Byte 문자, Packed Decimal, Zoned Decimal이사용된경우등 ) 레코드단위의일괄적인단순코드변환을할수없다. 따라서레코드의각필드에대한코드변환규칙을스키마파일에정의한다. 이후 dsmigin 프로그램을실행할때각데이터셋에해당하는스키마파일을지정하여데이터셋마이그레이션작업을수행한다. cobgensch 프로그램은 COBOL 소스파일이나 COBOL Copybook 파일로마이그레이션스키마파일을생성한다. 생성된스키마파일들저장할디렉터리경로는 ds.conf 파일 [DATASET_DIRECTORY] 절의 SCHEMA_DIR 항목에지정한다. 사용법 cobgensch 를실행하는방법은다음과같다. Usage: cobgensch input_file [options] 입력항목 항목 input_file COBOL 소스파일또는 COBOL Copybook 파일을지정한다. [options] 제 3 장마이그레이션툴 11

옵션 [-r rec_len] [-o output] 스키마파일을사용할데이터셋이고정길이레코드이고레코드길이를알고있는경우에레코드길이를지정하면, 스키마파일을생성할때레코드길이정합성을체크한다. 생성될스키마파일의이름을지정한다. 지정하지않는경우 input_file 명을기본값으로사용한다. Output 파일명을지정했을경우볼륨시리얼지정여부에따라 <volser>_<out put>.conv 또는 <output>.conv 란이름으로스키마파일이생성된다. [-v volser] 생성될스키마파일명에사용될볼륨시리얼을지정한다. 지정하지않는경우생 성될스키마파일명은볼륨시리얼을포함하지않는다. 이옵션을지정했을경우 <volser>_<output>.conv 란이름으로스키마파일이 생성된다. [-d] [-V] scanner 와 parser 를포함한모든생성된디버그메시지를보여준다. cobgensch 의버전정보를화면에출력한다. 사용예제 다음은 COBOL Copybook 파일의간단한예제이다. <COB.TESTDATA1.cpy> 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). 12 OpenFrame 툴참조안내서

05 I-TTJC PIC S9(13) COMP-3. 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). 다음은 cobgensch 를실행하여스키마파일을생성하는예이다. $ cobgensch COB.TESTDATA1.cpy 위의 cobgensch 를실행한결과정상적으로스키마파일이생성되었다. input filename = COB.TESTDATA1.cpy schema filename = /home/tmax/openframe/schema/cob.testdata1.conv 다음은 cobgensch 를실행하여잘못된레코드길이를지정했을경우정합성을체크하는예이다. $ cobgensch COB.TESTDATA1.cpy -r 100 위의 cobgensch 를실행한결과, 레코드길이정합성체크에서에러가발생했다. input filename = COB.TESTDATA1.cpy input record length = 100 ** input record length is different from scheme record length!!! ** (input reclen = 100, scheme reclen = 150) Failed to generate a schema file. rc - -1 schema filename = /home/tmax/openframe/schema/cob.testdata1.conv 다음은올바른레코드길이를지정하여 cobgensch 를실행하는예이다. $ cobgensch COB.TESTDATA1.cpy -r 150 위의 cobgensch 를실행한결과정상적으로스키마파일이생성되었다. 레코드길이가 150 Byte 로지정한 값과일치하므로정합성을체크할때오류가발생하지않았다. input filename = COB.TESTDATA1.cpy input record length = 150 scheme filenama = /home/tmax/openframe/schema/cob.testdata1.conv 제 3 장마이그레이션툴 13

다음은위의 cobgensch 를실행한후생성된스키마파일의예이다. <COB.TESTDATA1.conv> * scheme L1, 01, I-REC, NULL, 0, 1, L2, 05, I-SAGNO, EBC_ASC, 11, 1, L3, 05, I-DAMBO, EBC_ASC, 2, 1, L4, 05, I-PHNO, EBC_ASC, 3, 1, L5, 05, I-BKNO, U_ZONED, 3, 1, L6, 05, I-BKDT, EBC_ASC, 10, 1, L7, 05, I-BKDT-I, EBC_ASC, 1, 1, L8, 05, I-BSGB, EBC_ASC, 2, 1, L9, 05, I-BSHG, EBC_ASC, 2, 1, L10, 05, I-CIGB, EBC_ASC, 2, 1, L11, 05, I-CIHG, EBC_ASC, 2, 1, L12, 05, I-JHGB, EBC_ASC, 2, 1, L13, 05, I-TTJC, PACKED, 7, 1, L14, 05, I-TTIC, ZONED, 13, 1, L15, 05, I-NAME, EBC_ASC, 20, 1, L16, 05, I-TEST1, U_ZONED, 10, 1, L17, 05, I-TEST2, U_ZONED, 10, 1, L18, 05, I-TEST3, U_ZONED, 10, 1, L19, 05, I-TEST4, EBC_ASC, 10, 1, L20, 05, I-TEST5, U_ZONED, 10, 1, L21, 05, I-TEST6, U_ZONED, 10, 1, L22, 05, I-TEST7, U_ZONED, 10, 1, * condition L0, "\0", ( L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15 L16 L17 L18 L19 L20 L21 L22 ) 관련환경설정 다음과같이 ds.conf 파일에생성된스키마파일을저장할디렉터리경로를지정한다. <ds.conf> [DATASET_DIRECTORY] SCHEMA_DIR=schema_dir 14 OpenFrame 툴참조안내서

3.2. pligensch pligensch는 Mainframe 데이터셋을 OpenFrame 데이터셋으로마이그레이션하는과정에서필요한데이터셋마이그레이션스키마파일을생성하는툴이다. pligensch는 cobgensch 프로그램과동일한스키마파일을생성하지만, cobgensch는 COBOL COPYBOOK 을사용하는반면 pligensch는 PL/I 소스파일을참조하여 Mainframe 데이터셋의레코드구조를파악한후스키마파일을생성한다. 생성된스키마파일을저장할디렉터리경로는 ds.conf 파일 [DATASET_DI RECTORY] 절의 SCHEMA_DIR 항목에지정한다. 다음은 PL/I 스키마파일생성과 OpenFrame 데이터셋생성과정을한그림이다. [ 그림 3.1] PL/I 스키마파일생성과 OpenFrame 데이터셋생성과정 pligensch 에 PL/I 소스를입력하면레코드구조를담은스키마파일이생성된다. dsmigin 수행할때스키 마파일과 Mainframe 데이터셋을입력파라미터로지정하여 OpenFrame 데이터셋을생성할수있다. 사용법 pligensch 를실행하는방법은다음과같다. Usage: pligensch [options] file1 [file2...] [options] 옵션 [-h] [-y] [-l] [-d] [-I dir] [-r reclen] [-o output] pligensch에서사용가능한옵션에대한정보를보여준다. parser에서생성된디버그메시지를보여준다. scanner에서생성된디버그메시지를보여준다. scanner와 parser를포함한모든생성된디버그메시지를보여준다. PL/I의 include 파일들이존재하는위치를지정한다. 스키마파일을사용할데이터셋이고정길이레코드이고레코드길이를알고있는경우에레코드길이를지정하면, 스키마파일을생성할때레코드길이정합성을체크한다. 생성될스키마파일의이름을지정한다. 지정하지않는경우 file# 에지정한입력파일명을기본값으로사용한다. 제 3 장마이그레이션툴 15

옵션 Output 파일명을지정했을경우볼륨시리얼지정여부에따라 <volser>_<out put>.conv 또는 <output>.conv 란이름으로스키마파일이생성된다. [-v volser] 생성될스키마파일명에사용될볼륨시리얼을지정한다. 지정하지않는경우생성될스키마파일명은볼륨시리얼을포함하지않는다. 이옵션을지정했을경우 <volser>_<output>.conv 란이름으로스키마파일이생 성된다. [-s] [-f aix] [-f liant] [-V] 입력파일이 sub-structure만을포함하는파일일때지정한다. 입력으로받을 PL/I 소스가 AIX PL/I일때지정한다. -f 옵션을지정하지않으면기본적으로 AIX PL/I로인식한다. 입력으로받는 PL/I 소스가 Liant Open PL/I일때지정한다. cobgensch의버전정보를화면에출력한다. 입력항목 항목 file1 PL/I 소스파일명을지정한다. 사용예제 다음은 PL/I Include 파일의간단한예이다. <PLI.TESTDATA1.inc> 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); 다음은 pligensch 를실행하여 COBOL 스키마파일을생성하는예이다. 위 PL/I include 파일은 DECLARE 구문부터시작하지않고, sub-structure 만을포함하고있으므로 -s 옵션을지정하여실행한다. $ pligensch s PLI.TESTDATA1.inc 위의 pligensch 를실행한결과정상적으로 COBOL 스키마파일이생성되었다. 16 OpenFrame 툴참조안내서

input filename = PLI.TESTDATA1.inc Schema filename = /home/tmax/openframe/schema/pli.testdata1.conv - created 다음은 pligensch 를실행하여 PL/I 스키마파일을생성하고, 정합성을체크하는예이다. $ pligensch -r 10 s PLI.TESTDATA1.inc 위의 pligensch 를실행한결과, 레코드길이정합성체크에서에러가발생했다. input filename = PLI.TESTDATA1.inc input record length = 10 ** input record length is different from schema record length!!! ** (input reclen = 10, schema reclen = 15) Failed to generate a schema file. rc=-1 다음은올바른레코드길이를지정하여 pligensch 를실행하는예이다. $ pligensch -r 15 s PLI.TESTDATA1.inc 위의 pligensch 를실행한결과정상적으로스키마파일이생성되었다. 레코드길이가 15 Byte 로지정한값 과일치하므로정합성을체크할때오류가발생하지않았다. input filename = PLI.TESTDATA1.inc input record length = 15 Schema filename = /home/tmax/openframe/schema/pli.testdata1.conv - created 다음은 pligensch 를실행한후생성된스키마파일의예이다. <PLI.TESTDATA1.conv> * scheme L1, 01, TEST1_STRUCTURE, NULL, 0, 1, L2, 03, TEST1, EBC_ASC, 2, 1, L3, 03, TEST2, EBC_ASC, 5, 1, L4, 03, TEST3, NULL, 0, 1, L5, 05, TEST4, ZONED, 3, 1, L6, 05, TEST5, EBC_ASC, 3, 1, L7, 03, TEST6, PACKED, 2, 1, * condition L0, "\0", ( L1 L2 L3 L4 L5 L6 L7 ) 제 3 장마이그레이션툴 17

관련환경설정 다음과같이 ds.conf 파일에생성된스키마파일을저장할디렉터리경로를지정한다. <ds.conf> [DATASET_DIRECTORY] SCHEMA_DIR=schema_dir 3.3. sqlgensch sqlgensch는 Mainframe에서이용하는데이터베이스를 OpenFrame의데이터베이스로마이그레이션하는과정에서필요하다. Mainframe에서이용한데이터베이스의 DDL(Data Definition Language) 파일을이용하여데이터베이스마이그레이션에필요한스키마, Copybook, Tibero용 DDL, Tibero Import용컨트롤파일을생성하는툴이다. sqlgensch의기능중스키마파일생성기능은 cobgensch, pligensch과동일한스키마를생성하는것이다. 사용법 sqlgensch 를실행하는방법은다음과같다. Usage: sqlgensch [options] file1 [file2...] [options] 옵션 [-c] [-s] [-t] [-q] [-V] COBOL Copybook을생성한다. 스키마파일을생성한다. Tibero로 Import하기위한컨트롤파일을생성한다. 데이터베이스의테이블생성을위한 DDL문을생성한다. sqlgensch의버전정보를화면에출력한다. 입력항목 옵션 file1 Mainframe 에서이용한데이터베이스의 DDL 파일명을지정한다. 18 OpenFrame 툴참조안내서

사용예제 다음은 sqlgensch 를실행하여 COBOL Copybook 을생성하는예이다. $ sqlgensch c dbddl.txt 다음은 sqlgensch 를실행하여스키마를생성하는예이다. $ sqlgensch -s dbddl.txt 다음은 sqlgensch 를실행하여 Tibero Import 용컨트롤파일을생성하는예이다. $ sqlgensch -t dbddl.txt 다음은 sqlgensch 를실행하여 Tibero 용 DDL 문을생성하는예이다. $ sqlgensch -q dbddl.txt 3.4. dsmigin dsmigin는 EBCDIC 코드형태의 Mainframe 데이터셋을 ASCII 코드형태의 OpenFrame 데이터셋으로마이그레이션할때사용하는툴이다. Mainframe 데이터셋을 UNIX 환경의 OpenFrame 데이터셋으로마이그레이션할때일반적으로다음과같은절차가수행된다. 1. FTP를이용하여 Mainframe 데이터셋을 UNIX 파일로다운로드한다. Binary Mode로다운로드한다. 2. 데이터셋을마이그레이션할때스키마파일이필요한경우해당데이터셋을사용하는 COBOL 이나 PL/I 소스파일을참조하여스키마파일을작성한다. 3. dsmigin 툴을이용하여 UNIX 에다운로드된파일을 OpenFrame 데이터셋으로 Import 하는작업을수행 한다. 사용법 dsmigin 프로그램을실행하는방법은다음과같다. Usage: dsmigin src_file <dest_file dataset_name> [options] 입력항목 제 3 장마이그레이션툴 19

항목 src_file dest_file 또는 dataset_name 마이그레이션을수행할 UNIX 소스파일명또는파일경로를지정한다. 생성할파일또는데이터셋이름을지정한다. [options] 옵션 [-C] [-I] [-S] [-m member_name] EBCDIC 문자로작성된파일을 ASCII 문자로변환만하고 OpenFrame으로 Import 하지않을경우지정한다. 출력파일로 OpenFrame 데이터셋명이아닌일반텍스트파일을지정해야한다. 변환작업만하는경우 Tmax 서버는사용되지않는다. [-C] 옵션과반대로변환작업을수행하지않고입력파일을직접 OpenFrame으로적재하는경우지정한다. 입력파일로주어진데이터가소스파일일경우지정한다. 이옵션이지정되면, 레코드포맷 (RECFM) 은 L 타입이된다. 생성할멤버이름 (PDS를생성할경우 ) 또는생성할상대세대번호 (GDG를생성할경우 ) 를지정한다. - SDS(Sequential Data Set) 를생성하는경우에는 <dataset_name> 만지정한다. - PDS(Partitioned Data Set) 를생성하는경우에는 <dataset_name> 과 [mem ber_name] 을모두지정한다. - GDS(Generation Data Set) 을생성할경우에는 <dataset_name> 과세대번호 (-1, 0, +1,...) 를지정한다. 세대번호는 [member_name] 으로지정할수있으며, 새로생성하는멤버일경우 "+1" 을사용한다. [-u unit] [-v volume] 데이터셋이생성될 UNIT 그룹명을지정한다. 데이터셋이생성될볼륨시리얼을지정한다. 이옵션을지정하지않을경우에는 ds.conf 파일의 [DATASET_DEFAULT] 절 DEFAULT_VOLSER 항목에등록되어있는디폴트볼륨시리얼에데이터셋이 생성된다. [-c user_catalog] [-e encoding_code] 데이터셋이등록될사용자카탈로그를지정한다. 지정하지않을경우에는마스터카탈로그에데이터셋이등록된다. EBCDIC에서 ASCII로코드를변환할때 EBCDIC 2Byte 문자를어떤 ASCII 문자코드로변환할지를지정한다. - US : 영어 (Default) - KR : 한국어 (EUC-KR) 20 OpenFrame 툴참조안내서

옵션 - JP : 일본어 (Shift-JIS) - JAK : 일본어 (JEF) [-s scheme] [-cob cobol_type] UNIX 소스파일의한레코드에여러 char-set이섞여있는경우에는 (EBCDIC, ASCII 코드가섞여있거나 2Byte 문자, Packed Decimal, Zoned Decimal이사용된경우등 ) 레코드단위의단순코드변환이불가능하기때문에 cobgensch 또는 pligensch 프로그램을이용하여스키마파일을생성한후해당스키마파일을지정한다. 스키마파일을지정하지않은경우 ds.conf 파일 [DATASET_DIREC TORY] 절의 SCHEMA_DIR 항목에정의된디렉터리에서소스파일명과매치하는스키마파일을사용한다. 사용된 COBOL 언어의타입을지정한다. COBOL 타입에설정할수있는값은 MF(MicroFocus COBOL), NET(Net COBOL) 이있으며, 이옵션을지정하지않은경우디폴트값은 MF 이다. [-k keylen] [-p keypos] [-l rec_len] [-o dsorg] 마이그레이션될데이터셋이 ISAM 타입일경우키길이를지정한다. 또한, DSORG를 IS로설정해야한다. 마이그레이션될데이터셋이 ISAM 타입일경우키위치를지정한다. 또한, DSORG를 IS로설정해야한다. 데이터셋의레코드길이 (LRECL) 를지정한다. 고정길이레코드일경우마이그레이션되는데이터셋의실제레코드길이가지정한레코드길이와일치하는지체크할수있다. 가변길이레코드일경우에는최대레코드길이를지정한다. 레코드길이를지정하지않으면스키마파일에서얻어온레코드길이를기본값으로사용한다. 생성할데이터셋의 DSORG를지정한다. DSORG 에설정할수있는값은 PS, PSU, DA, DAU, IS 등이있으며, 이옵션을 지정하지않은경우기본값은 PS 이다. [-b blksize] [-f recfm] [-d delimiter] [-w lockwait] 데이터셋의블록사이즈 (BLKSIZE) 를지정한다. 데이터셋의레코드포맷 (RECFM) 을지정한다. 지정할수있는레코드포맷으로는 F(Fixed), FB(Fixed Blocked), V(Variable), VB(Variable Blocked), L(Line) 타입이있다. UNIX 소스파일에서레코드간의구분을위해사용된 delimiter를지정한다. 개행문자, 탭등과같은문자를 delimiter로사용할경우에는 "( 따옴표 ) 안에 escape 문자를사용하여 "\n", "\t" 으로표현한다. Import 대상데이터셋에 Lock이실행중인경우 Lock이해제될때까지대기하고있다가해제되면작업을수행한다. 이옵션을지정하지않은경우적재대상데이터셋에이미 Lock 이실행중이면 에러메시지를출력하고작업수행을중단한다. 제 3 장마이그레이션툴 21

옵션 [-n] [-sosi sosi_type] OpenFrame으로적재하지않고변환작업만실행할경우레코드구분을위하여각레코드마다 delimiter로개행문자를붙여준다. SOSI 문자는레코드의 1Byte 문자필드에 2Byte 문자가혼합해서사용되는경우 2Byte 문자를구분하기위해사용된다. SOSI 타입에설정할수있는값은다음과같으며, 기본값은 SOSI를변환하지않고그대로유지하는 1이다. [SOSI 타입 ] - 1 = so[ebc]si -> so[asc]si : SOSI를변환하지않음 (Default) - 2 = so[ebc]si ->_[ASC]_ : SOSI를스페이스로변환 - 3 = so[ebc]si -> [ASC] : SOSI 삭제 - 4 = so[jef]si -> so[asc]si : JEF SOSI를 ASCII SOSI로변환한다. [-N] [-R] 마이그레이션과정에서데이터셋을카탈로그에등록하지않을경우지정한다. 데이터셋이이미카탈로그에등록된경우에 re-catalog 를위한옵션이다. 카탈로그에서대상데이터셋의등록정보를찾아, 해당볼륨으로데이터셋을 Import한다. UNIT, 볼륨정보는그대로유지하고, 그외기타 DCB 정보는새롭게갱신한다. 이옵션을지정하면 unit(-u) 이나 volume(-v) 파라미터는무시되며, 이옵션을지정하지않은경우 Import 대상데이터셋이이미카탈로그에등록되어있다면에러메시지를출력하고작업수행을중단한다. [-F] 대상데이터셋이카탈로그에이미등록되어있다면해당데이터셋을삭제하고, 다시데이터셋 Import 작업을수행하여카탈로그에등록한다. UNIT, 볼륨, 생성 일자등데이터셋의기존등록정보는모두새롭게갱신된다. 이옵션을지정하지않은경우적재대상데이터셋이이미카탈로그에이미등록 되어있다면에러메시지를출력하고작업수행을중단한다. [-D] [-V] EBCDIC 에서 ASCII 로의코드변환과마이그레이션디버깅결과를화면에출력 한다. dsmigin 의버전정보를화면에출력한다. 22 OpenFrame 툴참조안내서

사용예제 다음은 PDS 멤버를생성하는예이다. $ dsmigin OFR.DATA.PDSEXAM01.TXT OFR.DATA.PDSEXAM01 -m MEMBER1 다음은 SDS 를생성하는예이다. $ dsmigin OFR.DATA.SDSEXAM01.TXT OFR.DATA.SDSEXAM01 다음은 GDS 를생성하는예이다. $ dsmigin OFR.DATA.GDGEXAM01.TXT OFR.DATA.GDGEXAM01 -m +1 다음은스키마파일의간단한 sample 을보여주는예이다. <DSI.TESTDATA1.conv> ############################ # conversion scheme sample # ############################ * scheme L1, 01, O-RECORD, NULL, 0, 1, L2, 05, FIELD, EBC_ASC, 80, 1, * condition L0, "\0", ( L1 L2 ) ############################ 다음은 UNIX 파일을데이터셋으로적재하는예이다. $ dsmigin DSI.TESTDATA1.txt DSI.TESTDATA1 -s DSI.TESTDATA1.conv -l 80 -v 100000 -e KR 위의 dsmigin 를실행한결과는다음과같다. =====< DSMIGIN START >===== source file : DSI.TESTDATA1.txt dataset name: DSI.TESTDATA1 member name : unit: volume: 100000 schema file : DSI.TESTDATA1.conv encoding type: KR record length: 80 record format: F 제 3 장마이그레이션툴 23

dsorg: delimiter: DSMIGIN: (record count = 100) =====< DSMIGIN FINISH >==== 다음은 dsmigin 를실행한후데이터셋등록정보를확인하는예이다. $ tjesmgr psds DSI.TESTDATA1 위의 tjesmgr 를실행한결과는다음과같다. Data Set Name... : DSI.TESTDATA1 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : MCLAS001 Creation Date.. : 2009/01/16 Data Set Owner. : OpenFrame Expiration Date. : 9999/12/31 Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : PS Record Format.. : F KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 80 Current Allocation Primary Space.. : N.A. Number of Extents : N.A. Secondaty Space. : N.A. Data Set Size.. : 16700 Last Access Date Last Access Date : 2009/01/16 Last Access Time : 11:05:08 관련환경설정 다음과같이 ds.conf 파일에디폴트볼륨시리얼을지정한다. <ds.conf> [DATASET_DEFAULT] DEFAULT_VOLSER=default_volser 다음과같이 ds.conf 파일에디폴트스키마디렉터리를지정한다. 24 OpenFrame 툴참조안내서

<ds.conf> [DATASET_DIRECTORY] SCHEMA_DIR=default_schema_directory 다음과같이 ofsys.conf 파일에디폴트 COBOL 타입을지정한다. <ofsys.conf> [COMPILER] COBOL_COMPILER=default_cobol_type 참고 관련툴프로그램으로는 3.5. dsmigout 이있다. 3.5. dsmigout dsmigout은 ASCII 코드형태의 OpenFrarme 데이터셋을 EBCDIC 코드형태의 Mainframe 데이터셋으로변환하여 UNIX 파일로내보내는 (Export) 툴이다. 가변길이데이터셋을이출할때, 레코드길이를나타내기위하여각레코드마다 RDW(Record Descriptor Word) 를붙여준다. 또한, L 타입의데이터셋을이출할때는개행문자를 delimiter로사용하여각레코드를구분한다. 사용법 dsmigout 프로그램을실행하는방법은다음과같다. Usage: dsmigout dataset_name dest_file [options] 입력항목 항목 dataset_name dest_file 내보내려는데이터셋의이름을기술한다. 데이터셋은카탈로그에등록되어있어야한다. Output으로생성될파일이름을기술한다. [options] 옵션 [-X] OpenFrame 에 ASCII 문자로적재된파일을 EBCDIC 문자로변환하지않고내 보내는경우지정한다. 제 3 장마이그레이션툴 25

옵션 [-v] [-e encoding] 추출하려는데이터셋이위치한볼륨시리얼번호를지정한다. 만약, 지정한볼륨에데이터셋이존재하지않을경우에러메시지를출력하고프로그램을종료한다. ASCII에서 EBCDIC으로코드를변환할때 2Byte ASCII 문자를어떤 EBCDIC 문자코드로변환할지를지정한다. encoding 값에따른변환처리는다음과같다. - KR : 한국어 (EUC-KR) - US : 영어 - JP : 일본어 (Shift-JIS) - JAK : 일본어 (JEF) [-s scheme] OpenFrame 데이터셋의한레코드에여러 char-set이섞여있는경우에는 (EBCDIC, ASCII 코드가섞여있거나 2Byte 문자, Packed Decimal, Zoned Decimal 이사용된경우등 ) 레코드단위의단순코드변환이불가능하기때문에 cobgensch 또는 pligensch 프로그램을이용하여스키마파일을생성한다. 스키마파일이생성되면해당파일을지정한다. [-sp] SOSI 문자는레코드의 1Byte 문자필드에 2Byte 문자가혼합해서사용되는경 우 2Byte 문자를구분하기위해사용된다. dsmigin 툴에서 SOSI 를스페이스로변환했다면이옵션을사용하여다시스페 이스에서 SOSI 로변환할수있다. [-D] [-V] ASCII 에서 EBCDIC 으로의코드변환과마이그레이션디버깅결과를화면에출 력한다. dsmigout 의버전정보를화면에출력한다. 사용예제 다음은스키마파일의간단한예이다. <DSI.TESTDATA1.conv> ############################ # conversion scheme sample # ############################ 26 OpenFrame 툴참조안내서

* scheme L1, 01, O-RECORD, NULL, 0, 1, L2, 05, FIELD, EBC_ASC, 80, 1, * condition L0, "\0", ( L1 L2 ) ############################ 다음은 dsmigout 결과를보여주는예이다. $ dsmigout DSI.TESTDATA1 DSI.TESTDATA1.out -e KR -s DSI.TESTDATA1.conv 위의 dsmigout 을실행한결과는다음과같다. ==> 100 records exported. DSI.TESTDATA1 의레코드들이 EBC_ASC 변환방식에의해서바뀌어 DSI.TESTDATA1.out 으로출력된 다. 관련환경설정 다음과같이 ds.conf 파일에디폴트스키마디렉터리를지정한다. <ds.conf> [DATASET_DIRECTORY] SCHEMA_DIR=default_schema_directory 참고 관련툴프로그램으로는 3.4. dsmigin 이있다. 3.6. tplipp tplipp는 Mainframe에서사용하던 PL/I 프로그램소스를 OpenFrame에서동작할수있도록 PL/I 프로그램소스를수정하는툴이다. UNIX에서 Mainframe에서사용하던 PL/I 프로그램을실행하면파일에대한 I/O를할때데이터셋이아닌 UNIX 파일에 I/O를하기때문에 OpenFrame의데이터셋에 I/O를할수있도록수정이필요하다. 이외에도 UNIX에서지원하지않는오퍼레이터콘솔을제공하기위해 OpenFrame 콘솔서버를사용할수있도록수정하는기능, PL/I 기본 sort module 대신 external sort를이용하도록수정하는기능이있다. 다음은 tplipp 구조를한그림이다. 제 3 장마이그레이션툴 27

[ 그림 3.2] tplipp 구조 tplipp 에원본 PL/I 소스를입력하면수정된 PL/I 소스가나오고이를컴파일하면 OpenFrame 에서동작하 는 PL/I 바이너리가생성된다. 참고 기본적으로 AIX PL/I 이나 Open Liant PL/I 의컴파일러에서지원하지않는문법은 OpenFrame 에서 도지원하지않는다. 사용법 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][-extsort] 옵션 [-h] [-V] [-y] [-l] [-d] [-info] [-I dir] [-o file] [-fetch] [-s] [-f aix] [-f liant] [-u RC_STOP=n] tplipp에서사용가능한옵션에대한정보를보여준다. tplipp의버전정보를보여준다. parser에서생성된디버그메시지를보여준다. scanner에서생성된디버그메시지를보여준다. parser와 scanner를포함한모든생성된디버그메시지를보여준다. PL/I 소스내에서사용된파일정보를간략하게보여준다. PL/I의 include 파일들이존재하는위치를지정한다. 전처리결과를출력할파일명을지정한다. 모든 External Procedure를 Fetchable module로인식한다. C에서사용하기위해 PL/I을공유라이브러리로만들때이용한다. 입력으로받는 PL/I 소스가 AIX PL/I 일때지정한다. -f 옵션을주지않았을때의기본값으로사용한다. 입력으로받는 PL/I 소스가 Liant Open PL/I 일때지정한다. PL/I가동작할때 STOP 명령에의해프로그램이종료되는경우의반환값을지정한다. 28 OpenFrame 툴참조안내서

옵션 [-u RC_FILE=n] [-u RC_ERR=n] [-console] [-mfcobol] [-ims] [-extsort] PL/I가동작할때 FILE ERROR에의해프로그램이종료되는경우의반환값을지정한다. PL/I가동작할때 ERROR condition에의해프로그램이종료되는경우의반환값을지정한다. PL/I 소스내의 DISPLAY 문과 REPLY 명령이 OpenFrame에서제공하는콘솔서버를이용할때지정한다. PL/I에서 MF COBOL 프로시저를호출할때지정하는옵션이다. -fetch 옵션을지정한경우이옵션은무시된다. IMS를이용할때지정하는옵션이다. PLISRTA, PLISRTB, PLISRTC, PLISRTD 함수를 PL/I 기본 sort module 대신 External Sort 로이용하기위한옵션이다. 참고 PL/I 언어가아닌 COBOL 언어에대한유사한기능을하는전처리툴로 cobolprep 가있다. 3.7. hcob85c hcob85c는 OpenFrame 엔진이 Hitachi용 COBOL 프로그램을원활하게처리할수있도록프로그램소스를전처리하고이를 Shared Object로컴파일하는툴이다. Hitachi Mainframe에서사용하는 COBOL85와그확장기능 ( 일본어변수명사용등 ) 을원활하게지원하기위해 Hitachi의 UNIX용 COBOL 컴파일러인 COBOL2002를사용하도록개발되었다. 본장에서는 hcob85c의환경설정과사용법, 전처리대상항목등에대해한다. 사용법 hcob85c 를실행하는방법은다음과같다. Usage: hcob85c [options] filename [options] 옵션 [-h] [-v] [-d] 툴사용법을확인한다. hcob85c의버전을확인한다. 디버그모드로동작한다. 컴파일단계별로결과파일을저장한다. 결과파일에대한은전처리단계별결과파일 [32] 을참고한다. 제 3 장마이그레이션툴 29

입력항목 항목 filename 전처리할 COBOL 프로그램소스파일을지정한다. 확장자가.cob 인경우내부 적으로컴파일전에사용하므로오동작을방지하기위해사용할수없다. 사용예제 다음은 COBOL.TXT 파일을전처리하고컴파일하는예이다. $ hcob85c COBOL.TXT 결과물로는 COBOL.so 가생성된다. 관련환경설정 hcob85c 를사용하기위해서는다음의환경설정이필요하다. 참고 COBOL2002 에대한환경설정은 COBOL2002 의안내서를참고한다. <cobol.conf> [HCOB85] COMMAND=ccbl2002 OPTIONS=-Comp5 -Bin1Byte -CompatiV3 -Compati85,All -DynamicLink,Call -MainNotCBL -Pic,Std LINK=link_command [link_options] COPY_EXT=extension COPY_PATH=path [HCOB85] hcob85c 의정보를설정하는절이다. 항목 COMMAND OPTIONS COBOL 컴파일러의 Binary를지정하는항목으로, ccbl2002를지정한다. COBOL 컴파일러에설정할옵션을지정한다. 각옵션의은표다음내용을참고한다. 위의예제는필수옵션이므로수정하지않는것을권고한다. OPTIONS의수정은충분한검토가필요하며, 권고사항을변경할경우에는 COBOL의동작을보장할수없다. 단, 표다음의 OPTIONS에추가설정이가능하다고명시된옵션은사용자의판단에따라필요할경우추가할수있다. 30 OpenFrame 툴참조안내서

항목 LINK Shared Object로만들기위해 Link할때사용할명령어와옵션을입력한다. link_command -o shared_obj_name obj_name [link_options] 형태로실행된다. LINK에 COBOL2002의 libcbl2kml과 libcl2k을링크하기위한옵션은반드시주어져야한다. 예 ) LINK=ld -shared -L/opt/HILNGcbl2k/lib -lcbl2kml -lcbl2k COPY_EXT COPY_PATH Copybook의확장자를지정한다. 콤마 (,) 를구분자로하여복수로지정할수있다. Copybook의검색경로를지정한다. 세미콜론 (;) 을구분자로하여복수로지정할수있다. OPTIONS 다음은앞에서한항목중 OPTIONS에대한이다. 필수옵션다음은 cobol.conf 파일 [HCOB85] 절의 OPTIONS 항목에설정해야하는필수옵션이다. 항목 -Comp5 -Bin1Byte -CompatiV3 -Compati85,All -DynamicLink,Call -MainNotCBL -Pic,Std COMP5 타입을사용할수있도록하기위해지정한다. Binary 타입으로 1Byte 만할당할수도있게한다. VOS3 COBOL85와의호환을위해지정한다. COBOL85와의호환을위해지정한다. 호출대상프로그램이정적으로 Link되어있지않은경우, 동적 Link를하기위해설정한다. COBOL이아닌프로그램에서호출되는프로그램을컴파일할때지정한다. OpenFrame에서는 PGMRTS00이나 ADM 등에서 dlcall을통해호출하기때문에이옵션을설정해야한다. Shared Object로컴파일하기위해지정한다. 추가옵션 다음은 cobol.conf 파일 [HCOB85] 절의 OPTIONS 항목에추가로설정이가능한옵션이다. 항목 -SrcList 소스리스팅에관한옵션이다. COBOL2002 안내서를참고하여적합한파라 미터와함께설정한다. 제 3 장마이그레이션툴 31

항목 -Stdversion 사용하고있는 COBOL 상황에따라규격사양을지정한다. 지정하지않으면 JIS87, ISO85, ANSI85, ISO2002에따라처리한다. 처리규칙에대한은 COBOL2002 안내서를참고한다. 예제 다음은 cobol.conf 의예제이다. [HCOB85] COMMAND=ccbl2002 OPTIONS=-Comp5 -Bin1Byte -CompatiV3 -Compati85,All -DynamicLink,Call -MainNotCBL -Pic,Std LINK=ld -shared -L/opt/HILNGcbl2k/lib -lcbl2kml -lcbl2k COPY_EXT=cpy,TXT COPY_PATH=/home/Copybook1;/home/Copybook2 전처리단계별결과파일 hcob85c는전처리과정에서단계별로결과파일을생성한다. 보통종료할때삭제되지만, -d 옵션을이용하여디버그모드로구동할경우, 결과파일이삭제되지않고남게되어문제의원인을파악하는데도움을준다. 다음은원본파일이 COBOL.TXT라고가정하고한전처리단계별결과파일이다. 일반 파일 COBOL.cob COBOL.err COBOL.lst COBOL.so 전처리가완료된소스이다. 컴파일과정에서출력되는내용을저장하는파일이다. COBOL2002에서소스내용을출력하는리스트파일이다. ( 옵션설정에따라생성되지않을수있다.) COBOL.o를필요모듈들과함께 Link하여만든 Shared Object이다. 디버그용 파일 COBOL.copy COBOL.rplc COBOL.netcob COBOL.arng 입력소스에서 COPY 문을전처리한후의소스이다. COBOL.copy를입력으로하여 REPLACE문을전처리한후의소스이다. COBOL.rplc를입력으로하여기타모든전처리를수행한후의소스이다. COBOL.netcob를입력으로하여칼럼재조정등을수행한후의소스이다. 32 OpenFrame 툴참조안내서

파일 COBOL.log COBOL.o 전처리과정의메시지를저장한파일이다. 컴파일된 Object 이다. 전처리항목 hcob85c 는대부분의 COBOL 소스를그대로보존하지만, 몇몇항목에대해서는전처리가필요하다. 다음 은전처리되는항목과그내용에관한이다. 참고 각항목의사용법에대한자세한내용은 "VOS3 COBOL85 言語文法書 " 를참고한다. COPY 문 COPY 문은 COBOL 컴파일러의전처리명령으로외부에저장된소스 (Copybook) 를삽입하기위해사용한다. 원래는 COBOL 컴파일러에서처리되지만 Copybook 내의소스도전처리가필요한부분이있을수있기때문에 OpenFrame의전처리기에서원본소스에모두삽입하는처리를한다. 다음은 hcob85c에서지원하는 COPY 문의사용법이다. COPY Copybook [{OF IN} library] [SUPRESS] [PREFIXING prefix] [SUFFIXING suffix] [REPLACING {operand_1 BY operand_2}...] 항목 Copybook library 복사할 Copybook 이름을지정한다. 복사할 Copybook 이위치한라이브러리이름을지정한다. 지정하지않으면 SYSLIB 이지정된다. SUPRESS PREFIXING prefix 복사하는 Copybook 내용이 source listring 에출력되지않도록하는옵션이다. 복사하는 Copybook 내용중다음에해당하는 DATA DIVISION 의데이터명에 prefix 를접두사로추가한다. - 레벨번호직후의 FILLER 이외의데이터명 - REDEFINES 구직후의데이터명 ( 단, 01 레벨은제외한다.) - RENAMES 구직후의데이터명및그수식어 제 3 장마이그레이션툴 33

항목 - OCCURS 구의 INDEXED BY 지정의지표명 - KEY IS 지정의데이터명및그수식어 SUFFIXING suffix 복사하는 Copybook 내용중다음에해당하는 DATA DIVISION 의데이터명에 suffix 를접미사로추가한다. - 레벨번호직후의 FILLER 이외의데이터명 - REDEFINES 구직후의데이터명 ( 단, 01 레벨은제외한다.) - RENAMES 구직후의데이터명및그수식어 - OCCURS 구의 INDEXED BY 지정의지표명 - KEY IS 지정의데이터명및그수식어 REPLACING operand_1, operand_2 복사하는 Copybook 내용중 operand_1을 operand_2로치환한다. 다음은 REPLACING의오퍼랜드로지정할수있는항목이다. - pseudo-text : "==" 로둘러싸인문자열과 seperator의조합이다. ( 치환할때 "==" 는포함되지않는다.) - identifier - literal - COBOL 단어 : COPY 는사용할수없다. 다음은 COPY 문의예제이다. COBOL 소스가 Copybook PAYLIB 으로저장되어있는경우이다. 01 A. 02 B PIC S99. 02 C PIC S99. 02 A-HOURS PIC S99 OCCURS 1 TO 9 TIMES DEPENDING ON B OF A. 예제 1 다음은 COPY 문의 library 옵션을사용하는예제이다. COPY PAYLIB 34 OpenFrame 툴참조안내서

다음과같이원본 COBOL 소스와동일한소스가 COPY 된다. 01 A. 02 B PIC S99. 02 C PIC S99. 02 A-HOURS PIC S99 OCCURS 1 TO 9 TIMES DEPENDING ON B OF A. 예제 2 다음은 COPY 문의 library, REPLACING 옵션을사용하는예제이다. COPY PAYLIB REPLACING A BY PAYROLL B BY PAY-CODE. 다음과같이 A 는 PAYROLL 로, B 는 PAY-CODE 로치환된다. 01 PAYROLL. 02 PAY-CODE PIC S99. 02 C PIC S99. 02 A-HOURS PIC S99 OCCURS 1 TO 9 TIMES DEPENDING ON PAY-CODE OF PAYROLL. 예제 3 다음은 COPY 문의 REPLACING의오퍼랜드에 pseudo-text를사용하는예제이다. 예제 2에서 A-HOURS의 A는데이터명의부분이기에치환되지않는다. 부분치환을하기위해서는다음과같이 pseudo-text를이용한다. PAYLIB2가다음과같은경우를가정한다. 01 A. 02 B PIC S99. 02 C PIC S99. 02 :TAG:-HOURS PIC S99 OCCURS 1 TO 9 TIMES DEPENDING ON B OF A. 다음과같이 COPY 문을수행한다. COPY PAYLIB2 REPLACING ==:TAG:== BY ==PAY==. 결과는다음과같다. 01 A. 02 B PIC S99. 02 C PIC S99. 02 PAY-HOURS PIC S99 OCCURS 1 TO 9 TIMES DEPENDING ON B OF A. 제 3 장마이그레이션툴 35

모든데이터명에 PAY- 를일괄적으로붙이고싶을경우에는다음과같이 COPY 문을수행한다. COPY PAYLIB PREFIXING PAY-. 결과는다음과같다. 01 PAY-A. 02 PAY-B PIC S99. 02 PAY-C PIC S99. 02 PAY-A-HOURS PIC S99 OCCURS 1 TO 9 TIMES DEPENDING ON B OF A. DEPENDING 구는 PREFIXING이나 SUFFIXING의대상이아니기때문에변환되지않는다. REPLACE 문 REPLACE 문은 COBOL 컴파일러의전처리명령으로, COBOL 프로그램의일부분을치환하기위해사용한다. 원래는 COBOL 컴파일러에서처리되지만 REPLACE 문처리후의소스도전처리가필요한부분이있을수있기때문에 OpenFrame의전처리기에서원본소스의 REPLACE 문을처리한다. 소스전체의 COPY 문처리후에동작한다. REPLACE 문이나온부분부터다음 REPLACE 문의바로전까지가치환의대상이된다. REPLACE 문이나오지않으면소스의마지막까지치환한다. 다음은 hcob85c에서지원하는 REPLACE 문의사용법이다. REPLACE {{pseudo-text1 BY pseudo-test2}... OFF}. 항목 pseudo-test1 pseudo-test2 OFF "==" 로둘러싸인문자열과 seperator의조합이다. "==" 는치환할때포함되지않는다. 1개이상의텍스트워드를포함해야한다. "==" 로둘러싸인문자열과 seperator 의조합이다. "==" 는치환할때포함되지않는다. 0개이상의텍스트워드를포함해야한다. 현재작동중인 REPLACE 문의동작을중지시킨다. OPEN 문 OPEN 문은데이터셋을 OPEN하는문장이다. OS의파일이아닌 OpenFrame의데이터셋을 OPEN하기위해서는 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 OPEN 문의사용법이다. 36 OpenFrame 툴참조안내서

OPEN { INPUT {filename [{REVERSED {[WITH ]NO REWIND}]}... OUTPUT {filename [[WITH ]NO REWIND]}... I-O filename... EXTEND filename...} 전처리과정에서 OPEN 문은다음의 CALL 문으로변경된다. CALL 'acobfh_open' USING BY REFERENCE FILE-DESCRIPTOR-VARIABLE(fd) BY CONTENT 'ddname' BY VALUE ddname_len {BY REFERENCE fstat1 BY VALUE 0} {BY REFERENCE fstat2 BY VALUE 0} BY VALUE organization BY VALUE access_mode BY VALUE open_mode BY VALUE misc {BY REFERENCE rel_key BY VALUE 0} BY VALUE open_flags BY REFERENCE ret {BY REFERENCE record_name OF fdname BY VALUE 0} {BY REFERENCE depending BY VALUE 0} BY VALUE n_buf BY VALUE n_reckey BY VALUE n_altkey BY VALUE n_nomkey {BY VALUE LENGTH OF record_name OF fdname }... {BY VALUE reckey_comp_num BY VALUE {0 1} {BY REFERENCE reckey_name BY VALUE LENGTH OF reckey_name}...} {BY VALUE altkey_comp_num BY VALUE {0 1} {BY REFERENCE altkey_name BY VALUE LENGTH OF altkey_name}...} {BY VALUE nomkey_comp_num BY VALUE {0 1} {BY REFERENCE nomkey_name BY VALUE LENGTH OF nomkey_name}...} END-CALL 다음은 CALL 문의각항목에대한이다. 항목 fd ddname ddname_len fstat1 fstat2 organization OPEN하려는 FD에내부적으로할당한인덱스이다. OPEN하려는 FD에 assign된 DD의이름이다. ddname의길이이다. FD의 FILE STATUS 구문에 1번째로주어진데이터명이다. 주어지지않았다면 BY VALUE 0로 NULL이전달된다. FD의 FILE STATUS 구문에두번째로주어진데이터명이다. 주어지지않았다면 BY VALUE 0로 NULL이전달된다. SELECT 문에주어진 ORGANIZATION 구에해당하는값이전달된다. 제 3 장마이그레이션툴 37

항목 access_mode open_mode misc rel_key open_flags ret record_name fdname depending n_buf n_reckey n_altkey n_nomkey reckey_comp_num reckey_name altkey_comp_num altkey_name nomkey_comp_num nomkey_name SELECT 문에주어진 ACCESS구에해당하는값이전달된다. OPEN 문의 INPUT, OUTPUT, I-O, EXTEND에해당하는값이전달된다. SELECT 문에 OPTIONAL 지정여부가전달된다. SELECT 문에 RELATIVE KEY 구가지정된경우, 설정된데이터명이전달된다. 주어지지않았다면 BY VALUE 0로 NULL이전달된다. OPEN 문에지정된 REVERSED나 NO REWIND 등에해당하는값이전달된다. acobfh_open의결과를돌려받을변수를지정한다. FD에연결된 record buffer 이름이전달된다. 주어지지않았다면 BY VALUE 0로 NULL이전달된다. FD 이름을지정한다. FD의 DEPENDING ON구에지정된데이터명이전달된다. 주어지지않았다면 BY VALUE 0로 NULL이전달된다. record buffer의수를지정한다. RECORD KEY의지정여부를전달한다. ALTERNATE RECORD KEY의지정여부가전달된다. NOMINAL KEY의지정여부가전달된다. RECORD KEY의수가전달된다. RECORD KEY의이름이전달된다. ALTERNATE RECORD KEY의수가전달된다. ALTERNATE RECORD KEY의이름이전달된다. NOMINAL KEY의수가전달된다. NOMINAL KEY의이름이전달된다. READ 문 READ 문은데이터셋에서레코드를읽는문장이다. OS의파일이아닌 OpenFrame의데이터셋을읽기위해서는 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 READ 문의사용법이다. - Format 1: sequential 파일 READ 시 READ file-name [NEXT] [RECORD] [INTO identifier] [[AT ]END impertive-statement1] [NOT [AT ]END impertive-statement2] [END-READ] - FORMAT 2: random access 파일 READ 시 38 OpenFrame 툴참조안내서

READ file-name [RECORD] [INTO identifier] [KEY [IS ]keyname] [INVALID [KEY ]impertive-statement3] [NOT INVALID [KEY ]impertive-statement4] [END-READ] 전처리과정에서 READ 문은다음의 CALL 문으로변경된다. CALL 'acobfh_read' USING BY REFERENCE FILE-DESCRIPTOR-VAR(fd) {BY REFEFENCE into-identifier BY VALUE LENGTH OF into-identifier BY VALYE 0 BY VALUE 0} # INTO 가있으면전자 BY VALUE read_flags BY REFERENCE FILE-STATUS-VAR(fd) BY VALUE reckey_num {BY REFERENCE reckey BY VALUE LENGTH of reckey}... # reckey_num 만큼반복 END-CALL # AT END 존재시추가 IF FILE-STATUS-VAR(fd) = 'CC' THEN imperative-statement1 END-IF # NOT AT END 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'CC' THEN imperative-statement2 END-IF # INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) = 'AA' THEN imperative-statement3 END-IF # NOT INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'AA' THEN imperative-statement4 END-IF 항목 fd into-identifier read_flags reckey_num reckey READ하려는파일에내부적으로할당한인덱스이다. INTO 구에주어진 identifer이다. NEXT 구의지정여부가전달된다. record key의개수가전달된다. record key의 dataname이다. 제 3 장마이그레이션툴 39

REWRITE 문 REWRITE 문은직접 Access가가능한데이터셋에서레코드를변경하는문장이다. I-O 모드로 OPEN되어야만 REWRITE할수있다. OS의파일이아닌 OpenFrame의데이터셋을변경하기위해서는 OpenFrame 에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 REWRITE 문의사용법이다. REWRITE record-name [FROM from-identifier] [INVALID [KEY ]impertive-statement1] [NOT INVALID [KEY ]impertive-statement2] [END-REWRITE] 전처리과정에서 REWRITE 문은다음의 CALL 문으로변경된다. # FROM구존재시만하기내용추가 CALL 'cmove' USING BY REFERENCE from-identifier BY VALUE LENGTH OF from-identifier BY REFERENCE record-name BY VALUE LENGTH OF record-name END-CALL # FROM 구관련처리종료 CALL 'acobfh_rewrite' USING BY REFERENCE FILE-DESCRIPTOR-VAR(fd) BY REFEFENCE record-name BY VALUE LENGTH OF record-name BY VALUE rewrite_flags BY REFERENCE FILE-STATUS-VAR(fd) END-CALL # INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) = 'AA' THEN imperative-statement1 END-IF # NOT INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'AA' THEN imperative-statement2 END-IF 항목 fd from-identifier record-name rewrite_flags REWRITE하려는 FD에내부적으로할당한인덱스이다. FROM 구에주어진 identifer이다. REWRITE 대상레코드에갱신할내용이저장된변수이거나상수이다. REWRITE 문의주어진값그대로전달된다. 정해진기본값이전달되므로특별한의미는없다. 40 OpenFrame 툴참조안내서

WRITE 문 WRITE 문은데이터셋에레코드를기록하는문장이다. OUTPUT 또는 I-O 모드로 OPEN되어야만 WRITE 할수있다. OS의파일이아닌 OpenFrame의데이터셋을변경하기위해서는 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 WRITE 문의사용법이다. WRITE record-name [FROM from-identifier] { [ {BEFORE AFTER} [ADVANCING] { {line-identifier integer } [{LINE LINES} ] memonic-name PAGE } ] phrase-1 [ invalid-key ] [ not-invalid-key ] } [END-WRITE] phrase-1: [ [AT] { END-OF-PAGE EOP } imperative-statement1 ] [ NOT [AT] { END-OF-PAGE EOP } imperative-statement2 ] invalid-key : [INVALID [KEY ]impertive-statement3] not-invalid-key : [NOT INVALID [KEY ]impertive-statement4] [END-REWRITE] 전처리과정에서 WRITE 문은다음의 CALL 문으로변경된다. # FROM구존재시만하기내용추가 CALL 'cmove' USING BY REFERENCE from-identifier BY VALUE LENGTH OF from-identifier BY REFERENCE record-name BY VALUE LENGTH OF record-name END-CALL # FROM 구관련처리종료 CALL 'acobfh_write' USING BY REFERENCE FILE-DESCRIPTOR-VAR(fd) BY REFEFENCE record-name BY VALUE LENGTH OF record-name BY VALUE line_count_str BY VALUE line_cont_num # about BEFORE/AFTER ADVANCING BY VALUE write_flags BY REFERENCE FILE-STATUS-VAR(fd) END-CALL # AT END-OF-PAGE 존재시추가 IF FILE-STATUS-VAR(fd) = 'EE' THEN imperative-statement1 END-IF 제 3 장마이그레이션툴 41

# NOT AT END-OF-PAGE 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'EE' THEN imperative-statement2 END-IF # INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) = 'AA' THEN imperative-statement3 END-IF # NOT INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'AA' THEN imperative-statement4 END-IF 항목 fd from-identifier record-name line_count_str line_count_num write_flags WRITE하려는 FD에내부적으로할당한인덱스이다. FROM 구에주어진 identifer이다. WRITE 대상레코드에갱신할내용이저장된변수이거나상수이다. WRITE 문의주어진값그대로전달된다. BEFORE/AFTER ADVACING에주어진 line-identifier나 mnemonic-name, PAGE 등을전달하기위해사용된다. mnemonic-name의경우 ENVIRONMENT DIVISION에 SPECIAL-NAME구로지정된값이있다면이로치환하여전달한다. BEFORE/AFTER ADVACING에주어진 integer값을전달하기위해사용한다. BEFORE/AFTER 구의지정에따라적절한 flag를설정하여전달한다. START 문 START 문은 indexed나 relative 데이터셋에서연속적으로레코드를읽기위해특정레코드위치로이동하는문장이다. OS의파일이아닌 OpenFrame의데이터셋에접근하기위해서는 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 START 문의사용법이다. START file-name [KEY [IS] { { EQUAL [TO] = } { GREATER [THAN] > } { NOT LESS THAN NOT < } { GREATER [THAN] OR EQUAL [TO] >= } } data-name] [INVALID [KEY ]impertive-statement1] 42 OpenFrame 툴참조안내서

[END-START] [NOT INVALID [KEY ]impertive-statement2] 전처리과정에서 START 문은다음의 CALL 문으로변경된다. CALL 'acobfh_start' USING BY REFERENCE FILE-DESCRIPTOR-VAR(fd) BY VALUE start_flags BY REFERENCE FILE-STATUS-VAR(fd) BY VALUE 1 BY REFERENCE data-name BY VALUE LENGTH OF data-name END-CALL # INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) = 'AA' THEN imperative-statement1 END-IF # NOT INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'AA' THEN imperative-statement2 END-IF 항목 fd data-name start_flags START하려는 FD에내부적으로할당한인덱스이다. RECORD의키와비교할값이저장된변수이다. 키의비교조건을전달한다. DELETE 문 DELETE 문은 indexed나 relative 데이터셋에서 1개레코드를삭제하기위해사용한다. 레코드의 KEY값은 FD와연결된 record buffer에저장되어있어야한다. OS의파일이아닌 OpenFrame의데이터셋에접근하기위해서는 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 DELETE 문의사용법이다. DELETE file-name [RECORD] [INVALID [KEY ]impertive-statement1] [NOT INVALID [KEY ]impertive-statement2] [END-DELETE] 전처리과정에서 DELETE 문은다음의 CALL 문으로변경된다. record buffer는 acobfh_open을통해이미전달되어있다. CALL 'acobfh_delete' USING BY REFERENCE FILE-DESCRIPTOR-VAR(fd) BY VALUE delete_flags 제 3 장마이그레이션툴 43

BY REFERENCE FILE-STATUS-VAR(fd) END-CALL # INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) = 'AA' THEN imperative-statement1 END-IF # NOT INVALID KEY 존재시추가 IF FILE-STATUS-VAR(fd) NOT = 'AA' THEN imperative-statement2 END-IF 항목 fd delete_flags DELETE 하려는 FD 에내부적으로할당한인덱스이다. 정해진기본값이전달되므로특별한의미는없다. CLOSE 문 CLOSE 문은데이터셋을닫기위해사용한다. OS의파일이아닌 OpenFrame의데이터셋에접근하기위해서는 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 CLOSE 문의사용법이다. CLOSE file-name [ { { RELL UNIT } [ { [FOR] REMOVAL ] WITH NO REWIND } ] [WITH] { LOCK NO REWIND } ] 전처리과정에서 CLOSE 문은다음의 CALL 문으로변경된다. CALL 'acobfh_close' USING BY REFERENCE FILE-DESCRIPTOR-VAR(fd) BY VALUE close_flags BY REFERENCE FILE-STATUS-VAR(fd) END-CALL 항목 fd close_flags CLOSE 하려는 FD 에내부적으로할당한인덱스이다. CLOSE 의옵션이전달된다. SORT 문 SORT 문은 1개이상의데이터셋의레코드를정렬하기위해사용한다. OpenFrame의데이터셋에접근하고 OpenFrame에서제공하는 SORT 엔진을사용하기위해서는적절한전처리과정이필요하다. 다음은 hcob85c에서지원하는 SORT 문의사용법이다. 44 OpenFrame 툴참조안내서

참고 사용법에대한자세한내용은 "VOS3 COBOL85 言語文法書 " 를참고한다. SORT sd-filename [ON] { ASECNEDING DESCENDING } [KEY] {key-name}... [ [WITH] DUPLICATES [IN] [ORDER] ] [ [COLLATING] SEQUENCE [IS] colseq ] { USING {using-filename}... INPUT PROCEDURE [IS] procedure-name1 [ {THROUGH THRU} procedure-name2 ] } { GIVING {giving-filename}... OUTPUT PROCEDURE [IS] procedure-name3 [ {THROUGH THRU} procedure-name4 ] } 전처리과정에서 SORT 문은다음의 CALL 문으로변경된다. CALL 'aextsm_setup' USING BY VALUE 1 { BY REFERENCE record-name OF sd-filename BY VALUE 0 } # SD 에 record buffer 가주어졌을때는전자, 없으면후자 BY VALUE with_duplicate { BY CONTENT 'col_seq' BY VALUE col_seq_len BY VALUE 0 BY VALUE 0 } # SEQUENCE 가있으면전자, 없으면후자 BY REFERENCE SORT-CORE-SIZE-VAR BY REFRENCE SORT-STATUS-VAR BY VALUE key-num BY VAULE using-dd-num BY VALUE giving-dd-num BY VALUE rec-num # 아래는 key-num 만큼반복 { BY REFERENCE key-name BY VALUE LENGTH OF key-name BY CONTENT 'key-format' BY VALUE sort-order }... # 아래는 using-dd-num 만큼반복 { BY CONTENT 'using-filename' BY VALUE using-filename-len }... # 아래는 giving-dd-num 만큼반복 { BY CONTENT 'giving-filename' BY VALUE giving-filename-len }... # 아래는 rec-num 만큼반복 {BY VALUE LENGTH OF record-name OF sd-filename }... END-CALL # aextsm_setup 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # 입력레코드전달 # input procedure 가주어졌을때 제 3 장마이그레이션툴 45

PERFORM input-proc # input procedure 가주어지지않고 USING DD 가주어졌을때 CALL 'aextsm_put' USING BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_put 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # SORT 실행 CALL 'aextsm_run' USING BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_run 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # 출력레코드반환 # output procedure 가주여졌을때 PERFORM output-proc # output procedure 가주어지지않고, GIVING DD 가주어졌을때 CALL 'aextsm_get' USING BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_get 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # SORT 종료 CALL 'aextsm_end' END-CALL # aextsm_end 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF 항목 record-name sd-filename with-duplicate colseq colseq-len sd-filename과연결된 record buffer의이름을지정한다. SD 문으로선언된 SORT 식별자를지정한다. WITH DUPLICATE 구지정여부를전달하여 stable SORT 여부를결정한다. 정렬순서를지정한다. COLLATING SEQUENCE 문에주어진이름을지정한다. colseq로주어지는이름의길이를지정한다. 46 OpenFrame 툴참조안내서

항목 key-num using-dd-num giving-dd-num rec-num key-name key-format sort-order using-filename using-filename-len giving-filename giving-filename-len SORT의정렬키의수를지정한다. USING으로주어진입력 DD의수를지정한다. GIVING으로주어진출력 DD의수를지정한다. SORT 문과연결된 SD 문의 record buffer 수를지정한다. 정렬키의이름을지정한다. 정렬키의형식을지정한다. 정렬키별오름차순, 내림차순을지정한다. 입력데이터셋의 FD 이름을지정한다. 입력데이터셋의 FD 이름의길이를지정한다. 출력데이터셋의 FD 이름을지정한다. 출력데이터셋의 FD 이름의길이를지정한다. MERGE 문 MERGE 문은 2개이상의데이터셋의레코드를 MERGE하기위해사용한다. OpenFrame의데이터셋에접근하고 OpenFrame에서제공하는 MERGE 엔진을사용하기위해서는적절한전처리과정이필요하다. 다음은 hcob85c에서지원하는 MERGE 문의사용법이다. MERGE sd-filename [ON] { ASECNEDING DESCENDING } [KEY] {key-name}... [ [COLLATING] SEQUENCE [IS] alphabet-name ] { USING {using-filename}... INPUT PROCEDURE [IS] procedure-name1 [ {THROUGH THRU} procedure-name2 ] } { GIVING {giving-filename}... OUTPUT PROCEDURE [IS] procedure-name3 [ {THROUGH THRU} procedure-name4 ] } 전처리과정에서 MERGE 문은다음의 CALL 문으로변경된다. CALL 'aextsm_setup' USING BY VALUE 1 { BY REFERENCE record-name OF sd-filename BY VALUE 0 } # SD 에 record buffer 가주어졌을때는전자, 없으면후자 BY VALUE with_duplicate { BY CONTENT 'col_seq' BY VALUE col_seq_len BY VALUE 0 BY VALUE 0 } # SEQUENCE 가있으면전자, 없으면후자 BY REFERENCE SORT-CORE-SIZE-VAR BY REFRENCE SORT-STATUS-VAR BY VALUE key-num BY VAULE using-dd-num 제 3 장마이그레이션툴 47

BY VALUE giving-dd-num BY VALUE rec-num # 아래는 key-num 만큼반복 { BY REFERENCE key-name BY VALUE LENGTH OF key-name BY CONTENT 'key-format' BY VALUE sort-order }... # 아래는 using-dd-num 만큼반복 { BY CONTENT 'using-filename' BY VALUE using-filename-len }... # 아래는 giving-dd-num 만큼반복 { BY CONTENT 'giving-filename' BY VALUE giving-filename-len }... # 아래는 rec-num 만큼반복 {BY VALUE LENGTH OF record-name OF sd-filename }... END-CALL # aextsm_setup 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # 입력레코드전달 # input procedure 가주어졌을때 PERFORM input-proc # input procedure 가주어지지않고 USING DD 가주어졌을때 CALL 'aextsm_put' USING BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_put 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # SORT 실행 CALL 'aextsm_run' USING BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_run 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # 출력레코드반환 # output procedure 가주여졌을때 PERFORM output-proc # output procedure 가주어지지않고, GIVING DD 가주어졌을때 CALL 'aextsm_get' USING BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_get 의에러체크 IF SORT-STATUS-VAR = 16 48 OpenFrame 툴참조안내서

GOBACK. ENDIF # SORT 종료 CALL 'aextsm_end' END-CALL # aextsm_end 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF 항목 record-name sd-filename with-duplicate colseq colseq-len key-num using-dd-num giving-dd-num rec-num key-name key-format sort-order using-filename using-filename-len giving-filename giving-filename-len sd-filename과연결된 record buffer의이름을지정한다. SD 문으로선언된 MERGE 식별자를지정한다. WITH DUPLICATE 구지정여부를전달하여 stable MERGE 여부를결정한다. MERGE 순서를지정한다. COLLATING SEQUENCE 문에주어진이름을지정한다. colseq로주어지는이름의길이를지정한다. MERGE의키의수를지정한다. USING으로주어진입력 DD 수를지정한다. GIVING으로주어진출력 DD 수를지정한다. MERGE 문과연결된 SD 문의 record buffer 수를지정한다. MERGE 키의이름을지정한다. MERGE 키의형식을지정한다. MERGE 키별오름차순, 내림차순을지정한다. 입력데이터셋의 FD 이름을지정한다. 입력데이터셋의 FD 이름의길이를지정한다. 출력데이터셋의 FD 이름을지정한다. 출력데이터셋의 FD 이름의길이를지정한다. RELEASE 문 RELEASE 문은주어진 record를 SORT의입력레코드로전달하기위해사용한다. OpenFrame의 SORT 에접근하기위해서 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 RELEASE 문의사용법이다. RELEASE record-name FROM from-identifier 전처리과정에서 RELASE 문은다음의 CALL 문으로변경된다. 제 3 장마이그레이션툴 49

# from 구존재시 MOVE from-identifier TO record-name. # 통상 CALL 'aextsm_release' USING BY REFERENCE record-name BY VALUE LENGTH OF record-name BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_release 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF 항목 from-identifer record-name FROM 구에주어진변수또는상수를지정한다. SORT 에전달할 record 변수이름을지정한다. RETURN 문 RETURN 문은 SORT/MERGE의결과를레코드단위로반환하기위해사용한다. OpenFrame의 SORT, MERGE에접근하기위해서 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 RETURN 문의사용법이다. RETURN sd-file-name [RECORD] [INTO into-identifier] [ [AT] END imperative-statement1 ] [ NOT [AT] END imperative-statement2 ] END-RETURN 전처리과정에서 RETURN 문은다음의 CALL 문으로변경된다. CALL 'aextsm_return' USING BY REFERENCE record-name OF sd-file-name BY REFERENCE RETURN-CODE-VAR BY REFERENCE SORT-STATUS-VAR END-CALL # aextsm_release 의에러체크 IF SORT-STATUS-VAR = 16 GOBACK. ENDIF # AT END 구존재시 IF RETURN-CODE-VAR = 1 THEN imperative-statement1 END-IF 50 OpenFrame 툴참조안내서

# NOT AT END 구존재시 IF RETURN-CODE-VAR NOT = 1 THEN # INTO 문존재시반환된레코드이동 IF SORT-STATUS-VAR = ZERO THEN MOVE record-name OF sd-file-name TO into-identifier END-IF imperative-statement2 END-IF 항목 record-name sd-file-name into-identifier sd-file-name으로주어진 SD의레코드영역이름을지정한다. SORT/MERGE에사용된 SD 이름을지정한다. 반환된 RECORD가추가로저장될변수를지정한다. ACCEPT 문 ACCEPT 문은데이터나시스템날짜관련정보등을주어진변수로전송하기위해사용한다. 이중에서는콘솔로부터전송되는데이터도있는데, OpenFrame의콘솔시스템과연계하기위하여 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 ACCEPT 문의사용법이다. # 데이터전송 ACCEPT identifier [FROM source] # 날짜관련 ACCEPT identifier FROM { DATE DAY DAY-OF-WEEK TIME } source가 CONSOLE인경우전처리과정에서 ACCEPT 문은다음의 CALL 문으로변경된다. 이외의경우는변경되지않는다. CALL 'console_accept_cob' USING identifier BY VALUE LENGTH OF identifier END-CALL 항목 identifier ACCEPT 문을수행한후데이터가저장될변수이다. 제 3 장마이그레이션툴 51

DISPLAY 문데이터를하드웨어장치에표시하기위해사용한다. 대상장치가콘솔인경우, OpenFrame의콘솔시스템과연계하기위하여 OpenFrame에서제공하는라이브러리를 CALL하도록변경해야한다. 다음은 hcob85c에서지원하는 DISPLAY 문의사용법이다. DISPLAY {identifier literal}... [UPON target] [WITH NO ADVANCING] target 이 CONSOLE 인경우전처리과정에서 DISPLAY 문은다음의 CALL 문으로변경된다. 이외의경우 는변경되지않는다. CALL 'console_display_cob' USING BY VALUE num_object { BY REFERENCE identifier BY VALUE LENGTH OF identifier BY CONTENT string_literal BY VALUE LENGTH OF string_literal BY REFERENCE other_literal BY VALUE LENGTH OF other_literal }... # num_object 만큼반복 END-CALL 항목 num_object identifier string_literal other_literal DISPLAY 문에주어진 identifier나 literal의총수이다. DISPLAY 문에주어진 identifier이다. DISPLAY 문에주어진 literal 중작은따옴표 (') 나큰따옴표 (") 로둘러싸인경우이다. DISPLAY 문에주어진 literal 중 string_literal을제외한경우이다. STOP 문 STOP 문은프로그램의실행을한시적으로또는확정적으로중지시키기위해사용한다. RUN이아닌 literal 이사용된경우, 콘솔과연계할필요성이있기때문에수정이필요하다. 다음은 hcob85c에서지원하는 STOP 문의사용법이다. STOP { RUN literal } 전처리과정에서 STOP 문은다음의 CALL 문으로변경된다. #STOP RUN 의경우 GOBACK #STOP literal 의경우 # CONSOLE 에 literal 표시 CALL 'console_display_cob' USING BY VALUE 1 { BY CONTENT string_literal BY VALUE LENGTH OF string_literal BY REFERENCE other_literal BY VALUE LENGTH OF other_literal } END-CALL # 응답받을변수초기화 52 OpenFrame 툴참조안내서

INITIALIZE xxx # operator 응답대기 CALL 'console_accept_cob' USING BY REFERENCE xxx BY VALUE LENGTH OF xxx END-CALL # 응답확인및분기 IF xxx = 'CANCEL' GOBACK ELSE CONTINUE END-IF 항목 fd close_flags STOP 하려는 FD 에내부적으로할당한인덱스이다. CLOSE 의옵션이전달된다. CALL 'CBLTDA' 문 CALL 'CBLTDA' 문은 COBOL에서 ADM의기능을사용할수있도록한다. OpenFrame의 ADM과의호환성을위해몇가지파라미터가추가되어야한다. CALL 'CBLTDA' 는가변파라미터를사용한다. C 함수에서가변파라미터를받기위해서처음파라미터로파라미터의수를넘기도록추가한다. CALL 'CBLTDA' 의 1 번째파라미터가 GU 또는 GHU 를포함하고있다면 CBLTDA 의마지막파라미터 로 3 번째파라미터로주어진변수의크기를전달한다. 다음은 CBLTDA 를 CALL 하는예제이다. CALL 'CBLTDA' USING BY REFERENCE DLI-GU IO-PCB-MASK INPUT-MESSAGE-IO-AREA. 전처리과정에서위의문장은다음과같이변환된다. CALL 'CBLTDA' USING BY CONTENT 3 BY REFERENCE DLI-GU IO-PCB-MASK INPUT-MESSAGE-IO-AREA BY CONTENT LENGTH OF INPUT-MESSAGE-IO-AREA. 제 3 장마이그레이션툴 53

일본어 literal 다음은 VOS3 의 COBOL85 에서는지원되는일본어 literal 타입이다. literal NC NN NA NK NH NX 일본어직접정수이다. 가명한자정수이다. KEIS 정수이다. 가타카나정수이다. 히라가나정수이다. 16진한자정수이다. Hitachi 의 COBOL2002 에서는지원되는일본어 literal 타입은 NC, ND, NX 이다. 지원하는 literal 타입이 1:1 대응되지않기때문에, 현재는 NC 와 NX 만 Mapping 하고, 나머지는 NC 로변경 하고있다. 54 OpenFrame 툴참조안내서

제 4 장데이터셋관리툴 4.1. dsview dsview 는데이터셋의내용을보여주는툴이다. 사용법 dsview 프로그램을실행하는방법은다음과같다. Usage: dsview [-s] dataset_name [member_name] [-v volume_serial] [-c user_catalog] 항목 [-s] 시스템데이터셋의내용을조회할때사용하는옵션이다. ds.conf 파일의 [SYS1_CLIENT] 절과 [TSAM_CLIENT] 절의접속계정이같은 경우에는옵션에상관없이시스템데이터셋의내용을볼수있다. dataset_name [member_name] [-v volume_serial] [-c user_catalog] 조회할데이터셋의이름을지정한다. 조회할데이터셋의멤버이름을지정한다. 조회할데이터셋의볼륨시리얼을지정한다. 보고자하는데이터셋이카탈로그에등록되어있지않은경우이옵션을설정하여지정한볼륨디렉터리에존재하는데이터셋을볼수있다. 조회할데이터셋이사용자카탈로그에등록되어있는경우이옵션을설정한다. 단, 사용자카탈로그에 alias가설정되어있어서데이터셋이름만으로찾을수있는경우에는이옵션을지정하지않아도된다. 자세한내용은 데이터셋안내서 의 제4장통합카탈로그의카탈로그관리 를참고한다. dsview 에서사용할수있는명령어는다음과같다. 항목 <CTRL>+b <CTRL>+f ^ 이전페이지로이동한다. 다음페이지로이동한다. 현재행의첫문자로이동한다. 제 4 장데이터셋관리툴 55

항목 $ 125G :125 G h,j,k,l 현재행의마지막문자로이동한다. 125 라인으로이동한다. 125 라인으로이동한다. 마지막행으로이동한다. 왼쪽, 위쪽, 아래쪽, 오른쪽으로이동한다. 숫자를앞에붙이면숫자만큼이동한다. 예 ) 5h - 5 칸왼쪽으로이동한다. /abc /abc 5 //616263 n <CTRL>+l :h :q abc를검색한다. 5행에서 abc를검색한다. Hexa code로검색한다. 다음내용을검색한다. 화면을새로고침한다. 도움말을보여준다. 종료한다. 사용예제 다음은시스템데이터셋의내용을보여주는예이다. $ dsview -s SYS1.JOBQ 다음은데이터셋에속한멤버의내용을보여주는예이다. $ dsview AAA.PDS TESTPGM 다음은지정한볼륨에위치한데이터셋의내용을보여주는예이다. $ dsview AAA.BBB -v DEFVOL 다음은사용자카탈로그에등록되어있는데이터셋의내용을보여주는예이다. $ dsview AAA.BBB -c USERCAT 56 OpenFrame 툴참조안내서

관련환경설정 다음은카탈로그에등록되어있지않은 Non-VSAM 데이터셋의내용을보기위한설정이다. <dstool.conf> [DSVIEW] NOCATALOG_VIEW=[YES NO] 항목 YES NO 카탈로그에등록되어있지않은데이터셋이라도디폴트볼륨에있는 Non-VSAM 데이터셋의내용을볼수있다. 카탈로그에등록되어있지않은데이터셋의내용은볼수없다. 참고 데이터셋에대한자세한내용은 OpenFrame 안내서중 데이터셋안내서 를참고한다. 4.2. dsedit dsedit은 dsview에서좀더발전된형태로데이터셋의내용을보여주고데이터셋의내용을변경하도록해주는툴이다. dsedit는데이터셋의내용을조회하는 dsview에서데이터셋내용을변경할수있는기능이추가된툴이다. 데이터셋의레코드추가나삭제는불가능하며기존레코드의변경만가능하다. 데이터셋변경작업중에는해당데이터셋에독점적 (Exclusive) 인잠금 (Lock) 을실행시킨다. 단, VSAM 데이터셋에대한변경은할수없다. 시용법 dsedit 프로그램을실행하는방법은다음과같다. Usage: dsedit [-s] dataset_name [member_name] [-v volume_serail] [-c user_catalog] 항목 [-s] 시스템데이터셋의내용을변경할때사용하는옵션이다. 설정파일중 ds.conf 파일의 [SYS1_CLIENT] 절과 [TSAM_CLIENT] 절의접속 계정이같은경우에는옵션에상관없이시스템데이터셋의내용을볼수있다. dataset_name [member_name] 변경할데이터셋의이름이다. 변경할데이터셋의멤버이름이다. 제 4 장데이터셋관리툴 57

항목 [-v volume_serial] [-c user_catalog] 변경할데이터셋의볼륨시리얼을지정한다. 변경할데이터셋이카탈로그에등록되어있지않은경우이옵션을설정하여지정한볼륨디렉터리에존재하는데이터셋을찾아올수있다. 변경할데이터셋이사용자카탈로그에등록되어있는경우이옵션을설정한다. 단, 사용자카탈로그에 alias가설정되어있어서데이터셋이름만으로찾을수있는경우에는이옵션을지정하지않아도된다. 자세한내용은 데이터셋안내서 의 제4장통합카탈로그의카탈로그관리 를참고한다. dsedit 에서사용할수있는명령어는다음과같다. 항목 <CTRL>+b <CTRL>+f ^ $ 125G :125 G h,j,k,l 이전페이지로이동한다. 다음페이지로이동한다. 현재행의첫문자로이동한다. 현재행의마지막문자로이동한다. 125 라인으로이동한다. 125 라인으로이동한다. 마지막행으로이동한다. 왼쪽, 위쪽, 아래쪽, 오른쪽으로이동한다. 숫자를앞에붙이면숫자만큼이동한다. 예 ) 5h - 5 칸왼쪽으로이동한다. /abc /abc 5 //616263 n R ESC Backspace <CTRL>+l :h :q abc를검색한다. 5행에서 abc를검색한다. Hexa code로검색한다. 다음내용을검색한다. Replace 모드의시작이다. VSAM의 key는변경할수없다. Replace한내용을저장한다. Replace 모드중에변경내용을되돌린다. 화면을새로고침한다. 도움말을보여준다. 종료한다. 58 OpenFrame 툴참조안내서

사용예제 다음은시스템데이터셋의내용을보여주는예이다. $ dsedit -s SYS1.JOBQ 다음은데이터셋에속한멤버의내용을보여주는예이다. $ dsedit AAA.PDS TESTPGM 다음은지정한볼륨에위치한데이터셋의내용을보여주는예이다. $ dsedit AAA.BBB -v DEFVOL 다음은사용자카탈로그에등록되어있는데이터셋을보고자할경우에대한예이다. $ dsedit AAA.BBB -c USERCAT 관련환경설정 카탈로그에등록되어있지않은 Non-VSAM 데이터셋의내용을보기위한설정이다. <dstool.conf> [DSVIEW] NOCATALOG_VIEW=[YES NO] 항목 YES NO 카탈로그에등록되어있지않은데이터셋이라도디폴트볼륨에있는 Non-VSAM 데이터셋의내용을볼수있다. 카탈로그에등록되어있지않은데이터셋의내용은볼수없다. 참고 데이터셋에대한자세한내용은 OpenFrame 안내서중 데이터셋안내서 를참고한다. 제 4 장데이터셋관리툴 59

4.3. dsload dsload는 dsedit의기능을보완하기위한툴로서 Non-VSAM 데이터셋을 UNIX 파일로백업하는기능을제공하는툴이다. 백업한파일을내용을수정한후, dssave 툴을사용하면편집된파일을다시 Non-VSAM 데이터셋으로갱신할수있다. 사용법 dsload 프로그램을실행하는방법은다음과같다. Usage: dsload dsname [options] 입력항목 항목 dsname 백업하려고하는데이터셋의이름이다. [options] 옵션 [-c catalog] [-m member] [-t target] 백업하려고하는데이터셋이사용자카탈로그에등록되어있는경우에설정한다. 단, 사용자카탈로그에 alias가설정되어있어서데이터셋이름만으로찾을수있는경우에는이옵션을지정하지않아도된다. 백업하려고하는데이터셋의멤버이름이다. 타겟파일의 UNIX 파일경로이다. 이옵션을지정하지않은경우, 아래의환경설정중 LOAD_DIR 에지정된디렉터 리를타겟 UNIX 파일경로로사용하고, 데이터셋이름과동일한파일을생성한 다. [-d delimiter] 데이터셋레코드사이의 delimiter 를지정한다. 특별히 newline 으로하고자하는 경우 NEWLINE 이라고지정한다. 이옵션을지정하지않은경우, 아래의환경설정중에 DELIMITER 의값을참조 한다. [-F] 대상파일이이미존재하는경우기존의파일을덮어쓰기한다. 60 OpenFrame 툴참조안내서

사용예제 다음은데이터셋을 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할때데이터셋의크기를제한한다. 설정된값보다작은크기의데이터셋만사용가능하다. 0보다큰수를 Byte 단위로지정한다. <dstool.conf > [DSLOAD] SIZE_LIMIT=size_limit 다음과같이 dstool.conf 파일에 dsload 할때파일을생성할 UNIX 디렉터리경로를지정한다. LOAD_DIR 과 [-t target] 옵션을둘다설정하지않은경우에러가발생한다. <dstool.conf> [DSLOAD] LOAD_DIR=load_dir 다음과같이 dstool.conf 파일에 dsload 할때레코드의 delimiter 로문자또는 NEWLINE 을지정한다. DE LIMITER 와 [-d delimiter] 옵션을둘다설정하지않은경우 delimiter 는 NULL 스트링이다. 제 4 장데이터셋관리툴 61

<dstool.conf> [DSLOAD] DELIMITER=delimiter 참고 관련툴프로그램으로는 4.4. dssave 가있다. 4.4. dssave dssave는 dsedit의기능을보완하기위한툴이다. 변경할데이터셋을 dsload를통해서 UNIX 파일로백업한후, 변경한 UNIX 파일을다시 Non-VSAM 데이터셋으로갱신하는기능을한다. dssave 툴프로그램을사용하면새로운데이터셋을생성하지는않고, 기존에이미카탈로그에등록되어있는데이터셋의내용에덮어쓰기를한다. 사용법 dssave 프로그램을실행하는방법은다음과같다. Usage: dssave dsname [options] 입력항목 항목 dsname 갱신하려고하는데이터셋의이름이다. [options] 옵션 [-c catalog] [-m member] [-s source] 갱신하려고하는데이터셋이사용자카탈로그에등록되어있는경우에설정한다. 단, 사용자카탈로그에 alias가설정되어있어서데이터셋이름만으로찾을수있는경우에는이옵션을지정하지않아도된다. 갱신하려고하는데이터셋의멤버이름이다. 소스파일의 UNIX 파일경로이다. 이옵션을지정하지않은경우, 아래의환경설정중 LOAD_DIR 에지정된디렉터 리를소스 UNIX 파일경로로사용하고, 이디렉터리에서데이터셋이름으로파 일을찾는다. [-d delimiter] 데이터셋레코드사이의 delimiter 를지정한다. 특별히 newline 으로하고자하는 경우 NEWLINE 이라고지정한다. 62 OpenFrame 툴참조안내서

옵션 이옵션을지정하지않은경우, 아래의환경설정중에 DELIMITER 의값을참조 한다. [-B] [-R] [-T] 적용데이터셋의레코드포맷 (RECFM) 이고정길이 (FB) 일때, 소스파일의한레코드의길이가짧다면그길이만큼레코드의뒷부분을스페이스로채워준다. 데이터셋으로갱신하고난후소스파일을삭제한다. 소스파일을데이터셋으로갱신할수있는지와레코드의길이, 포맷, delimiter를확인한다. 사용예제 다음은 UNIX 파일을 Non-VSAM 데이터셋으로갱신하는일반적인예이다. $ dssave AAA.BBB 다음은 UNIX 파일을 Non-VSAM 데이터셋의멤버로갱신하는예이다. $ dssave AAA.PDS -m MEMBER01 다음은 UNIX 파일을사용자카탈로그에등록된 Non-VSAM 데이터셋으로갱신하는예이다. $ dssave AAA.BBB -c USERCAT 다음은데이터셋레코드간의 delimiter 를 %% 으로지정하는예이다. $ dssave AAA.BBB -d %% 다음은 RECFM=FB 인 Non-VSAM 데이터셋으로갱신하는경우부족한레코드길이를스페이스로채우 는예이다. $ dssave AAA.BBB B 다음은 UNIX 파일을데이터셋으로갱신한후소스파일을삭제하는예이다. $ dssave AAA.BBB R 제 4 장데이터셋관리툴 63

다음은 UNIX 파일을데이터셋으로갱신할수있는지확인하는예이다. $ dssave AAA.BBB -T 참고 dssave 를수행하기위해서는사전에 dsload 툴을사용하여 UNIX 에소스파일을생성해두어야한다. 관련환경설정 다음과같이 dstool.conf 파일에 dssave할때소스파일의 UNIX 디렉터리경로를지정한다. LOAD_DIR과 [-s source] 옵션을둘다설정하지않은경우에러가발생한다. <dstool.conf> [DSLOAD] LOAD_DIR=load_dir 다음과같이 dstool.conf 파일에 dssave 할때레코드의 delimiter 로문자또는 NEWLINE 을지정한다. DELIMITER 와 [-d delimiter] 옵션을둘다설정하지않은경우 delimiter 는 NULL 스트링이다. <dstool.conf> [DSLOAD] DELIMITER=delimiter 참고 관련툴프로그램으로는 4.3. dsload 가있다. 4.5. dslist dslist는특정볼륨에있는데이터셋에대한정보를조회하거나혹은특정카탈로그에등록된데이터셋에대한정보를조회할때사용하는툴이다. dslist는사용자의옵션에따라다음과같은기능을제공한다. 특정볼륨에들어있는데이터셋에대한정보를조회한다. 특정카탈로그에등록된데이터셋에대한정보를조회한다. 생성일자, 마지막참조일자및데이터셋크기별로조건을주어서조건에해당하는데이터셋정보를 조회한다. 64 OpenFrame 툴참조안내서

사용법 dslist 프로그램을실행하는방법은다음과같다. Usage: dslist [options] [dsname] [options] 옵션 [-c catalog] [-v volume] [-n dsname] [-l] [-a] [-cd date] [-rd date] [-sz size] 특정카탈로그에등록된데이터셋을조회할때사용된다. 지정된카탈로그에등록된데이터셋정보만조회된다. 특정볼륨에속해있는데이터셋을조회한다. 지정한볼륨에해당하는데이터셋정보만조회된다. 조회하고자하는데이터셋이름을정확하게지정한다. 와일드카드문자를사용할수있다. 데이터셋에대한정보를상세하게출력한다. 데이터셋에대한정보를상세하게출력하고, PDS 멤버에대한목록및연관되어있는카탈로그항목을출력한다. 특정날짜에생성된데이터셋의목록을출력한다. 날짜는 YYYYMMDD 형식으로지정하거나 YYYYMMDD-YYYYMMDD의형식으로기간을지정할수도있다. 특정날짜에참조된데이터셋의목록을출력한다. 날짜는 YYYYMMDD 형식으로지정하거나 YYYYMMDD-YYYYMMDD의형식으로기간을지정할수도있다. 조회하고자하는데이터셋의크기범위를 MIN-MAX 형식으로지정한다. 입력항목 항목 [dsname] 조회하고자하는데이터셋이름의앞글자일부를지정한다. 참고와일드카드를사용하여조회하려고하는데이터셋의이름을지정하는경우다음과같이사용할수있다. - AAA.* 는 AAA.BBB나 AAA.CCC처럼 AAA. 으로시작하는 2개의퀄리파이어로구성된데이터셋을찾는다. - AAA.** 는 AAA.BBB, AAA.CCC, AAA.BBB.FFF, AAA.BBB.GGG처럼 AAA. 으로시작하는모든데이터셋을찾는다. 제 4 장데이터셋관리툴 65

사용예제 다음은볼륨 100000 에속해있는데이터셋의정보를조회하는예이다. $ dslist -v 100000 위의 dslist 프로그램수행후출력되는내용은다음과같다. dslist version 5.0.1(1) igkangingyukang:ofsrc5/base(#2) 2009-01-14 10:54:22 Print Dataset List and Information ----------------------------------------------------------------------------- SYS1.VTOC.V100000 VOLUME DSORG RECFM LRECL ----------------------------------------------------------------------------- PROD.BATCHLIB 100000 PO FB 80 SYS1.JCLLIB 100000 PO F 80 SYS1.PROCLIB 100000 PO FB 80 TEST.ADAPTA01 100000 PS FB 80 TEST.ADAPTA02 100000 PS FB 80 TEST.ADAPTC01 100000 PS FB 80 TEST.ADAPTC02 100000 PS FB 80 TEST.ADAPTC03 100000 PS FB 80 TEST.ADAPTE01 100000 PS FB 80 TEST.FBA.FAF2 100000 PS FBA 133 TEST.IMS33263 100000 PS FBA 133 TEST.IMS37151 100000 IS FB 80 TEST.IMS38275 100000 PS FB 80 TEST.IMS38275.SECOND 100000 PS FB 80 TEST.IMS38357.IN 100000 PS FB 33 TEST.IMS38357.OUT 100000 PS FB 33 TEST.JCLLIB 100000 PO F 80 TEST.NVSMJOB6 100000 PS F 20 TEST.SAMPLE01 100000 PS FB 50 TEST.SPNAME 100000 PS FBA 133 TEST.TESTGDG.G0001V00 100000 PS FB 80 TEST.TESTGDG.G0002V00 100000 PS FB 80 ----------------------------------------------------------------------------- * Total 22 entries in volume 100000 printed. 다음은볼륨 100000 에속해있는데이터셋중이름이 SYS1 으로시작되는데이터셋의정보를상세조회 하는예이다. $ dslist -v 100000 SYS1.** -a 위의 dslist 프로그램수행후출력되는내용은다음과같다. 66 OpenFrame 툴참조안내서

dslist version 5.0.1(1) igkangingyukang:ofsrc5/base(#2) 2009-01-14 10:54:22 Print Dataset List and Information ----------------------------------------------------------------------------- Data Set Name... : SYS1.JCLLIB Data Set Type... : NONVSAM Management Class Creation Date.. : 2008/06/10 Data Set Owner. : Expiration Date. : 9999/12/31 Storage Class Volume Serial.. : 100000 Device Type... : 3380 Data Class Organization.. : PO Record Format.. : F KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 80 Current Allocation Primary Space.. : 2048(MB) Number of Extents : 0 Secondary Space. : 0(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2008/06/10 Last Access Time : 11:25:06 ----------------------------------------------------------------------------- Data Set Name... : SYS1.PROCLIB Data Set Type... : NONVSAM Management Class Creation Date.. : ***None*** Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class Volume Serial.. : 100000 Device Type... : 3380 Data Class Organization.. : PO Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 80 Current Allocation Primary Space.. : N.A. Number of Extents : N.A. Secondary Space. : N.A. Data Set Size.. : 0 Last Access Date Last Access Date : 2008/11/17 Last Access Time : 19:21:43 제 4 장데이터셋관리툴 67

----------------------------------------------------------------------------- * Total 2 entries in volume 100000 printed. 4.6. dstouch dstouch는카탈로그나 VTOC에저장된데이터셋의통계정보 ( 총레코드개수, 데이터셋크기 ) 및생성일자를갱신하는툴이다. 데이터셋의실제총레코드개수가카탈로그에저장되어있는개수와다른경우실제레코드개수로카탈로그의정보를갱신한다. 사용법 dstouch 프로그램을실행하는방법은다음과같다. Usage: dstouch [-s] dsname [member] [-v volser] [-c catalog] [-d date] 항목 [-s] dsname [member] [-v volser] [-c catalog] [-d date] 시스템데이터셋인경우지정한다. 정보를갱신하려고하는데이터셋의이름을지정한다. 정보를갱신하려고하는데이터셋의멤버이름을지정한다. 데이터셋이위치한볼륨시리얼을지정한다. 데이터셋이카탈로그에등록되어있지않은경우, 반드시지정해주어야한다. 데이터셋이사용자카탈로그에등록되어있는경우지정한다. 단, 사용자카탈로그 alias가설정되어있어서데이터셋이름만으로사용자카탈로그를찾을수있는경우에는이옵션을지정하지않아도된다. 정보를갱신하려고하는데이터셋의생성일자를 YYYYMMDD 형식으로지정한다. 참고 [-c catalog] 에대한자세한내용은 OpenFrame 안내서중 데이터셋안내서 의 제 4 장통합카탈로 그의카탈로그관리 를참고한다. 사용예제 다음은카탈로그되어있는 TEST.AAA 데이터셋의총레코드의개수를갱신하는예이다. $ dstouch TEST.AAA 68 OpenFrame 툴참조안내서

다음은카탈로그되어있는 PDS TEST.BBB 의멤버 MEMBER01 의정보를갱신하는예이다. $ dstouch TEST.BBB MEMBER01 다음은사용자카탈로그 USERCAT 에등록되어있는 TEST.CCC 데이터셋의총레코드개수를갱신하는 예이다. $ dstouch TEST.CCC -c USERCAT 다음은 TEST.AAA 데이터셋의총레코드개수를갱신하고생성일자 2007 년 4 월 30 일로변경하는예이다. $ dstouch TEST.AAA -d 20070430 참고 데이터셋에대한자세한내용은 OpenFrame 안내서중 데이터셋안내서 를참고한다. 4.7. dscopy dscopy 는데이터셋을다른볼륨이나다른이름으로복사하는툴이다. 사용법 dscopy 프로그램을실행하는방법은다음과같다. Usage: dscopy [options] source dest [options] 옵션 [-c catalog] [-v volume] [-t volume] 입력데이터셋을찾기위해검색할카탈로그를지정한다. 입력데이터셋이위치하는볼륨시리얼을지정한다. 출력데이터셋이위치할볼륨시리얼을지정한다. 입력항목 항목 source dest 입력데이터셋이름을기술한다. 출력데이터셋이름을기술한다. 제 4 장데이터셋관리툴 69

사용예제 다음은카탈로그된데이터셋을복사하는예이다. $ dsmove TEST.DSCOPY01 TEST.DSCOPY02 위의 dscopy 프로그램실행전 TEST.DSCOPY01 의정보는다음과같다. Data Set Name... : TEST.DSCOPY01 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/08/24 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : 2048(MB) Number of Extents : 0 Secondary Space. : 0(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2009/08/24 Last Access Time : 19:56:01 dscopy 프로그램을실행하면다음메시지가출력된다. dscopy version 5.1.1(3) igkang@ingyukang:ofsrc5/base(#4) 2009-05-22 10:06:06 Copy an Existing Dataset DSCOPY SOURCE=TEST.DSCOPY01,DEST=TEST.DSCOPY02,CATALOG=,VOLSER=,TARGET= COMPLETED SUCCESSFULLY. dscopy 프로그램실행후 TEST.DSCOPY02 의정보는다음과같다. Data Set Name... : TEST.DSCOPY02 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT 70 OpenFrame 툴참조안내서

Management Class. : Creation Date.. : 2009/08/24 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : 2048(MB) Number of Extents : 0 Secondary Space. : 4096(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2009/08/24 Last Access Time : 20:00:15 4.8. dsmove dsmove는데이터셋을이동시키는기능을하는툴이다. 데이터셋의이름은유지하면서볼륨만변경하거나, 데이터셋의이름만변경하는경우, 그리고설정에따라서데이터셋의이름과볼륨을모두변경할수도있다. 데이터셋이이동될때데이터셋의생성일자는입력데이터셋의생성일자로유지된다. 사용법 dsmove 프로그램을실행하는방법은다음과같다. Usage: dsmove [options] source dest [options] 옵션 [-c catalog] [-v volume] [-t volume] 입력데이터셋을찾기위해검색할카탈로그를지정한다. 입력데이터셋이위치하는볼륨시리얼을지정한다. 출력데이터셋이위치할볼륨시리얼을지정한다. 입력항목 항목 source 입력데이터셋이름을기술한다. 제 4 장데이터셋관리툴 71

항목 dsmove 가정상종료되면입력데이터셋은삭제된다. dest 출력데이터셋이름을기술한다. 사용예제 다음은카탈로그된데이터셋의볼륨만을변경하는예이다. $ dsmove TEST.DSMOVE01 TEST.DSMOVE01 -t 200000 위의 dsmove 프로그램실행전 TEST.DSMOVE01 의정보는다음과같다. Data Set Name... : TEST.DSMOVE01 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/02/03 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : 2048(MB) Number of Extents : 0 Secondary Space. : 0(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2009/02/03 Last Access Time : 12:56:46 dsmove 프로그램을실행하면다음메시지가출력된다. dsmove version 5.0.1(7) igkang@ingyukang:ofsrc5/base(#2) 2009-01-14 10:54:22 Move or Rename a Dataset DSMOVE SOURCE=TEST.DSMOVE01,DEST=TEST.DSMOVE01,CATALOG=,VOLSER=,TARGET=200000 COMPLETED SUCCESSFULLY. 72 OpenFrame 툴참조안내서

dsmove 프로그램을실행한후 TEST.DSMOVE01 의정보는다음과같다. Data Set Name... : TEST.DSMOVE01 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/02/03 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 200000 Device Type... : 3480 Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : 2048(MB) Number of Extents : 0 Secondary Space. : 4096(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2009/02/03 Last Access Time : 12:58:43 위의예제에서데이터셋 TEST.DSMOVE01 의볼륨이 100000 에서 200000 으로바뀌었다. 볼륨 200000 은테이프볼륨으로설정된상태라 Device Type 도 3480(TAPE DEVICE) 으로바뀌었다. 다음은데이터셋의이름을변경하는예이다. $ dsmove TEST.DSMOVE02 TEST.DSMOVE03 dsmove 프로그램실행전 TEST.DSMOVE02 의정보는다음과같다. Data Set Name... : TEST.DSMOVE02 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/02/03 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 200000 Device Type... : 3480 제 4 장데이터셋관리툴 73

Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : N.A. Number of Extents : N.A. Secondary Space. : N.A. Data Set Size.. : 0 Last Access Date Last Access Date : 2009/02/03 Last Access Time : 13:04:40 dsmove 프로그램실행후다음메시지가출력된다. dsmove version 5.0.1(7) igkangingyukang:ofsrc5/base(#2) 2009-01-14 10:54:22 Move or Rename a Dataset DSMOVE SOURCE=TEST.DSMOVE02,DEST=TEST.DSMOVE03,CATALOG=,VOLSER=,TARGET= COMPLETED SUCCESSFULLY. 데이터셋 TEST.DSMOVE02 는삭제되고, 데이터셋 TEST.DSMOVE03 이생성된다. TEST.DSMOVE03 의정보는다음과같다. Data Set Name... : TEST.DSMOVE03 Data Set Type... : NONVSAM Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/02/03 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 200000 Device Type... : 3480 Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : 4096(KB) Number of Extents : 0 Secondary Space. : 4096(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2009/02/03 Last Access Time : 13:05:16 74 OpenFrame 툴참조안내서

위의예제에서데이터셋이름은 TEST.DSMOVE03 으로변경되고, Last Access Date(Time) 을제외한나 머지정보는동일하다. 4.9. dsshm dsshm 은데이터셋을할당할때생성되는 DCB(Data Control Block) 구조체의저장공간인공유메모리 (Shared Memory) 에대해정보를조회하고, 삭제하는등의관리를도와주는툴이다. 참고데이터셋의할당에사용되는공유메모리는자동으로재사용이되는구조로설계되어있어서정상적으로 OpenFrame이운영될경우에는특별히주의할필요가없으나, 비정상적인프로그램의종료등으로인하여데이터셋의할당에사용되는공유메모리가재사용되지않는경우, 새로운작업에필요한데이터셋의할당공간이부족해져서작업을실행시키지못하는경우가발생할수있다. 이때 DSALC_ERR_NO_AVAILABLE_SLOT 에러가발생하는데, 이런경우에는 dsshm 프로그램으로사용되지않는데이터셋할당공간을삭제하거나 OpenFrame을재기동하면문제를해결할수있다. 시스템이불안정하여작업이비정상적으로종료되는경우가빈번하거나, 재부팅을하지않고하지않고오랜기간동안 OpenFrame을운영하는경우에는가끔씩데이터셋의할당에사용되는공유메모리의상태를확인해줄것을권장한다. 사용법 dsshm 프로그램을실행하는방법은다음과같다. Usage: dsshm command [options] command command list delete 공유메모리의목록을조회한다. 공유메모리공간을삭제한다. [options] 옵션 [-a] [-i index] [-r from to] [-d date] [-j jobid] 공유메모리에저장된정보를상세하게출력한다. 조회하거나삭제할공유메모리의인덱스를지정한다. 조회하거나삭제할공유메모리의범위를지정한다. 조회하거나삭제할공유메모리의할당일자를지정한다. 조회하거나삭제할공유메모리의작업 ID를지정한다. 제 4 장데이터셋관리툴 75

옵션 [-p pid] [-n name] 조회하거나삭제할공유메모리의할당 PID 를지정한다. 조회하거나삭제할공유메모리의데이터셋이름을지정한다. 사용예제 다음은데이터셋할당에사용되는공유메모리의목록을조회하는예이다. 목록의내용이많으므로 SYS1.JOBQ 로시작하는데이터셋의할당내용만조회한다. $ dsshm list -n SYS1.JOBQ 위의프로그램을실행하면다음과같은목록이출력된다. dsshm version 5.0.0(1) base50@ingyukang:ofsrc5/base(#1) 2008-10-08 11:24:55 Dataset Shared Memory Slot Mangement Program [000012] JOBID=,DATE=20090203,PID=6207,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ [000013] JOBID=,DATE=20090203,PID=6210,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ [000014] JOBID=,DATE=20090203,PID=6210,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ.ID [000016] JOBID=,DATE=20090203,PID=6210,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ.NAME... [000081] JOBID=,DATE=20090203,PID=6208,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ [000082] JOBID=,DATE=20090203,PID=6208,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ.ID [000083] JOBID=,DATE=20090203,PID=6208,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ.NAME [000084] JOBID=,DATE=20090203,PID=6208,DCB_NAME=SYS1.MASTER.ICFCAT:SYS1.JOBQ.STAT *** Total 48 allocation items printed. 4.10. dscreate dscreate 는 Non-VSAM 데이터셋생성에필요한아규먼트를사용자로부터직접받아서 Non-VSAM 데이 터셋을신규로생성하는툴프로그램이다. 사용법 dscreate 프로그램을실행하는방법은다음과같다. Usage: dscreate [options] dsname [options] 76 OpenFrame 툴참조안내서

옵션 [-c catalog] [-v volume] [-u unit] [-m member] [-o dsorg] [-f recfm] [-b blksize] [-l lrecl] [-k keylen] [-p keypos] [-s space] 데이터셋을특정카탈로그에등록하려고할때지정한다. 새로운데이터셋이위치하게될볼륨정보를지정한다. 새로운데이터셋이할당될 UNIT의유형을지정한다. PDS의멤버이름을지정한다. 데이터셋의 DSORG 파라미터를지정한다. 데이터셋의레코드형식 (RECFM) 파라미터를지정한다. 데이터셋의블록크기를지정한다. 데이터셋의레코드크기를지정한다. 데이터셋의키길이를지정한다. (ISAM 데이터셋 ) 데이터셋의키위치를지정한다. (ISAM 데이터셋 ) 데이터셋의공간파라미터를지정한다. (TRK/CYL/unit,primary,secondary,directory) [-x expdt] [-r retpd] [-N] [-R] 데이터셋의만료일자를지정한다. (YYYYMMDD 형식 ) 데이터셋의보존기간을지정한다.( 보존날자수 ) 데이터셋을신규로생성하되카탈로그에등록하지않는다. (NOCATALOG 옵션 ) 데이터셋을생성하지않고카탈로그에항목만등록한다. (RECATALOG 옵션 ) 입력항목 항목 dsname 생성하려고하는데이터셋의이름을지정한다. 사용예제 다음은 100000 볼륨에데이터셋을신규로생성하는예이다. $ dscreate AAA.BBB -v 100000 -f FB -l 120 -b 1200 -s CYL,10,10 다음은데이터셋을생성하면서특정사용자카탈로그에등록하는예이다. $ dscreate AAA.BBB -c USERCAT -f FB -l 120 -v 100000 제 4 장데이터셋관리툴 77

4.11. dsdelete dsdelete 는기존에존재하는 Non-VSAM 데이터셋을삭제하는툴프로그램이다. 사용법 dsdelete 프로그램을실행하는방법은다음과같다. Usage: dsdelete [options] dsname [options] 옵션 [-c catalog] [-v volume] [-m member] [-U] 특정카탈로그에등록된데이터셋을삭제하려고할때지정한다. 삭제할데이터셋이위치한볼륨정보를지정한다. PDS의멤버이름을지정한다. 데이터셋을제거하지않고카탈로그에항목만삭제한다. (UNCATALOG 옵션 ) 입력항목 항목 dsname 삭제하려고하는데이터셋의이름을지정한다. 사용예제 다음은 100000 볼륨에있는데이터셋을삭제하는예이다. $ dsdelete AAA.BBB -v 100000 다음은특정사용자카탈로그에등록된데이터셋을삭제하는예이다. $ dsdelete AAA.BBB -c USERCAT 78 OpenFrame 툴참조안내서

4.12. gdgcreate gdgcreate 는 GDG 항목생성에필요한파라미터를사용자로부터직접받아서 GDG 항목을신규로생성 하는툴프로그램이다. 사용법 gdgcreate 프로그램을실행하는방법은다음과같다. Usage: dscreate [options] gdgname [options] 옵션 [-c catalog] [-l limit] [-x expdt] [-E] [-S] GDG 항목을특정카탈로그에등록하려고할때지정한다. GDG LIMIT 값을설정한다. 지정하지않는경우 255의값이설정된다. GDG 항목의만료일자를지정한다. (YYYYMMDD 형식 ) GDG LIMIT 값을초과할때, 연관된 GDS를카탈로그에서삭제한다. (EMPTY 옵션 ) 카탈로그에서삭제할때, GDS를제거한다. (SCRATCH 옵션 ) 입력항목 항목 gdgname 생성하려고하는 GDG 항목의이름을지정한다. 참고 현재의 OpenFrame 버전에서는 EMPTY 옵션과 SCRATCH 옵션을지원하지않는다. 실제로는모든 GDG 항목이 NOEMPTY 옵션과 SCRATCH 옵션을가진것으로간주된다. 사용예제 다음은 GDG LIMIT 가 12 인 GDG 항목을생성하는예이다. $ gdgcreate TEST.GDGBASE -l 12 다음은 GDG 항목을특정사용자카탈로그에등록하는예이다. $ gdgcreate TEST.GDGBASE -c USERCAT 제 4 장데이터셋관리툴 79

4.13. gdgdelete gdgdelete 는기존에등록된 GDG 항목을삭제하는툴프로그램이다. 사용법 gdgdelete 프로그램을실행하는방법은다음과같다. Usage: dscreate [options] gdgname [options] 옵션 [-c catalog] [-F] 특정카탈로그에등록된 GDG 항목을삭제하려고할때지정한다. 연관된 GDS 이존재할때, 함께삭제한다. (FORCE 옵션 ) 입력항목 항목 gdgname 삭제하려고하는 GDG 항목의이름을지정한다. 사용예제 다음은 GDG 항목을 GDS 과함께삭제하는예이다. $ gdgdelete TEST.GDGBASE -F 다음은특정사용자카탈로그에등록된 GDG 항목을삭제하는예이다. $ gdgdelete TEST.GDGBASE -c USERCAT 80 OpenFrame 툴참조안내서

4.14. idcams idcams는 IDCAMS 유틸리티의기능을 UNIX 셸에서직접실행할수있도록만든툴프로그램이다. idcams 툴프로그램을이용하면 VSAM 데이터셋혹은사용자카탈로그를생성하거나삭제할수있고, REPRO 명령을이용해서데이터셋을복사하거나, BLDINDEX 명령을이용해서기존 VSAM 데이터셋에대한보조인덱스를구성할수있다. 참고 Non-VSAM 데이터셋의생성과삭제및 GDG 항목의생성과삭제기능은 idcams 툴프로그램에서는제공하지않는다. 대신 dscreate, dsdelete, gdgcreate, gdgdelete 등별도툴프로그램을제공한다. 사용법 idcams 프로그램을실행하는방법은다음과같다. Usage: idcams command [options] command 항목 define delete bldindex repro VSAM 데이터셋이나사용자카탈로그를정의한다. VSAM 데이터셋이나사용자카탈로그를삭제한다. 기존 VSAM 데이터셋에대한보조인덱스를구성한다. VSAM 혹은 Non-VSAM 데이터셋의내용을복사한다. 사용자카탈로그정의옵션 옵션 [-t type] 사용자카탈로그를정의함을명시한다. (USERCATALOG/UCAT) type 항목은 -t 구분자없이지정가능하다. [-n name] [-v volume] [-s space] 정의하려고하는사용자카탈로그의이름을지정한다. 사용자카탈로그가위치하게될볼륨정보를지정한다. 데이터셋의공간파라미터를지정한다. (TRK/CYL/unit,primary,secondary) ALIAS 정의옵션 제 4 장데이터셋관리툴 81

옵션 [-t type] ALIAS 를정의함을명시한다. (ALIAS) type 항목은 -t 구분자없이지정가능하다. [-n name] [-r relate] 정의하려고하는 ALIAS 의이름을지정한다. ALIAS 에연결될카탈로그항목의이름을지정한다. VSAM 데이터셋정의옵션 옵션 [-t type] VSAM 데이터셋을정의함을명시한다. (CLUSTER/CL) type 항목은 -t 구분자없이지정가능하다. [-n name] [-o recorg] [-v volume] [-s space] [-c catalog] [-b cisize] [-l lrecl] [-k keys] 정의하려고하는 VSAM 데이터셋의이름을지정한다. 정의하려고하는 VSAM 데이터셋의구조를지정한다. (KS/ES/RR) VSAM 데이터셋이위치하게될볼륨정보를지정한다. 데이터셋의공간파라미터를지정한다. (TRK/CYL/unit,primary,secondary) 데이터셋을특정카탈로그에등록하려고할때지정한다. VSAM 데이터셋의컨트롤인터벌크기를지정한다. VSAM 데이터셋의레코드크기를지정한다. (average,maximum) VSAM 데이터셋의키정보를지정한다. (length,offset) 보조인덱스정의옵션 옵션 [-t type] 보조인덱스를정의함을명시한다. (ALTERNATEINDEX/AIX) type 항목은 -t 구분자없이지정가능하다. [-n name] [-r relate] [-v volume] [-s space] [-c catalog] [-b cisize] [-l lrecl] [-k keys] 정의하려고하는보조인덱스의이름을지정한다. 보조인덱스에연결될 Base Cluster 이름을지정한다. 보조인덱스가위치하게될볼륨정보를지정한다. 보조인덱스의공간파라미터를지정한다. (TRK/CYL/unit,primary,secondary) 보조인덱스를특정카탈로그에등록하려고할때지정한다. 보조인덱스의컨트롤인터벌크기를지정한다. 보조인덱스의레코드크기를지정한다. (average,maximum) Base Cluster에서보조인덱스키정보를지정한다. (length,offset) 82 OpenFrame 툴참조안내서

옵션 [-U] [-N] Base Cluster에서 AIX 키값이유일한값을갖는지지정한다. (UNIQUEKEY 속성 ) Base Cluster가변경됨에따라 AIX 데이터도변경되는지지정한다. (NOUPGRADE 속성 ) PATH 정의옵션 옵션 [-t type] PATH 를정의함을명시한다. (PATH) type 항목은 -t 구분자없이지정가능하다. [-n name] [-p pathentry] [-c catalog] [-N] 정의하려고하는 PATH의이름을지정한다. PATH를구성하는카탈로그항목의이름을지정한다. VSAM 데이터셋혹은보조인덱스를담고있는카탈로그를지정한다. Base Cluster의업그레이드셋이할당되어야하는지지정한다. (NOUPDATE 속성 ) 삭제옵션 옵션 [-n name] 삭제하려고하는항목의이름을지정한다. name 항목은 -n 구분자없이지정가능하다. [-t type] [-c catalog] [-F] 삭제하려고하는항목의유형을지정한다. (ALIAS/AIX/CL/PATH/UCAT) 삭제하려고하는항목을담고있는카탈로그를지정한다. 비어있지않은항목도삭제하기위해지정한다. (FORCE 옵션 ) BLDINDEX 옵션 옵션 [-i ids] [-o ods] [-c catalog] Base Cluster를지정한다. 보조인덱스를지정한다. 위항목들을담고있는카탈로그를지정한다. REPRO 옵션 옵션 [-i ids] [-o ods] 복사하려고하는항목이름을지정한다. 타겟데이터셋이름을지정한다. 제 4 장데이터셋관리툴 83

옵션 [-f from] [-t to] [-r ridtype] [-s skip] [-c count] [-R] 소스데이터셋에서복사를시작할위치를지정한다. 복사중인데이터셋에서복사를중지할위치를지정한다. from 값과 to 값을지정하는방식을지정한다. (KEY/NUM/ADDR) 레코드를복사하기전건너뛸레코드의개수를지정한다. 복사하려고하는레코드의개수를지정한다. 타겟데이터셋에있는레코드를교체할지지정한다. (REPLACE 옵션 ) 사용예제 다음은 100000 볼륨에 USERCAT1 사용자카탈로그를정의하는예이다. $ idcams define UCAT -n USERCAT1 -v 100000 위의명령으로정의한사용자카탈로그를 listcat 으로조회한결과는다음과같다. Data Set Name... : USERCAT1 Data Set Type... : UCAT Catalog Name... : SYS1.MASTER.ICFCAT Management Class. : Creation Date.. : 2009/08/25 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : KSDS AVGLRECL.... : N.A. KEYLEN..... : N.A. MAXLRECL.... : N.A. KEYPOS..... : N.A. CISIZE..... : N.A. AIXRKP..... : N.A. Current Allocation Primary Space.. : 1024(KB) Number of Extents : 0 Secondary Space. : 1024(KB) Data Set Size.. : 0 Last Access Date Last Access Date : ***None*** Last Access Time : **None** 84 OpenFrame 툴참조안내서

다음은 USERCAT1 과연결된 TEST 라는 ALIAS 를정의하는예이다. $ idcams define ALIAS -n TEST -r USERCAT1 위명령으로정의한 ALIAS 를 listcat 으로조회한결과는다음과같다. Entry Name.... : TEST Entry Type.... : ALIAS Catalog Name... : SYS1.MASTER.ICFCAT Associations UCAT...... : USERCAT1 다음은 TEST.KSDS 라는이름의 KSDS 를정의하는예이다. $ idcams define CLUSTER -n TEST.KSDS -o KS -k 15,0 -l 250,250 다음은 TEST.ESDS 라는이름의 ESDS 를정의하는예이다. $ idcams define CL -n TEST.ESDS -o ES -v 100000 -l 250,250 위명령으로정의한 ESDS 를 listcat 으로조회한결과는다음과같다. Data Set Name... : TEST.ESDS Data Set Type... : CLUSTER Catalog Name... : USERCAT1 Management Class. : Creation Date.. : 2009/08/25 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : ESDS AVGLRECL.... : 250 KEYLEN..... : 0 MAXLRECL.... : 250 KEYPOS..... : 0 CISIZE..... : 4096 AIXRKP..... : N.A. Current Allocation Primary Space.. : 1024(KB) Number of Extents : 0 Secondary Space. : 1024(KB) Data Set Size.. : 0 제 4 장데이터셋관리툴 85

Last Access Date Last Access Date : ***None*** Last Access Time : **None** 다음은 TEST.ESDS 에 TEST.AIX 라는이름의보조인덱스를정의하는예이다. $ idcams define AIX -n TEST.AIX -r TEST.ESDS -k 3,0 -l 40,50 -s TRK,20,10 위명령으로정의한보조인덱스를 listcat 으로조회한결과는다음과같다. Data Set Name... : TEST.AIX Data Set Type... : AIX Catalog Name... : USERCAT1 Management Class. : Creation Date.. : 2009/08/25 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : KSDS AVGLRECL.... : 40 KEYLEN..... : 3 MAXLRECL.... : 50 KEYPOS..... : N.A. CISIZE..... : 4096 AIXRKP..... : 0 Current Allocation Primary Space.. : 960(KB) Number of Extents : 0 Secondary Space. : 480(KB) Data Set Size.. : 0 Last Access Date Last Access Date : ***None*** Last Access Time : **None** 다음은 TEST.AIX 보조인덱스에 TEST.PATH 라는이름의 PATH 를정의하는예이다. $ idcams define PATH -n TEST.PATH -p TEST.AIX -c USERCAT1 위명령으로정의한 PATH 를 listcat 으로조회한결과는다음과같다. Entry Name.... : TEST.PATH Entry Type.... : PATH Catalog Name... : USERCAT1 Attributes Creation Date.. : 2009/08/25 Expiration Date. : ***None*** Entry Owner... : igkang 86 OpenFrame 툴참조안내서

Associations AIX....... : TEST.AIX 다음은 USERCAT1 에등록된 TEST.KSDS 를삭제하는예이다. $ idcams delete TEST.KSDS -c USERCAT1 다음은 USERCAT1 카탈로그를 FORCE 옵션으로삭제하는예이다. $ idcams delete -n USERCAT1 -t UCAT -F 다음은 TEST.ESDS 으로부터 TEST.AIX 보조인덱스를구성하는예이다. $ idcams bldindex -i TEST.ESDS -o TEST.AIX 다음은 TEST.ISAM 데이터셋으로부터 TEST.KSDS 에키값이 "AAAA" 부터 "FFFF" 까지인레코드를복사 하는예이다. $ idcams repro -i TEST.ISAM -o TEST.KSDS -f AAAA -t FFFF -r KEY 4.15. listvol listvol 은시스템에등록된볼륨정보를출력하는툴이다. 사용법 listvol 프로그램을실행하는방법은다음과같다. Usage: listvol [options] [volser] [options] 옵션 [-l] 볼륨에대한정보를상세하게출력한다. 입력항목 항목 [volser] 조회하고자하는볼륨시리얼번호를지정한다. 제 4 장데이터셋관리툴 87

항목 지정하지않은경우에는모든볼륨에대한정보가출력된다. 사용예제 다음은시스템에등록된볼륨의목록을조회하는예이다. $ listvol 위의 listvol 프로그램수행후출력되는내용은다음과같다. listvol version 5.1.0(4) igkang@ingyukang:ofsrc5/base(#4) 2009-05-22 10:06:06 List Registered Volume Information ----------------------------------------------------------------------------- VOLUME FREE(MB) TOTAL(MB) USE(%) VOLUME PATH ----------------------------------------------------------------------------- 100000 44634 73279 39.09 /home/igkang/volume/100000 200000 44634 73279 39.09 /home/igkang/volume/200000 300000 44634 73279 39.09 /home/igkang/volume/300000 DISK01 44634 73279 39.09 /home/igkang/volume/disk01 VSPOOL 44634 73279 39.09 /home/igkang/openframe/spool ----------------------------------------------------------------------------- * Total 5 volume entries printed. 다음은볼륨 100000 에대해정보를상세하게출력하는예이다. $ listvol -l 100000 위의 listvol 프로그램수행후출력되는내용은다음과같다. listvol version 5.1.0(4) igkang@ingyukang:ofsrc5/base(#4) 2009-05-22 10:06:06 List Registered Volume Information ----------------------------------------------------------------------------- Volume Serial... : 100000 Device Type.... : 3380 Device Attr.... : PUBLIC PERMANENT Volume Path.... : /home/igkang/volume/100000 Space Limit.... : 2048(MB) Statistics Used...... : 28644(MB) Available.... : 44634(MB) Total...... : 73279(MB) Usage...... : 39.09(%) 88 OpenFrame 툴참조안내서

----------------------------------------------------------------------------- * Total 1 volume entries printed. 4.16. listcat listcat 은특정카탈로그에등록된항목에대한정보를출력하는툴이다. 사용법 listcat 프로그램을실행하는방법은다음과같다. Usage: listcat [options] [entname] [options] 옵션 [-c catalog] [-n entname] [-l] [-a] 특정카탈로그에등록된항목을조회할때사용된다. 지정된카탈로그에등록된항목정보만조회된다. 조회하고자하는항목의이름을정확하게지정한다. 와일드카드문자를사용할수있다. 카탈로그항목에대한정보를상세하게출력한다. 카탈로그항목에대한정보를정보를상세하게출력하고, 연관되어있는카탈로그항목도같이출력된다. PDS인경우멤버에대한목록이출력된다. 입력항목 항목 [entname] 조회하고자하는항목이름의앞글자일부를지정한다. 참고와일드카드를사용하여조회하려고하는항목의이름을지정하는경우다음과같이사용할수있다. - AAA.* 는 AAA.BBB나 AAA.CCC처럼 AAA. 으로시작하는 2개의퀄리파이어로구성된항목을찾는다. - AAA.** 는 AAA.BBB, AAA.CCC, AAA.BBB.FFF, AAA.BBB.GGG처럼 AAA. 으로시작하는모든항목을찾는다. 제 4 장데이터셋관리툴 89

사용예제 다음은마스터카탈로그에등록된항목정보를조회하는예이다. $ listcat -c SYS1.MASTER.ICFCAT 위의 listcat 프로그램을수행한후출력되는내용은다음과같다. listcat version 5.1.1(2) igkang@ingyukang:ofsrc5/base(#4) 2009-05-22 10:06:06 List Catalog Entry Information ----------------------------------------------------------------------------- SYS1.MASTER.ICFCAT VOLUME ENTTYPE VSAM NVSM ----------------------------------------------------------------------------- SYS1.DSLOCK.DATA 100000 CLUSTER KSDS SYS1.DSLOCK.LOG 100000 CLUSTER KSDS SYS1.JCLLIB 100000 NONVSAM PDS SYS1.JESST 100000 CLUSTER KSDS SYS1.JOBQ 100000 CLUSTER KSDS... SYS1.VVDS.V100000 100000 CLUSTER ESDS SYS1.VVDS.V200000 200000 CLUSTER ESDS SYS1.VVDS.V300000 300000 CLUSTER ESDS... TEST.DSCOPY01 100000 NONVSAM SDS TEST.DSCOPY02 100000 NONVSAM SDS TEST.GDGBASE ------ GDG TEST.GDGBASE.G0001V00 100000 NONVSAM GDS TEST.GDGBASE.G0002V00 100000 NONVSAM GDS ----------------------------------------------------------------------------- * Total 82 entries in catalog SYS1.MASTER.ICFCAT printed. 다음은사용자카탈로그 IYA.UCAT 에등록된항목중, IYA.NONVSAM 데이터셋에대한정보를상세조 회하는예이다. $ listcat -c IYA.UCAT -l IYA.NONVSAM 위의 listcat 프로그램을수행한후출력되는내용은다음과같다. listcat version 5.1.1(2) igkang@ingyukang:ofsrc5/base(#4) 2009-05-22 10:06:06 List Catalog Entry Information ----------------------------------------------------------------------------- Data Set Name... : IYA.NONVSAM Data Set Type... : NONVSAM Catalog Name... : IYA.UCAT 90 OpenFrame 툴참조안내서

Management Class. : Creation Date.. : 2009/07/14 Data Set Owner. : igkang Expiration Date. : ***None*** Storage Class... : Volume Serial.. : 100000 Device Type... : 3380 Data Class.... : Organization.. : PS Record Format.. : FB KEYLEN..... : 0 Record Length.. : 80 KEYPOS..... : 0 Block Size... : 4096 Current Allocation Primary Space.. : 2048(MB) Number of Extents : 0 Secondary Space. : 0(KB) Data Set Size.. : 0 Last Access Date Last Access Date : 2009/07/14 Last Access Time : 11:38:51 ----------------------------------------------------------------------------- * Total 1 entries in catalog IYA.UCAT printed. 4.17. lockm lockm 은데이터셋을독점적으로사용하기위해서관리되는데이터셋 Lock 정보를조회하고, 필요한경 우에 Lock 정보를삭제할수있는기능을제공하는툴프로그램이다. 참고일반적으로 Batch 작업이정상적으로종료된경우에는데이터셋에대한 Lock 정보는깨끗하게정리되나, 작업이실행중에비정상적인방법으로종료되는경우에는간혹데이터셋 Lock 정보가남아서후속작업이진행되지않는경우가있다. 이런경우에는 lockm 프로그램으로 Lock 목록을조회한후, 정리되지않은 Lock 항목을삭제하면문제를해결할수있다. 사용법 lockm 프로그램을실행하는방법은다음과같다. Usage: lockm command [options] command command lock 데이터셋 Lock 항목을요청한다. 제 4 장데이터셋관리툴 91

command list clear 데이터셋 Lock 목록을조회한다. 데이터셋 Lock 항목을삭제한다. LOCK 옵션 옵션 [-n name] 요청하려고하는 Lock 의이름을지정한다. name 항목은반드시지정되어야한다. [-t type] [-w time] 요청하려고하는 Lock 의유형을지정한다. (EX/SHR) Lock 요청대기옵션을지정한다. (FOREVER/NOWAIT) LIST 옵션 한번에 1 개이상의옵션은지정될수없다. 옵션 [-p pid] [-n name] [-j jobid] 조회할 Lock 항목의소유 PID를지정한다. 조회할 Lock 항목의이름을지정한다. 조회할 Lock 항목의작업 ID를지정한다. CLEAR 옵션 최소 1 개이상의옵션이지정되어야한다. 옵션 [-n name] [-p pid] [-j jobid] 삭제할 Lock 항목의이름을지정한다. 삭제할 Lock 항목의소유 PID를지정한다. 삭제할 Lock 항목의작업 ID를지정한다. 사용예제 다음은 TESTCAT 카탈로그의 TESTDS.TESTLOCK 데이터셋에대해강제로 Lock 을요청하는경우의예 이다. $ lockm lock -n TESTCAT:TESTDS.TESTLOCK 92 OpenFrame 툴참조안내서

다음은 lockm 툴프로그램을사용하여현재시스템에서관리되는 Lock 목록을조회하는예이다. $ lockm list 위의프로그램을실행하면다음과같은목록이출력된다. lockm version 5.1.0(1) igkang@ingyukang:ofsrc5/base(#4) 2009-05-22 10:06:06 Dataset Lock Token Management Program ----------------------------------------------------------------------------- PID NODENAME JOBID TYPE LOCKNAME ----------------------------------------------------------------------------- *6158 ingyukang SHR SYS1.MASTER.ICFCAT:TEST.IMS43643.FIRST *6163 ingyukang EX TESTCAT:TESTDS.TESTLOCK ----------------------------------------------------------------------------- * List command completed successfully. 다음은 lockm 툴프로그램을사용하여 Lock 항목을삭제하는예이다. $ lockm clear -n TESTCAT:TESTDS.TESTLOCK 제 4 장데이터셋관리툴 93

제 5 장카탈로그관리툴 5.1. icfdump icfdump는 OpenFrame 제품을운용하면서관리되는카탈로그정보를백업하여차후에문제가발생했을경우이를복구할수있도록해주는툴이다. icfdump 프로그램으로백업을한카탈로그덤프데이터는 icfload 프로그램으로복구할수있다. 카탈로그백업을수행하고나면, 카탈로그데이터가저장된디렉터리에 2개의 UNIX 파일이생성된다. 파일명 dataset.lst catalog.dat 백업에사용된카탈로그데이터셋의종류와이름그리고볼륨정보가저장된다. 카탈로그에저장되어있던카탈로그엔트리에대한정보가저장된파일이다. 사용법 icfdump 프로그램을실행하는방법은다음과같다. Usage: icfdump volser dumpdir icfdump all dumpdir icfdump dumpdir 항목 volser all dumpdir 특정볼륨에저장되어있는카탈로그데이터만백업하고싶은경우에사용한다. volser을지정하지않은경우모든볼륨에대한백업을수행한다. 모든볼륨에대한카탈로그데이터백업을수행한다. 백업하려고하는카탈로그데이터가저장될디렉터리를지정한다. 사용예제 다음은모든카탈로그데이터를현재디렉터리밑에있는 dump01 디렉터리에백업하는예이다. $ icfdump all dump01 제 5 장카탈로그관리툴 95

참고카탈로그데이터를덤프하는중에특정카탈로그엔트리에대한오류가발생하면해당오류메시지를화면에출력하고계속해서백업과정을진행한다. 이경우오류메시지를정확하게분석해서작업을계속진행할것인지의여부를결정해야한다. 5.2. icfload icfload는 icfdump로백업한카탈로그덤프데이터를사용하여현재카탈로그시스템을백업할당시의시점으로복구하는툴이다. 또한 icfload에는카탈로그데이터셋을초기화시키는과정이포함되어있어서사용되지않는카탈로그레코드등이정리되어카탈로그데이터셋의크기가작아지는효과가있다. 사용법 icfload 프로그램을실행하는방법은다음과같다. Usage: icfload volser dumpdir icfload all dumpdir icfload dumpdir 항목 volser 특정볼륨에대한카탈로그내용만복구할경우에지정한다. volser 를지정하지않은경우모든볼륨에대한카탈로그내용을복구한다. all dumpdir 모든볼륨에대한카탈로그데이터를복구한다. icfdump 프로그램으로백업된데이터가저장된디렉터리를지정한다. 사용예제 다음은현재디렉터리밑에있는 dump01 디렉터리에백업된데이터를기준으로모든카탈로그내용을복 구하는예이다. $ icfload all dump01 96 OpenFrame 툴참조안내서

참고특정볼륨을기준으로카탈로그를백업한경우에는해당볼륨을기준으로만카탈로그복구가가능하다. 하지만모든볼륨에대해서카탈로그백업을한경우에는특정볼륨또는모든볼륨에대해서카탈로그복구를할수있다 5.3. icfscan icfscan 은카탈로그에등록된엔트리의유효성및유형별통계를산출하는툴이다. OpenFrame 시스템운 영중총카탈로그엔트리의증감에대한보고와등록된엔트리의유효성검증을위해사용할수있다. 사용법 icfscan 프로그램을실행하는방법은다음과같다. Usage: icfscan [-c user_catalog] [-h] [-i] 항목 [-c user_catalog] 지정된사용자카탈로그만을점검한다. user_catalog 을지정하지않은경우, 모든카탈로그에대한엔트리의유효성과 유형별통계를산출한다. [-h] [-i] 도움말을출력한다. 처리과정에대한메시지를출력한다. 사용예제 다음은모든카탈로그에대하여엔트리의유효성과유형별통계를산출하는예이다. $ icfscan 위예제에서모든카탈로그에대한카탈로그스캔을시도한후결과를보여준다. 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] ============================================================ 제 5 장카탈로그관리툴 97

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 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] ============================================================ 참고 카탈로그를스캔할때특정카탈로그항목에대해오류가발생한경우, 해당오류메시지를화면에 출력하고계속해서스캔과정을진행한다. 5.4. icfspchk icfspchk은카탈로그를기준으로 VSAM 볼륨의사용공간을확인하는툴이다. 단, Non-VSAM 데이터셋이사용하는공간에대해서는보고를하지않는다. icfspchk 프로그램은카탈로그에등록되어있는모든볼륨과각볼륨에저장되어있는모든 VSAM 데이터셋에대해서다음의측정값을출력한다. 카탈로그이름, 데이터셋이름, 데이터셋유형 98 OpenFrame 툴참조안내서

컨트롤인터벌크기, 평균레코드크기, 최대레코드크기, 전체레코드개수 추정데이터셋크기, 최대데이터셋할당공간 한볼륨안에저장되어있는모든 VSAM 데이터셋에대한보고가끝나면해당볼륨에대한총추정데이 터셋크기와총데이터셋할당공간을출력한다. 참고 icfspchk 은예전에카탈로그 VVDS 의레코드를재사용할수없던문제가있어, VVDS 의디스크공간 사용증가분을측정하기위해개발된툴이다. 사용법 icfspchk 프로그램을실행하는방법은다음과같다. Usage: icfspchk volser icfspchk all 항목 volser all 특정볼륨에대한 VSAM 데이터셋의사용량을확인하기위해지정한다. 모든볼륨에대한 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 제 5 장카탈로그관리툴 99

-------------------------------------------------------------- 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: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. 100 OpenFrame 툴참조안내서

제 6 장 Batch 시스템툴 6.1. tjesinit tjesinit은 OpenFrame Batch에서시스템데이터셋뿐만아니라 JOBQ와 SPOOL 등을초기화하기위해사용되는툴이다. OpenFrame 시스템초기화작업을담당하는 tjesinit은시스템을초기화할때다음을수행한다. JESST 초기화 tjes.conf 파일로부터 JOBQ 크기, OUTPUTQ 크기, NODELIST, JOB CLASS 설정등을읽어 SYSx.JESST 를초기화한다. JOBQ 초기화 JOBQ 에등록된모든내용을삭제한다. OUTPUTQ 초기화 OUTPUTQ 에등록된모든내용을삭제한다. SPOOL 초기화 SPOOL 볼륨내의 TJES 관련데이터를모두삭제한다. tjesinit 은시스템초기화할때 JESST reset, JOBQ reset 을수행하고 tjes.conf 파일의설정된내용으로부 터 JESST 초기화, SPOOL 초기화, OUTPUTQ 초기화의순서로실행된다. 시스템관리자는다음의사항을확인한후 tjesinit 을수행한다. TSAM 은사용가능한상태이어야한다. OpenFrame 엔진 (Tmax) 은기동되지않은상태이어야한다. JOB 의수행내역이백업되지않고삭제된다. 참고 OpenFrame 시스템을완전히초기화하기위해서는 tjesinit, lockinit 툴을이용하여시스템데이터셋 을초기화해야한다. 제 6 장 Batch 시스템툴 101

사용법 tjesinit 프로그램을실행하는방법은다음과같다. Usage: tjesinit 사용예제 다음은 TJES 를초기화하는예이다. $ tjesinit 참고 관련툴프로그램으로는 2.4. lockds 이있다. 6.2. dlclean dlclean 은 dlupdate 를한후에임시데이터셋에옮겨놓은이전라이브러리들을삭제하는툴이다. 사용법 dlclean 프로그램을실행하는방법은다음과같다. Usage: dlclean 사용예제 tjes.conf 파일의 [DYNAMIC_LIBRARY] 절 TEMPLIB 항목에설정되어있는 PDS 에저장되어있는이전 라이브러리들을모두삭제한다. $ dlclean 관련환경설정 dlclean 를사용할때삭제할라이브러리들이저장되어있는임시데이터셋이다. TEMPLIB 을설정하지않은경우에러가발생한다. 102 OpenFrame 툴참조안내서

<tjes.conf> [DYNAMIC_LIBRARY] TEMPLIB= datasetname 참고 관련툴프로그램으로는 6.5. dlupdate 이있다. 6.3. jclview jclview는 tjesmgr와같이 UNIX 터미널화면에서실행되는 JCL 파일뷰어를제공하는툴이다. curses 라이브러리를사용하여터미널화면에서도윈도우화면처럼풀다운메뉴, 화면스크롤, 팝업창, 단축키등의사용자편의 UI와다중문서인터페이스를제공한다. 이외에도 Batch JOB 테스트에관련된여러가지편의기능을제공하여개발및 SE의작업능률향상에도움을준다. 다음은 jclview의주요기능이다. JCL 파일의멀티경로지원 JCL 프로시저열람 (JCLLIB 문장, /*JOBPARM 의 PROC 문장지원 ) 데이터셋상세정보열람 (JOBCAT, STEPCAT DD 문지원 ) dsview, dsedit, vi 편집기연계호출 멤버데이터셋 (PDS, GDS) 정보열람 데이터셋조건별검색 ( 필터링, 카탈로그, 엔트리타입 ) 다음은 jclview 메뉴구성에대한이다. 상위메뉴 JCL Dataset Help 하위메뉴 Open Select Exit Search Volume Info Find Error Msg About JCL View JCL 파일열기열려진여러개의 JCL 파일중에서보기원하는 JCL 파일선택 JCL View 종료데이터셋조건별검색볼륨정보조회 TJES 에러메시지검색 JCL View 버전정보 제 6 장 Batch 시스템툴 103

다음은 jclview 단축키구성에대한이다. 항목 1 2 3 F D Tab Enter Q 기능 Open Edit Select PgUp PgDn Menu Ds Info Close JCL 파일열기 JCL 파일을 vi 편집기를이용하여열기열려진여러개의 JCL 파일중에서보기원하는 JCL 파일선택이전페이지다음페이지메뉴바로이동데이터셋정보출력현재보고있는 JCL 파일닫기 사용법 jclview 프로그램을실행하는방법은다음과같다. $ jclview [JCL File_name] 항목 [JCL File_name] 조회하고자하는 JCL 파일을지정한다. 해당 JCL 의내용을보여준다. JCL 파일명을지정하지않으면 [ 그림 6.1] 의초기화면이나타난다. dataset_name 변경하고자하는기존라이브러리가들어있는 PDS 이름을지정한다. 104 OpenFrame 툴참조안내서

사용예제 jclview 의초기화면은다음과같다. [ 그림 6.1] jclview - 초기화면 jclview 메뉴선택화면은다음과같다. [ 그림 6.2] jclview - 메뉴선택화면 제 6 장 Batch 시스템툴 105

jclview 에서 JCL 파일을연후화면은다음과같다. [ 그림 6.3] jclview - JCL 파일 open 후화면 jclview 에서데이터셋정보를열람하는화면은다음과같다. [ 그림 6.4] jclview - 데이터셋정보열람화면 106 OpenFrame 툴참조안내서

jclview 에서 GDG 멤버정보를조회화면은다음과같다. [ 그림 6.5] jclview - GDG 멤버정보조회화면 jclview 에서데이터셋을검색하는화면은다음과같다. [ 그림 6.6] jclview - 데이터셋검색화면 제 6 장 Batch 시스템툴 107