데이터셋 관리 툴

본 장에서는 데이터셋 관리 툴 프로그램을 사용하여 데이터셋 관련 작업을 처리하는 방법에 대해 기술한다.

1. 개요

다음은 데이터셋 관리를 위한 프로그램 목록이다.

프로그램명 설명

dscopy

데이터셋을 다른 볼륨이나 다른 이름으로 복사한다.

dscreate

Non-VSAM 데이터셋을 신규로 생성한다.

dsdelete

기존 Non-VSAM 데이터셋을 삭제한다.

dsedit

데이터셋의 내용을 보여주고 데이터셋의 내용을 변경한다.

dslist

특정 볼륨에 있는 데이터셋에 대한 정보를 출력한다.

dsload

Non-VSAM 데이터셋을 UNIX 파일로 백업하는 기능을 제공한다.

dsmove

데이터셋을 이동시키는 툴로, 데이터셋의 볼륨을 변경하거나 이름을 변경하는 경우에 사용한다.

dssave

dsload로 백업한 UNIX 파일을 다시 Non-VSAM 데이터셋으로 갱신한다.

dsrdb

데이터셋을 할당할 때 생성되는 DCB 구조체의 OFM_BASE_ALLOC 시스템 테이블을 관리한다.

dstouch

카탈로그나 VTOC에 저장된 데이터셋의 통계정보 및 생성일자를 갱신한다.

dsview

데이터셋의 내용을 보여주는 툴이다.

gdgcreate

GDG 항목을 신규로 생성한다.

gdgdelete

기존 GDG 항목을 삭제한다.

idcams

VSAM 데이터셋 혹은 사용자 카탈로그를 생성하거나 삭제한다.

listcat

특정 카탈로그에 등록된 항목에 대한 정보를 출력한다.

lockm

데이터셋을 독점적으로 사용하기 위한 데이터셋 Lock 정보를 조회하고 삭제할 수 있는 툴이다.

smfmgr

SMF 데이터셋의 상태를 조회하고 관리한다.

spfedit

Non-VSAM 데이터셋의 편집 기능을 제공한다.

2. dscopy

dscopy는 데이터셋을 다른 볼륨이나 다른 이름으로 복사하는 툴이다. 원본 데이터셋을 검색하기 위한 카탈로그와 볼륨 정보, 복사된 데이터셋이 위치할 볼륨과 등록될 카탈로그를 옵션으로 지정할 수 있다. 아무 옵션도 지정하지 않을 경우 마스터 카탈로그, 또는 Alias 정보로 원본 데이터셋을 검색한다.

사용법

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

Usage: dscopy [options] <source> <dest>
  • [options]

    옵션 설명

    [-c catalog]

    원본 데이터셋을 검색할 카탈로그를 지정한다.

    [-v volume]

    원본 데이터셋을 검색할 볼륨 시리얼을 지정한다. 이 옵션을 지정할 경우 -c 옵션은 무시되며, 복사된 데이터셋에 대해 카탈로그를 갱신하지 않는다.

    [-d catalog]

    복사된 데이터셋이 위치할 카탈로그를 지정한다. 이 옵션을 지정하지 않을 경우 원본 데이터셋이 카탈로그에 등록되어 있다면 복사된 데이터셋도 같은 카탈로그에 등록된다.

    [-t volume]

    복사된 데이터셋이 위치할 볼륨 시리얼을 지정한다. 이 옵션을 지정하지 않을 경우 기본 볼륨에 데이터셋을 복사한다.

  • 입력 항목

    항목 설명

    source

    원본 데이터셋 이름을 기술한다.

    dest

    복사된 데이터셋 이름을 기술한다.

사용예제

다음은 카탈로그된 데이터셋을 복사하는 예이다.

$ dscopy 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 . . : 2019/08/24      Data Set Owner  . : ROOT
    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  : 2019/08/24      Last Access Time  : 19:56:01

dscopy 프로그램 실행 후 TEST.DSCOPY02의 정보는 다음과 같다.

  Data Set Name . . . : TEST.DSCOPY02
  Data Set Type . . . : NONVSAM
  Catalog Name  . . . : SYS1.MASTER.ICFCAT

  Management Class  . :
    Creation Date . . : 2019/08/24      Data Set Owner  . : ROOT
    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  : 2019/08/24      Last Access Time  : 20:00:15

3. dscreate

dscreate는 Non-VSAM 데이터셋 생성에 필요한 아규먼트를 사용자로부터 직접 받아서 Non-VSAM 데이터셋을 신규로 생성하는 툴 프로그램이다.

사용법

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

Usage: dscreate [options] dsname
  • [options]

    옵션 설명

    [-c catalog]

    데이터셋을 특정 카탈로그에 등록하려고 할 때 지정한다.

    [-v volume]

    새로운 데이터셋이 위치하게 될 볼륨 정보를 지정한다.

    [-u unit]

    새로운 데이터셋이 할당될 UNIT의 유형을 지정한다.

    [-m member]

    PDS의 멤버 이름을 지정한다.

    [-o dsorg]

    데이터셋의 DSORG 파라미터를 지정한다.

    [-f recfm]

    데이터셋의 레코드 형식(RECFM) 파라미터를 지정한다.

    [-b blksize]

    데이터셋의 블록 크기를 지정한다.

    [-l lrecl]

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

    [-k keylen]

    데이터셋의 키 길이를 지정한다.

    [-s space]

    데이터셋의 공간 파라미터를 지정한다.

    • [TRK|CYL|unit] : TRK, CYL, 크기의 단위를 지정한다.

      • dsorg PS인 경우

        -s TRK,10,10
        -s CYL,100,50
      • dsorg PO인 경우

        -s TRK,10,10, 10
        -s CYL,100,50,50
    • primary : Primary Space 크기를 지정한다.

    • secondary : Secondary Space 크기를 지정한다.

    • directory : Directory Space 크기를 지정한다.

    [-p keypos]

    데이터셋의 키 위치를 지정한다.

    [-x expdt]

    데이터셋의 만료일자를 지정한다. (YYYYMMDD 형식)

    [-r retpd]

    데이터셋의 보존 기간을 지정한다. (보존 날짜 수)

    [-dc retpd]

    sms의 Data class를 지정한다.

    Data class는 OpenFrame 환경설정의 sms 서브젝트, DATACLAS 섹션에 정의된다.

    [-mc retpd]

    sms의 Management class를 지정한다.

    Management class는 OpenFrame 환경설정의 sms 서브젝트, MGMTCLAS 섹션에 정의된다.

    [-sc retpd]

    sms의 Storage class를 지정한다.

    Storage class는 OpenFrame 환경설정의 sms 서브젝트, STORCLAS 섹션에 정의된다.

    [-N]

    데이터셋을 신규로 생성하되 카탈로그에 등록하지 않고 VTOC에만 엔트리를 추가한다. (NOCATALOG 옵션)

    데이터셋을 신규로 생성하는 것이기 때문에 카탈로그에 엔트리가 이미 존재하고 있으면, 에러를 발생한다. 이 옵션을 지정할 때 [-R] (RECATALOG) 옵션은 지정할 수 없다.

    [-R]

    데이터셋을 생성하지 않고 카탈로그에 항목만 등록한다. (RECATALOG 옵션)

    이 옵션은 카탈로그에 이미 등록된 엔트리에 대해서 재등록하는 기능을 수행하기 때문에 카탈로그에 엔트리가 반드시 존재해야 한다. 존재하지 않을 경우 에러를 발생한다. 이 옵션을 지정할 때 [-N] (NOCATALOG) 옵션은 지정할 수 없다.

    이 옵션을 지정할 경우 -v 옵션으로 볼륨 시리얼을 지정해주어야 하며 그렇지 않을 경우 에러가 발생한다. 이미 같은 이름의 데이터셋이 카탈로그되어 있는 경우 요청한 데이터셋이 카탈로그 된 데이터셋 그 자신이 아닐 경우(예를 들어 카탈로그 항목과 이름은 같으나 다른 볼륨에 있는 데이터셋) 에러가 발생한다.

  • 입력 항목

    항목 설명

    dsname

    생성하려고 하는 데이터셋의 이름을 지정한다.

사용예제

다음은 100000 볼륨에 데이터셋을 신규로 생성하는 예이다.

$ dscreate AAA.BBB -v 100000 -f FB -l 120 -b 1200

다음은 데이터셋을 생성하면서 특정 사용자 카탈로그에 등록하는 예이다.

$ dscreate AAA.BBB -c USERCAT -f FB -l 120 -v 100000
관련 환경설정

Non-VSAM 데이터셋을 생성을 위해 OpenFrame 환경설정에 dstool 서브젝트, DSCREATE 섹션의 DUPLICATE_MEMBER_ERROR, DUPLICATE_CATALOG_ERROR, RECAT_UPDATE_DSATTR 키의 VAULE 항목에 설정한다.

$ ofconfig list -s dstool -sec DSCREATE

======================================================================================
    SUBJECT   |     SECTION      |         KEY             |          VALUE
======================================================================================
    dstool    |    DSCREATE      | DUPLICATE_CATALOG_ERROR |          YES
              |                  |  DUPLICATE_MEMBER_ERROR |          YES
              |                  |   RECAT_UPDATE_DSATTR   |          YES
======================================================================================

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

4. dsdelete

dsdelete는 기존에 존재하는 Non-VSAM 데이터셋을 삭제하는 툴 프로그램이다. 옵션으로 삭제할 데이터셋의 카탈로그와 볼륨 정보를 지정할 수 있으며 옵션을 지정하지 않을 경우 마스터 카탈로그 또는 Alias 정보를 이용해 대상 데이터셋을 찾는다. 카탈로그에 등록되지 않은 데이터셋을 삭제할 경우 반드시 볼륨을 지정해야 한다.

사용법

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

Usage: dsdelete [options] dsname
  • [options]

    옵션 설명

    [-c catalog]

    특정 카탈로그에 등록된 데이터셋을 삭제하려고 할 때 지정한다.

    [-v volume]

    삭제할 데이터셋이 위치한 볼륨 정보를 지정한다. 데이터셋이 카탈로그에 등록되어 있을 경우 카탈로그 엔트리는 삭제하지 않는다.

    [-m member]

    PDS의 멤버 이름을 지정한다.

    [-U]

    데이터셋을 제거하지 않고 카탈로그에 항목만 삭제한다. (UNCATALOG 옵션)

    UNCATALOG하면 데이터셋에 대한 정보는 VTOC에만 존재하게 된다. 따라서 UNCATALOG된 데이터셋을 사용하려면, 해당 엔트리가 속해있는 볼륨을 반드시 지정해 주어야 한다.

  • 입력 항목

    항목 설명

    dsname

    삭제할 데이터셋의 이름을 지정한다.

사용예제

다음은 100000 볼륨에 있는 데이터셋을 삭제하는 예이다.

$ dsdelete AAA.BBB -v 100000

다음은 특정 사용자 카탈로그에 등록된 데이터셋을 삭제하는 예이다.

$ dsdelete AAA.BBB -c USERCAT

5. dsedit

dsedit는 dsview처럼 데이터셋의 내용을 보여주고 추가로 데이터셋의 내용을 변경하는 기능을 제공하는 툴 프로그램이다. 데이터셋의 레코드 추가나 삭제는 불가능하며 기존 레코드의 내용 변경만 가능하다. 데이터셋 변경 작업 중에는 해당 데이터셋에 대한 독점적(Exclusive)인 Lock을 실행시킨다.

시용법

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

Usage: dsedit [options] <dsname> [<member>] [-v <volser>] [-c <catalog>]
  • [options]

    옵션 설명

    [-V]

    dsedit의 버전 정보를 조회한다.

  • 입력 항목

    항목 설명

    dsname

    변경할 데이터셋의 이름이다.

    [membe]

    변경할 데이터셋의 멤버 이름이다.

    [-v volser]

    변경할 데이터셋의 볼륨 시리얼을 지정한다. 변경할 데이터셋이 카탈로그에 등록되어 있지 않은 경우 이 옵션을 설정하여 지정한 볼륨 디렉터리에 존재하는 데이터셋을 찾아올 수 있다.

    [-c catalog]

    변경할 데이터셋이 사용자 카탈로그에 등록되어 있는 경우 이 옵션을 설정한다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터셋 이름만으로 찾을 수 있는 경우에는 이 옵션을 지정하지 않아도 된다. 자세한 내용은 OpenFrame Base "데이터셋 안내서"의 "통합 카탈로그의 카탈로그 관리"를 참고한다.

  • 명령어

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

    항목 설명

    <CTRL>+b

    이전 페이지로 이동한다.

    <CTRL>+f

    다음 페이지로 이동한다.

    ^

    현재 행의 첫 문자로 이동한다.

    $

    현재 행의 마지막 문자로 이동한다.

    125G

    125 라인으로 이동한다.

    :125

    125 라인으로 이동한다.

    G

    마지막 행으로 이동한다.

    h,j,k,l

    왼쪽, 위쪽, 아래쪽, 오른쪽으로 이동한다.

    숫자를 앞에 붙이면 숫자만큼 이동한다(예: 5h - 5칸 왼쪽으로 이동한다).

    /abc

    abc를 검색한다.

    /abc 5

    5행에서 abc를 검색한다.

    //616263

    Hexa code로 검색한다.

    n

    다음 내용을 검색한다.

    :s/old/new

    현재 커서가 위치한 레코드의 모든 old를 new로 치환한다.

    다음은 치환 명령어의 문법과 그에 대한 설명이다.

    :[%]s[x]/<매칭 문자열>/<치환 문자열>[/치환 위치]
    • % : 데이터셋의 모든 레코드에서 치환하려는 경우 지정한다. 지정하지 않으면 현재 레코드에서만 치환된다.

    • x : Hexa code로 치환하려는 경우 지정한다.

    • 매칭 문자열 : 치환 전 매칭 문자열을 입력한다. x를 지정한 경우 Hexa code를 기술한다.

    • 치환 문자열 : 치환 후 문자열을 입력한다. x를 지정한 경우 Hexa code를 기술한다.

    • 치환 위치 : 치환하려는 레코드의 위치를 Byte 단위로 기술한다. 1부터 시작하며 치환 위치를 입력하지 않거나 0을 입력한 경우에는 레코드 전체에서 치환된다.

    치환 명령의 제약사항은 다음과 같다.

    1. 매칭 문자열과 치환 문자열의 길이는 동일해야 한다.

    2. Hexa 문자열은 1Byte 당 2문자를 입력해야 하고 각 Byte는 공백 없이 붙여서 입력해야 한다.

    3. KSDS / ISAM 데이터셋의 경우 키 부분은 치환 처리되지 않는다.

    4. 가변(VB)포맷의 Non-VSAM 데이터셋이나 AIX PATH를 사용하는 VSAM 데이터셋에서는 치환기능을 사용할 수 없다.

    5. 치환 명령 실행 후에는 치환된 내용을 취소할 수 없으므로 주의한다.

    6. 치환 명령어 입력도중 명령어 수정은 불가하며 <ESC> 키를 눌러 명령어 입력 취소 후 재입력해야 한다.

    :s/old/new/5

    현재 커서가 위치한 레코드의 5Byte에 위치한 old를 new로 치환한다.

    :%s/old/new

    데이터셋의 전체 레코드에서 모든 old를 new로 치환한다.

    :sx/f1f1/e1e1

    현재 커서가 위치한 레코드의 모든 Hexa code 'f1f1’을 'e1e1’으로 치환한다.

    R

    Replace 모드의 시작이다. VSAM 데이터셋의 경우 Key 필드 부분에 대한 변경은 할 수 없다.

    ESC

    Replace한 내용을 저장한다.

    Backspace

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

    <CTRL>+l

    화면을 새로고침한다.

    :h

    도움말을 보여준다.

    :q

    종료한다.

사용예제

다음은 데이터셋에 속한 멤버의 내용을 변경하는 예이다.

$ dsedit AAA.PDS TESTPGM

지정한 볼륨에 위치한 데이터셋의 내용을 변경하는 예이다.

$ dsedit AAA.BBB -v DEFVOL

다음은 사용자 카탈로그에 등록되어 있는 데이터셋을 변경하고자 할 경우에 대한 예이다.

$ dsedit AAA.BBB -c USERCAT
관련 환경설정

카탈로그에 등록되어 있지 않은 Non-VSAM 데이터셋의 내용을 변경하기 위해 OpenFrame 환경설정에 다음의 설정을 한다.

  • dstool 서브젝트, DSVIEW 섹션의 NOCATALOG_VIEW 키의 VALUE 항목을 설정한다.

    $ ofconfig list -s dstool -sec DSVIEW -k NOCATALOG_VIEW
    
    =====================================================================================
        SUBJECT    |      SECTION      |            KEY           |        VALUE
    =====================================================================================
        dstool     |     DSVIEW        |       NOCATALOG_VIEW     |         YES
    =====================================================================================
  • NOCATALOG_VIEW=YES일 때 -v 옵션이 지정되지 않았을 경우 ds 서브젝트, DATASET_DEFAULT 섹션의 DEFAULT_VOLSER 키에 설정된 볼륨에서 해당 데이터셋을 찾는다.

    $ ofconfig list -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER
    
    =====================================================================================
        SUBJECT    |      SECTION      |            KEY           |        VALUE
    =====================================================================================
          ds       |  DATASET_DEFAULT  |       DEFAULT_VOLSER     |        DEFVOL
    =====================================================================================

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

6. dslist

dslist는 특정 볼륨에 있는 데이터셋에 대한 정보를 조회하거나 혹은 특정 카탈로그에 등록된 데이터셋에 대한 정보를 조회할 때 사용하는 툴이다.

dslist는 사용자의 옵션에 따라 다음과 같은 기능을 제공한다.

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

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

  • 생성일자, 마지막 참조일자 및 데이터셋 크기별로 조건을 주어서 조건에 해당하는 데이터셋 정보를 조회한다.

사용법

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

Usage: dslist [options] [dsname]
  • [options]

    옵션 설명

    [-c catalog]

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

    지정된 카탈로그에 등록된 데이터셋 정보만 조회된다.

    [-v volume]

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

    지정한 볼륨에 해당하는 데이터셋 정보만 조회된다.

    [-n dsname]

    조회할 단일 데이터셋 이름을 지정한다.

    해당 옵션은 단일 데이터셋을 조회할 때 사용되는 옵션으로 다수의 데이터셋을 조회하기 위해 와일드 카드 문자를 사용할 수 없다. 다수 데이터셋을 조회하는 경우 해당 옵션을 사용하면 안되고 조회할 데이터셋 이름을 직접 입력해야 한다.

    [-l]

    데이터셋에 대한 정보를 상세하게 출력한다.

    [-a]

    데이터셋에 대한 정보를 상세하게 출력하고, PDS 멤버에 대한 목록 및 연관되어 있는 카탈로그 항목을 출력한다.

    [-cd date]

    특정 날짜에 생성된 데이터셋의 목록을 출력한다.

    날짜는 YYYYMMDD 형식으로 지정하거나 YYYYMMDD-YYYYMMDD 형식으로 기간을 지정할 수도 있다.

    [-rd date]

    특정 날짜에 참조된 데이터셋의 목록을 출력한다.

    날짜는 YYYYMMDD 형식으로 지정하거나 YYYYMMDD-YYYYMMDD 형식으로 기간을 지정할 수도 있다.

    [-sz size]

    조회하고자 하는 데이터셋의 크기 범위를 MIN-MAX 형식으로 지정한다.

  • 입력 항목

    항목 설명

    [dsname]

    조회하고자 하는 데이터셋 이름의 앞글자 일부를 지정한다. 와일드 카드 문자를 사용할 수 있다.

    와일드 카드를 사용해서 조회할 데이터셋의 이름을 지정하는 경우 다음과 같이 사용할 수 있다.

    • AAA.*는 AAA.BBB나 AAA.CCC처럼 'AAA.'으로 시작하는 2개의 Qualifier로 구성된 데이터셋을 찾는다.

    • AAA.**는 AAA.BBB, AAA.CCC, AAA.BBB.FFF, AAA.BBB.GGG처럼 'AAA.'으로 시작하는 모든 데이터셋을 찾는다.

    • volume 디렉터리 내에서 항목을 조회할 때는 지정하는 항목 이름에 qoutation을 씌워서 조회해야 한다.

      $ dslist 'AAA.**'
사용예제

다음은 볼륨 100000에 속해 있는 데이터셋의 정보를 조회하는 예이다.

$ dslist -v 100000

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

Print Dataset List and Information

-----------------------------------------------------------------------------
  SYS1.VTOC.V100000                             VOLUME  DSORG  RECFM  LRECL
-----------------------------------------------------------------------------
  PROD.BATCHLIB                                 100000  PO     LB     32760
  SMLOG.N1                                      100000  PS     VB     32760
  SMLOG.N2                                      100000  PS     VB     32760
  SMLOG.N3                                      100000  PS     VB     32760
  SMLOG.N4                                      100000  PS     VB     32760
  SYS1.COBLIB                                   100000  PO     LB     32760
  SYS1.JCLLIB                                   100000  PO     LB     32760
  SYS1.PARMLIB                                  100000  PO     LB     32760
  SYS1.PROCLIB                                  100000  PO     LB     32760
  SYS1.TEMPLIB                                  100000  PO     LB     32760
  SYS1.TSOLIB                                   100000  PO     LB     32760
  SYS1.TSOMAP                                   100000  PO     LB     32760
  SYS1.USERLIB                                  100000  PO     LB     32760
-----------------------------------------------------------------------------
* Total 13 entries in volume 100000 printed.

다음은 위의 출력된 항목에 대한 설명이다.

항목 설명

카탈로그명

카탈로그에 등록되어 있는 데이터셋들의 이름을 표시한다.

VOLUME

데이터셋이 존재하는 볼륨 일련번호를 표시한다.

DSORG

데이터셋의 구조를 표시한다.

RECFM

데이터셋의 레코드의 포맷을 표시한다.

LRECL

데이터셋의 레코드 길이를 표시한다.

DSORG 항목과 관련된 데이터셋 구조의 자세한 내용 및 RECFM 항목과 관련된 레코드 포맷의 자세한 내용은 OpenFrame Base "데이터셋 안내서"의 "Non-VSAM 데이터셋"을 참고한다.

다음은 볼륨 100000에 속해 있는 데이터셋 중 이름이 SYS1으로 시작되는 데이터셋의 정보를 상세 조회하는 예이다.

$ dslist -v 100000 SYS1.** -a

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

Print Dataset List and Information

-----------------------------------------------------------------------------
  Data Set Name . . . : SYS1.JCLLIB
  Data Set Type . . . : NONVSAM

  Management Class  . :
    Creation Date . . : 2019/12/21      Data Set Owner  . : ROOT
    Expiration Date . : ***None***

  Storage Class . . . :
    Volume Serial . . : DEFVOL          Device Type . . . : 3380

  Data Class  . . . . :
    Organization  . . : PO              Record Format . . : LB
    KEYLEN  . . . . . : 0               Record Length . . : 32760
    KEYPOS  . . . . . : 0               Block Size  . . . : 32768

  Current Allocation
    Primary Space . . : N.A.            Number of Extents :
    Secondary Space . : N.A.            Data Set Size . . : 0

  Last Access Date
    Last Access Date  : ***None***      Last Access Time  : 17:45:38

  Members
  ------------------------------------------------------------------
  Name                  Owner     Size           Last Access Date
  ------------------------------------------------------------------
  TSTENV                          73             2019/12/21 17:45:39
  TSTSLEEP                        83             2019/12/21 17:45:39
-----------------------------------------------------------------------------
  Data Set Name . . . : SYS1.PROCLIB
  Data Set Type . . . : NONVSAM

  Management Class  . :
    Creation Date . . : 2019/12/21      Data Set Owner  . : ROOT
    Expiration Date . : ***None***

  Storage Class . . . :
    Volume Serial . . : DEFVOL          Device Type . . . : 3380

  Data Class  . . . . :
    Organization  . . : PO              Record Format . . : LB
    KEYLEN  . . . . . : 0               Record Length . . : 32760
    KEYPOS  . . . . . : 0               Block Size  . . . : 32768

  Current Allocation
    Primary Space . . : N.A.            Number of Extents :
    Secondary Space . : N.A.            Data Set Size . . : 0

  Last Access Date
    Last Access Date  : ***None***      Last Access Time  : 17:45:38

  Members
  ------------------------------------------------------------------
  Name                  Owner     Size           Last Access Date
  ------------------------------------------------------------------
  INITPROC                        516            2019/12/21 17:45:39
-----------------------------------------------------------------------------
* Total 2 entries in volume 100000 printed.

다음은 위의 출력된 항목에 대한 설명이다.

항목 설명

Data set Name

데이터셋의 이름을 표시한다.

Data set Type

데이터셋의 타입을 표시한다.

데이터셋 타입에 대한 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "데이터셋 소개"를 참고한다.

Management Class

데이터셋이 속해 있는 매니지먼트 클래스의 이름을 표시한다.

Creation Date

데이터셋의 생성일자를 표시한다.

Expiration Date

데이터셋의 만료일자를 표시한다.

Data Set Owner

데이터셋의 Owner ID를 표시한다.

Storage Class

데이터셋이 속해 있는 스토리지 클래스의 이름을 표시한다.

Volume Serial

데이터셋의 볼륨 일련번호를 표시한다.

Device Type

데이터셋의 디바이스 타입을 표시한다.

Data Class

데이터셋이 속해 있는 데이터 클래스의 이름을 표시한다.

Organization

데이터셋의 구조를 표시한다.

데이터셋의 구조 및 Record Format 항목과 관련된 레코드 포맷의 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "Non-VSAM 데이터셋"을 참고한다.

KEYLEN

데이터셋이 ISAM인 경우 KEY의 길이를 표시한다.

KEYPOS

데이터셋이 ISAM인 경우 KEY의 시작위치를 표시한다.

Record Format

데이터셋의 레코드의 포맷을 표시한다.

Record Length

데이터셋의 레코드 길이를 표시한다.

Block Size

데이터셋의 블록 사이즈를 표시한다.

Primary Space

데이터셋에 할당된 Primary Space의 크기를 표시한다.

Secondary Space

데이터셋에 할당된 Secondary Space의 크기를 표시한다.

Number of Extents

데이터셋의 Extents 가능 개수를 표시한다.

Data set Size

데이터셋의 물리적 크기를 Byte 단위로 표시한다.

Last Access Date

데이터셋에 접근한 최종 일자를 표시한다.

Last Access Time

데이터셋에 접근한 최종 시각을 표시한다.

7. dsload

dsload는 dsedit의 기능을 보완하기 위한 툴로 Non-VSAM 데이터셋을 UNIX 파일로 백업하는 기능을 제공한다. 백업한 파일을 내용을 수정한 후 dssave 툴을 사용하면 편집된 파일을 다시 Non-VSAM 데이터셋으로 갱신할 수 있다.

관련 툴 프로그램으로는 dssave가 있다.

사용법

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

Usage: dsload <dsname> [options]
  • 입력 항목

    항목 설명

    dsname

    백업할 데이터셋의 이름이다.

  • [options]

    옵션 설명

    [-v volser]

    백업할 데이터셋이 존재하는 볼륨 시리얼을 지정한다.

    [-c catalog]

    백업할 데이터셋이 사용자 카탈로그에 등록되어있는 경우에 설정한다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터셋 이름만으로 찾을 수 있는 경우에는 이 옵션을 지정하지 않아도 된다.

    [-m member]

    백업할 데이터셋의 멤버 이름이다.

    [-t target]

    target 파일의 UNIX 파일 경로이다.

    지정하지 않은 경우 아래의 환경설정 중 LOAD_DIR에 지정된 디렉터리를 target UNIX 파일 경로로 사용하고, 데이터셋 이름과 동일한 파일을 생성한다.

    [-d delimiter]

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

    특별히 newline으로 할 경우 ‘NEWLINE’이라고 지정한다. 지정하지 않은 경우 아래의 환경설정 중에 DELIMITER의 값을 참조한다.

    [-F]

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

사용예제

다음은 데이터셋을 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 %%
관련 환경설정

OpenFrame 환경설정의 dstool 서브젝트, DSLOAD 섹션에 다음의 설정을 한다.

  • DELIMITER 키의 VALUE 항목에 dsload할 때 레코드의 delimiter로 문자 또는 ‘NEWLINE’을 지정한다. DELIMITER와 [-d delimiter] 옵션을 둘 다 설정하지 않은 경우 delimiter는 NULL 스트링이다.

    $ ofconfig list -s dstool -sec DSLOAD  -k DELIMITER
    
    ======================================================================================
       SUBJECT   |     SECTION      |          KEY            |          VALUE
    ======================================================================================
       dstool    |    DSLOAD        |        DELIMITER        |           \r\n
    ======================================================================================
  • LOAD_DIR 키의 VALUE 항목에 dsload할 때 파일을 생성할 UNIX 디렉터리 경로를 지정한다. LOAD_DIR과 [-t target] 옵션을 둘 다 설정하지 않은 경우 에러가 발생한다.

    $ ofconfig list -s dstool -sec DSLOAD  -k LOAD_DIR
    
    ======================================================================================
       SUBJECT   |     SECTION      |          KEY            |          VALUE
    ======================================================================================
       dstool    |    DSLOAD        |        LOAD_DIR         |/home/tmax/oframe_7_1/temp
    ======================================================================================
  • SIZE_LIMIT 키의 VALUE 항목에 dsload할 때 데이터셋의 크기를 제한할 값을 설정한다. 설정된 값보다 작은 크기의 데이터셋만 사용 가능하다. 0보다 큰 수를 Byte 단위로 지정한다.

    $ ofconfig list -s dstool -sec DSLOAD  -k SIZE_LIMIT
    
    ======================================================================================
       SUBJECT   |     SECTION      |          KEY            |          VALUE
    ======================================================================================
       dstool    |    DSLOAD        |        SIZE_LIMIT       |           1000000
    ======================================================================================

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

8. dsmove

dsmove는 데이터셋을 이동시키는 기능을 하는 툴이다. 원본 데이터셋을 검색하기 위한 카탈로그와 볼륨 정보, 데이터셋을 이동할 볼륨과 새롭게 등록될 카탈로그를 옵션으로 지정할 수 있으며, 아무 옵션도 지정하지 않을 경우 마스터 카탈로그, 또는 Alias 정보로 원본 데이터셋을 찾는다. 이동된 데이터셋의 생성일자는 원본 데이터셋의 생성일자를 유지한다.

사용법

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

Usage: dsmove [options] <source> <dest>
  • [options]

    옵션 설명

    [-c catalog]

    원본 데이터셋을 검색할 카탈로그를 지정한다.

    [-v volume]

    원본 데이터셋을 검색할 볼륨 시리얼을 지정한다. 이 옵션을 지정할 경우 -c 옵션은 무시되며, 원본 데이터셋과 이동된 데이터셋에 대해 카탈로그는 갱신하지 않는다.

    [-t volume]

    데이터셋을 이동할 볼륨 시리얼을 지정한다. 이 옵션을 지정하지 않을 경우 기본 볼륨에 데이터셋을 이동한다.

    [-d catalog]

    데이터셋을 이동할 카탈로그를 지정한다. 이 옵션을 지정하지 않을 경우 원본 데이터셋이 카탈로그에 등록되어 있다면 이동된 데이터셋도 같은 카탈로그에 등록된다.

  • 입력 항목

    항목 설명

    source

    원본 데이터셋 이름을 기술한다. 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 . . : 2019/02/03      Data Set Owner  . : ROOT
    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  : 2019/02/03      Last Access Time  : 12:56:46

dsmove 프로그램을 실행한 후 TEST.DSMOVE01의 정보는 다음과 같다.

  Data Set Name . . . : TEST.DSMOVE01
  Data Set Type . . . : NONVSAM
  Catalog Name  . . . : SYS1.MASTER.ICFCAT

  Management Class  . :
    Creation Date . . : 2019/02/03      Data Set Owner  . : ROOT
    Expiration Date . : ***None***

  Storage Class . . . :
    Volume Serial . . : 200000          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  : 2019/02/03      Last Access Time  : 12:58:43

위의 예제에서 데이터셋 TEST.DSMOVE01의 볼륨이 100000에서 200000으로 바뀌었다.

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

$ 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 . . : 2019/02/03      Data Set Owner  . : ROOT
    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 . . : N.A.            Number of Extents : N.A.
    Secondary Space . : N.A.            Data Set Size . . : 0

  Last Access Date
    Last Access Date  : 2019/02/03      Last Access Time  : 13:04:40

데이터셋 TEST.DSMOVE02는 삭제되고, 데이터셋 TEST.DSMOVE03이 생성된다. TEST.DSMOVE03의 정보는 다음과 같다.

  Data Set Name . . . : TEST.DSMOVE03
  Data Set Type . . . : NONVSAM
  Catalog Name  . . . : SYS1.MASTER.ICFCAT

  Management Class  . :
    Creation Date . . : 2019/02/03      Data Set Owner  . : ROOT
    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 . . : 4096(KB)        Number of Extents : 0
    Secondary Space . : 4096(KB)        Data Set Size . . : 0

  Last Access Date
    Last Access Date  : 2019/02/03      Last Access Time  : 13:05:16

위의 예제에서 새로운 데이터셋 이름은 TEST.DSMOVE03으로 변경되고 기본 볼륨에 등록된다.

9. dssave

dssave는 dsedit의 기능을 보완하기 위한 툴로 UNIX 파일의 내용으로 기존에 존재하는 Non-VSAM 데이터셋을 갱신한다. dssave 툴 프로그램을 사용하면 새로운 데이터셋을 생성하지는 않고, 기존에 이미 카탈로그에 등록되어 있는 데이터셋의 내용에 덮어쓰기를 한다.

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

사용법

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

Usage: dssave <dsname> [options]
  • 입력 항목

    항목 설명

    dsname

    갱신하려고 하는 데이터셋의 이름이다.

  • [options]

    옵션 설명

    [-c catalog]

    갱신하려고 하는 데이터셋이 사용자 카탈로그에 등록되어 있는 경우에 설정한다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터셋 이름만으로 찾을 수 있는 경우에는 이 옵션을 지정하지 않아도 된다.

    [-v volser]

    갱신하려고 하는 데이터셋의 볼륨 시리얼이다.

    [-m member]

    갱신하려고 하는 데이터셋의 멤버 이름이다.

    [-s source]

    소스 파일의 UNIX 파일 경로를 지정한다.

    지정하지 않은 경우 환경설정 중 LOAD_DIR에 지정된 디렉터리를 소스 UNIX 파일 경로로 사용하고, 이 디렉터리에서 데이터셋 이름으로 파일을 찾는다.

    [-d delimiter]

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

    특별히 newline으로 하고자 하는 경우 ‘NEWLINE’이라고 지정한다. 지정하지 않은 경우 아래의 환경설정 중에 DELIMITER의 값을 참조한다.

    [-B blank]

    적용 데이터셋의 레코드 포맷(RECFM)이 고정 길이(FB)일 때 소스 파일의 한 레코드의 길이가 짧다면 그 길이만큼 레코드의 뒷 부분을 스페이스로 채워준다.

    [-R remove]

    데이터셋으로 갱신하고 난 후 소스 파일을 삭제한다.

    [-T test]

    소스 파일을 데이터셋으로 갱신할 수 있는지와 레코드의 길이, 포맷, 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

다음은 UNIX 파일을 데이터셋으로 갱신할 수 있는지 확인하는 예이다.

$ dssave AAA.BBB -T
관련 환경설정

OpenFrame 환경설정의 dstool 서브젝트, DSLOAD 섹션에 다음의 키의 VALUE 항목을 설정한다.

  • DELIMITER 키의 VALUE 항목에 dssave할 때 레코드의 delimiter로 문자 또는 ‘NEWLINE’을 지정한다. DELIMITER와 [-d delimiter] 옵션을 둘 다 설정하지 않은 경우 delimiter는 NULL 스트링이다.

    $ ofconfig list -s dstool -sec DSLOAD  -k DELIMITER
    
    ======================================================================================
        SUBJECT   |     SECTION     |          KEY           |           VALUE
    ======================================================================================
        dstool    |     DSLOAD      |        DELIMITER       |          \r\n
    ======================================================================================
  • LOAD_DIR 키의 VALUE 항목에 dssave할 때 소스 파일의 UNIX 디렉터리 경로를 지정한다. LOAD_DIR과 [-s source] 옵션을 둘 다 설정하지 않은 경우 에러가 발생한다.

    $ ofconfig list -s dstool -sec DSLOAD  -k LOAD_DIR
    
    ======================================================================================
        SUBJECT   |     SECTION     |          KEY           |           VALUE
    ======================================================================================
        dstool    |     DSLOAD      |         LOAD_DIR       | /home/tmax/oframe_7_1/temp
    ======================================================================================

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

10. dsrdb

dsrdb는 데이터셋을 할당할 때 생성되는 DCB(Data Control Block) 구조체의 저장 공간인 OFM_BASE_ALLOC 시스템 테이블에 대해 정보를 조회하고, 삭제하는 등의 관리를 도와주는 툴이다.

데이터셋의 할당 후 기록되는 목록은 자동으로 재사용이 되는 구조로 설계되어 있어서 정상적으로 OpenFrame이 운영될 경우에는 특별히 주의할 필요가 없으나, 비정상적인 프로그램의 종료 등으로 인하여 할당 테이블에 불필요한 목록이 남아있을 수 있다. 이 목록이 지나치게 많아지는 경우 DSALC_ERR_NO_AVAILABLE_SLOT 에러가 발생하는데, 이런 경우에는 dsrdb 프로그램으로 사용되지 않는 데이터셋 할당 공간을 삭제하거나 OpenFrame을 재기동하면 문제를 해결할 수 있다.

시스템이 불안정하여 작업이 비정상적으로 종료되는 경우가 빈번하거나, 재부팅을 하지 않고 오랜 기간동안 OpenFrame을 운영하는 경우에는 가끔씩 데이터셋 할당 목록을 확인해 줄 것을 권장한다.

사용법

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

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

    항목 설명

    command

    • list : 할당된 데이터셋의 목록을 조회한다.

    • delete : 할당되 데이터셋을 할당 해제하고 목록에서 삭제한다.

  • [options]

    옵션 설명

    [-a]

    공유 메모리에 저장된 정보를 상세하게 출력한다.

    [-i index]

    조회하거나 삭제할 공유 메모리의 인덱스를 지정한다.

    [-r from to]

    조회하거나 삭제할 공유 메모리의 범위를 지정한다.

    [-d date]

    조회하거나 삭제할 공유 메모리의 할당 일자를 지정한다.

    [-j jobid]

    조회하거나 삭제할 공유 메모리의 작업 ID를 지정한다.

    [-p pid]

    조회하거나 삭제할 공유 메모리의 할당 PID를 지정한다.

    [-n name]

    조회하거나 삭제할 공유 메모리의 데이터셋 이름을 지정한다.

    [all]

    allocate된 데이터셋 목록을 모두 삭제한다. delete 명령에서만 사용할 수 있다.

사용예제

다음은 데이터셋 할당에 사용되는 공유 메모리의 목록을 조회하는 예이다.

$ dsrdb list

위의 프로그램을 실행하면 다음과 같은 목록이 출력된다.

Dataset allocation table Slot Mangement Program

[000000] JOBID=,DATE=20191209,PID=26446,DCB_NAME=SYS1.MASTER.ICFCAT:SMLOG.N1
*** Total 1 allocation items printed.

11. dstouch

dstouch는 카탈로그나 VTOC에 저장된 데이터셋의 통계정보(총 레코드 개수, 데이터셋 크기) 및 생성일자를 갱신하는 툴이다. 데이터셋의 실제 총 레코드 개수가 카탈로그에 저장되어 있는 개수와 다른 경우 실제 레코드 개수로 카탈로그의 정보를 갱신한다.

사용법

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

Usage: dstouch dsname [member] [-v volser] [-c catalog] [-d date]
  • 입력 항목

    항목 설명

    dsname

    정보를 갱신하려고 하는 데이터셋의 이름을 지정한다. PDS의 경우 멤버를 지정하지 않으면 PDS 정보만 갱신된다.

    [member]

    정보를 갱신하려고 하는 데이터셋의 멤버 이름을 지정한다.

    [-v volser]

    데이터셋이 위치한 볼륨 시리얼을 지정한다. 데이터셋이 카탈로그에 등록되어 있지 않은 경우 반드시 지정해 주어야 한다.

    [-c catalog]

    데이터셋이 사용자 카탈로그에 등록되어있는 경우 지정한다. 단, 사용자 카탈로그 alias가 설정되어 있어서 데이터셋 이름만으로 사용자 카탈로그를 찾을 수 있는 경우에는 이 옵션을 지정하지 않아도 된다.

    자세한 내용은 OpenFrame Base "데이터셋 안내서"의 "통합 카탈로그의 카탈로그 관리"를 참고한다.

    [-d date]

    정보를 갱신하려고 하는 데이터셋의 생성일자를 지정한다.

    (YYYYMMDD 형식)

사용예제

다음은 카탈로그되어 있는 TEST.AAA 데이터셋의 총 레코드의 개수를 갱신하는 예이다.

$ dstouch TEST.AAA

다음은 카탈로그되어 있는 PDS TEST.BBB의 정보를 갱신하는 예이다.

$ dstouch TEST.BBB

다음은 카탈로그되어 있는 PDS TEST.CCC의 멤버 MEMBER01의 정보를 갱신하는 예이다.

$ dstouch TEST.CCC MEMBER01

다음은 사용자 카탈로그 USERCAT에 등록되어 있는 TEST.DDD 데이터셋의 총 레코드 개수를 갱신하는 예이다.

$ dstouch TEST.DDD -c USERCAT

다음은 TEST.EEE 데이터셋의 총 레코드 개수를 갱신하고 생성일자 2007년4월30일로 변경하는 예이다.

$ dstouch TEST.EEE -d 20070430

데이터셋에 대한 자세한 내용은 OpenFrame Base "데이터셋 안내서"를 참고한다.

12. dsview

dsview는 데이터셋의 내용을 보여주는 툴 프로그램으로 특정문자의 검색, Hex code 조회 등의 기능을 추가로 제공한다.

사용법

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

Usage: dsview [options] <dsname> [<member_name>] [-v <volser>] [-c <catalog>]
  • [options]

    옵션 설명

    [-V]

    dsview의 버전 정보를 조회한다.

    [-n]

    Lock을 실행하지 않고 데이터셋을 조회한다. 따라서 데이터셋을 보고 있는 중이라도 다른 사용자가 해당 데이터셋의 내용을 변경할 수 있다.

  • 입력 항목

    항목 설명

    dsname

    조회할 데이터셋의 이름을 지정한다.

    [member_name]

    조회할 데이터셋의 멤버 이름을 지정한다.

    [-v volser]

    조회할 데이터셋의 볼륨 시리얼을 지정한다. 조회할 데이터셋이 카탈로그에 등록되어 있지 않은 경우 이 옵션을 설정하여 지정한 볼륨 디렉터리에 존재하는 데이터셋을 볼 수 있다.

    [-c catalog]

    조회할 데이터셋이 사용자 카탈로그에 등록되어있는 경우 이 옵션을 설정한다. 단, 사용자 카탈로그에 alias가 설정되어 있어서 데이터셋 이름만으로 찾을 수 있는 경우에는 이 옵션을 지정하지 않아도 된다.

    [-fn,--from N]

    시작 레코드 번호를 지정한다. 1부터 시작한다.

    [-tn,--to N]

    끝 레코드 번호를 지정한다. 1부터 시작하며, --from과 함께 사용하는 경우 해당 값보다 커야 한다.

    자세한 내용은 OpenFrame Base "데이터셋 안내서"의 "통합 카탈로그의 카탈로그 관리"를 참고한다.

  • 명령어

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

    항목 설명

    <CTRL>+b

    이전 페이지로 이동한다.

    <CTRL>+f

    다음 페이지로 이동한다.

    ^

    현재 행의 첫 문자로 이동한다.

    $

    현재 행의 마지막 문자로 이동한다.

    125G

    125 라인으로 이동한다.

    :125

    125 라인으로 이동한다.

    G

    마지막 행으로 이동한다.

    h,j,k,l

    왼쪽, 위쪽, 아래쪽, 오른쪽으로 이동한다.

    숫자를 앞에 붙이면 숫자만큼 이동한다(예: 5h - 5칸 왼쪽으로 이동한다).

    /abc

    abc를 검색한다.

    /abc 5

    5행에서 abc를 검색한다.

    //616263

    Hexa code로 검색한다.

    n

    다음 내용을 검색한다.

    N

    이전 내용을 검색한다.

    <CTRL>+l

    화면을 새로고침한다.

    :h

    도움말을 보여준다.

    :q

    종료한다.

사용예제

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

$ dsview AAA.PDS TESTPGM

다음은 지정한 볼륨에 위치한 데이터셋의 내용을 보여주는 예이다.

$ dsview AAA.BBB -v DEFVOL

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

$ dsview AAA.BBB -c USERCAT
관련 환경설정

카탈로그에 등록되어 있지 않은 Non-VSAM 데이터셋의 내용을 보기 위해서는 OpenFrame 환경설정에 다음의 설정을 한다.

  • dstool 서브젝트, DSVIEW 섹션의 NOCATALOG_VIEW 키의 VALUE 항목을 설정한다.

    $ ofconfig list -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER
    
    =====================================================================================
        SUBJECT    |      SECTION      |            KEY           |        VALUE
    =====================================================================================
          ds       |  DATASET_DEFAULT  |       DEFAULT_VOLSER     |        DEFVOL
    =====================================================================================
  • NOCATALOG_VIEW=YES일 때 -v 옵션이 지정되지 않았을 경우 ds 서브젝트, DATASET_DEFAULT 섹션의 DEFAULT_VOLSER 키에 설정된 볼륨에서 해당 데이터셋을 찾는다.

    $ ofconfig list -s ds -sec DATASET_DEFAULT -k DEFAULT_VOLSER
    
    =====================================================================================
        SUBJECT    |      SECTION      |            KEY           |        VALUE
    =====================================================================================
          ds       |  DATASET_DEFAULT  |       DEFAULT_VOLSER     |        DEFVOL
    =====================================================================================
  1. 데이터셋에 대한 자세한 내용은 OpenFrame Base "데이터셋 안내서"를 참고한다.

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

13. gdgcreate

gdgcreate는 GDG 항목 생성에 필요한 파라미터를 사용자로부터 직접 받아서 GDG 항목을 신규로 생성하는 툴 프로그램이다.

사용법

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

Usage: gdgcreate [options] gdgname
  • [options]

    옵션 설명

    [-c catalog]

    GDG 항목을 특정 카탈로그에 등록하려고 할 때 지정한다.

    [-l limit]

    GDG LIMIT 값을 설정한다. 지정하지 않는 경우 255의 값이 설정된다.

    [-x expdt]

    GDG 항목의 만료일자를 지정한다. (YYYYMMDD 형식)

    [-E empty]

    GDS 생성 시 GDG의 LIMIT 값을 초과할 때 카탈로그의 GDG 엔트리에서 GDS Association 정보를 제거하는 범위를 지정한다.

    • EMPTY : GDG 엔트리에서 가장 최근에 생성한 GDS를 제외한 나머지 GDS Association 정보를 제거한다.

    • NOEMPTY : GDG 엔트리에서 가장 오래된 GDS Association 정보만 제거한다. (기본값)

    [-S scratch]

    EMPTY/NOEMPTY 옵션 처리에 의해 카탈로그의 GDG 엔트리에서 Association 정보가 제거된 GDS에 대해 수행할 조치로 GDS를 물리적으로 삭제한다.

    [-NS noscratch]

    EMPTY/NOEMPTY 옵션 처리에 의해 카탈로그의 GDG 엔트리에서 Association 정보가 제거된 GDS에 대해 수행할 조치로 GDS를 일반 Non-VSAM 데이터셋으로 취급하여 다시 카탈로그에 등록한다.

  • 입력 항목

    항목 설명

    gdgname

    생성하려고 하는 GDG 항목의 이름을 지정한다.

사용예제

다음은 GDG LIMIT가 12인 GDG 항목을 생성하는 예이다.

$ gdgcreate TEST.GDGBASE -l 12

다음은 GDG 항목을 특정 사용자 카탈로그에 등록하는 예이다.

$ gdgcreate TEST.GDGBASE -c USERCAT

14. gdgdelete

gdgdelete는 기존에 등록된 GDG 항목을 삭제하는 툴 프로그램이다.

사용법

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

Usage: gdgdelete [options] gdgname
  • [options]

    옵션 설명

    [-c catalog]

    특정 카탈로그에 등록된 GDG 항목을 삭제하려고 할 때 지정한다.

    [-F]

    연관된 GDS이 존재할 때 함께 삭제한다. (FORCE 옵션)

  • 입력 항목

    항목 설명

    gdgname

    삭제할 GDG 항목의 이름을 지정한다.

사용예제

다음은 GDG 항목을 GDS과 함께 삭제하는 예이다.

$ gdgdelete TEST.GDGBASE -F

다음은 특정 사용자 카탈로그에 등록된 GDG 항목을 삭제하는 예이다.

$ gdgdelete TEST.GDGBASE -c USERCAT

15. idcams

idcams는 IDCAMS 유틸리티의 기능을 UNIX 셸에서 직접 실행할 수 있도록 만든 툴이다.

idcams 툴 프로그램을 이용하면 VSAM 데이터셋 혹은 사용자 카탈로그를 생성하거나 삭제할 수 있고, REPRO 명령을 이용해서 데이터셋을 복사할 수 있다.

  1. REPRO 명령의 [-i] 옵션으로 지정되는 input 데이터셋 -o 옵션으로 지정되는 output 데이터셋은 JCL DD 문에 'DISP=OLD’를 지정하는 것과 마찬가지로 배타적으로 할당된다.

  2. Non-VSAM 데이터셋의 생성과 삭제 및 GDG 항목의 생성과 삭제 기능은 idcams 툴 프로그램에서는 제공하지 않는다. 대신 dscreate, dsdelete, gdgcreate, gdgdelete 등 별도 툴 프로그램을 제공한다.

사용법

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

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

    항목 설명

    command

    • define : VSAM 데이터셋이나 사용자 카탈로그를 정의한다.

    • delete : VSAM 데이터셋이나 사용자 카탈로그를 삭제한다.

    • repro : VSAM 혹은 Non-VSAM 데이터셋의 내용을 복사한다.

    • libgen : VSAM 데이터셋의 Shared Object 파일을 재생성한다.

  • 사용자 카탈로그 정의 옵션

    옵션 설명

    [-t type]

    사용자 카탈로그를 정의함을 명시한다.

    type 항목은 -t 옵션 없이 지정 가능하다.

    • USERCATALOG

    • UCAT

    [-n name]

    정의할 사용자 카탈로그의 이름을 지정한다.

    [-v volume]

    사용자 카탈로그가 위치하게 될 볼륨 정보를 지정한다.

    [-s space]

    데이터셋의 공간 파라미터를 지정한다.

    • [TRK|CYL|unit] : TRK, CYL, 크기의 단위를 지정한다.

      -s TRK,10,10
      -s CYL,100,50
    • primary : Primary Space 크기를 지정한다.

    • secondary : Secondary Space 크기를 지정한다.

  • ALIAS 정의 옵션

    옵션 설명

    [-t type]

    ALIAS를 정의함을 명시한다.

    type 항목은 -t 옵션 없이 지정 가능하다.

    • ALIAS

    [-n name]

    정의할 ALIAS의 이름을 지정한다.

    [-r relate]

    ALIAS에 연결될 카탈로그 항목의 이름을 지정한다.

  • VSAM 데이터셋 정의 옵션

    옵션 설명

    [-t type]

    VSAM 데이터셋을 정의함을 명시한다.

    type 항목은 -t 옵션 없이 지정 가능하다.

    • CLUSTER

    • CL

    [-n name]

    정의할 VSAM 데이터셋의 이름을 지정한다.

    [-o recorg]

    정의할 VSAM 데이터셋의 구조를 지정한다.

    • KS

    • ES

    • RR

    [-v volume]

    VSAM 데이터셋이 위치하게 될 볼륨 정보를 지정한다.

    [-s space]

    데이터셋의 공간 파라미터를 지정한다.

    • [TRK|CYL|unit]

    • primary

    • secondary

    [-c catalog]

    데이터셋을 특정 카탈로그에 등록하려고 할 때 지정한다.

    [-l lrecl]

    VSAM 데이터셋의 레코드 크기를 지정한다. (average, maximum)

    [-k keys]

    VSAM 데이터셋의 키 정보를 지정한다. (length, offset)

    [-O occurs]

    OCCURS 필드 각각을 컬럼으로 지정한다.

  • 보조 인덱스 정의 옵션

    옵션 설명

    [-t type]

    보조 인덱스를 정의함을 명시한다.

    type 항목은 -t 옵션 없이 지정 가능하다.

    • ALTERNATEINDEX

    • AIX

    [-n name]

    정의할 보조 인덱스의 이름을 지정한다.

    [-r relate]

    보조 인덱스에 연결될 Base Cluster 이름을 지정한다.

    [-v volume]

    보조 인덱스가 위치하게 될 볼륨 정보를 지정한다.

    [-s space]

    보조 인덱스의 공간 파라미터를 지정한다.

    • [TRK|CYL|unit]

    • primary

    • secondary

    [-c catalog]

    보조 인덱스를 특정 카탈로그에 등록하려고 할 때 지정한다.

    [-l lrecl]

    보조 인덱스의 레코드 크기를 지정한다. (average, maximum)

    [-k keys]

    Base Cluster에서 보조 인덱스 키 정보를 지정한다. (length, offset)

    [-U]

    Base Cluster에서 AIX 키값이 유일한 값을 갖는지 지정한다.

    (UNIQUEKEY 속성)

  • PATH 정의 옵션

    옵션 설명

    [-t type]

    PATH를 정의함을 명시한다.

    type 항목은 -t 옵션 없이 지정 가능하다.

    • PATH

    [-n name]

    정의할 PATH의 이름을 지정한다.

    [-p pathentry]

    PATH를 구성하는 카탈로그 항목의 이름을 지정한다.

    [-c catalog]

    VSAM 데이터셋 혹은 보조 인덱스를 담고 있는 카탈로그를 지정한다.

  • 삭제 옵션

    옵션 설명

    [-n name]

    삭제할 항목의 이름을 지정한다.

    name 항목은 -n 옵션 없이 지정 가능하다.

    [-t type]

    삭제할 항목의 유형을 지정한다.

    • ALIAS

    • AIX

    • CL

    • PATH

    • UCAT

    [-c catalog]

    삭제할 항목을 담고 있는 카탈로그를 지정한다.

    [-F]

    비어있지 않은 항목도 삭제하기 위해 지정한다. (FORCE 옵션)

  • REPRO 옵션

    옵션 설명

    [-i ids]

    복사할 항목 이름을 지정한다. (input 데이터셋으로 AIX는 사용할 수 없음)

    [-o ods]

    타겟 데이터셋 이름을 지정한다.

    [-e elimit]

    REPRO 과정 중 허용할 에러의 갯수를 지정한다.

    [-f from]

    소스 데이터셋에서 복사를 시작할 위치를 지정한다.

    [-t to]

    복사 중인 데이터셋에서 복사를 중지할 위치를 지정한다.

    [-r ridtype]

    from 값과 to 값을 지정하는 방식을 지정한다.

    • KEY

    • NUM

    • ADDR

    [-s skip]

    레코드를 복사하기 전 건너뛸 레코드의 개수를 지정한다.

    [-c count]

    복사할 레코드의 개수를 지정한다.

    [-k keep]

    tbloader를 사용하기 위해 생성했던 파일들을 삭제하지 않고 유지할지 지정한다.

    [-R replace]

    타겟 데이터셋에 있는 레코드를 교체할지 지정한다. (REPLACE 옵션)

    [-C catalog]

    작업 파일이 정의될 카탈로그를 지정한다.

    [-bs] <n>

    tbloader의 block size를 지정한다.

    [-pc] <n>

    tbloader의 parallel count를 지정한다.

  • LIBGEN 옵션

    옵션 설명

    [-n name]

    Shared Object 파일을 재생성할 항목의 이름을 지정한다.

    [-t type]

    삭제할 항목의 유형을 지정한다.

    type 항목은 -t 옵션 없이 지정 가능하다.

    • CL

    • AIX

    • IS

    • ALL

    [-c catalog]

    Shared Object 파일을 재생성할 항목을 담고 있는 카탈로그를 지정한다.

    [-v volume]

    Shared Object 파일을 재생성할 ISAM 데이터셋을 담고 있는 볼륨을 지정한다. 카탈로그에 등록되지 않은 ISAM일 경우 반드시 지정해야 한다.

사용예제

다음은 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 . . : 2019/08/25      Data Set Owner  . : ROOT
    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**

다음은 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 . . : 2019/08/25      Data Set Owner  . : ROOT
    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

  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 . . : 2019/08/25      Data Set Owner  . : ROOT
    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 . . : 2019/08/25      Entry Owner . . . : ROOT
    Expiration Date . : ***None***

  Associations
    AIX . . . . . . . : TEST.AIX

다음은 USERCAT1에 등록된 TEST.KSDS를 삭제하는 예이다.

$ idcams delete TEST.KSDS -c USERCAT1

다음은 USERCAT1 카탈로그를 삭제하는 예이다.

$ idcams delete -n USERCAT1

다음은 TEST.ISAM 데이터셋으로부터 TEST.KSDS에 키값이 "AAAA"부터 "FFFF"까지인 레코드를 복사하는 예이다.

$ idcams repro -i TEST.ISAM -o TEST.KSDS -f AAAA -t FFFF -r KEY

다음은 TEST.KSDS의 Shared Object 파일을 재생성하는 예이다.

$ idcams libgen CL -n TEST.KSDS

다음은 TEST.AIX의 Shared Object 파일을 재생성하는 예이다.

$ idcams libgen AIX -n TEST.AIX

다음은 카탈로그에 등록된 TEST.ISAM의 Shared Object 파일을 재생성하는 예이다.

$ idcams libgen IS -n TEST.ISAM

다음은 카탈로그에 등록되지 않은 TEST.ISAM의 Shared Object 파일을 재생성하는 예이다.

$ idcams libgen IS -n TEST.ISAM -v DEFVOL

다음은 시스템의 모든 CLUSTER, AIX, ISAM의 Shared Object 파일을 재생성하는 예이다.

$ idcams libgen ALL

16. listcat

listcat은 특정 카탈로그에 등록된 항목에 대한 정보를 출력하는 툴이다.

사용법

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

Usage: listcat [options] [entname]
  • [options]

    옵션 설명

    [-c catalog]

    특정 카탈로그에 등록된 항목을 조회할 때 사용된다. 지정된 카탈로그에 등록된 항목 정보만 조회된다.

    [-n entname]

    조회할 단일 항목 이름을 지정한다. 해당 옵션은 단일 데이터셋을 조회할 때 사용되는 옵션으로 다수의 항목을 조회하기 위해 와일드 카드 문자를 사용할 수 없다. 다수 항목을 조회하는 경우 해당 옵션을 사용하면 안되고 조회할 항목 이름을 직접 입력해야 한다.

    [-l]

    카탈로그 항목에 대한 정보를 상세하게 출력한다.

    [-a]

    카탈로그 항목에 대한 정보를 정보를 상세하게 출력하고, 연관되어 있는 카탈로그 항목도 같이 출력된다. PDS인 경우 멤버에 대한 목록이 출력된다.

  • 입력 항목

    항목 설명

    [entname]

    조회할 항목 이름의 앞글자 일부를 지정한다.

    와일드 카드 문자를 사용할 수 있다. 와일드 카드를 사용해서 조회할 항목 이름을 지정하는 경우 다음과 같이 사용할 수 있다.

    • AAA.*는 AAA.BBB나 AAA.CCC처럼 'AAA.'으로 시작하는 2개의 Qualifier로 구성된 항목을 찾는다.

    • AAA.**는 AAA.BBB, AAA.CCC, AAA.BBB.FFF, AAA.BBB.GGG처럼 'AAA.'으로 시작하는 모든 항목을 찾는다.

    • volume 디렉터리 내에서 항목을 조회할 때는 지정하는 항목 이름에 qoutation을 씌워서 조회해야 한다.

      $ listcat 'AAA.**'
사용예제

다음은 마스터 카탈로그에 등록된 항목 정보를 조회하는 예이다.

$ listcat -c SYS1.MASTER.ICFCAT

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

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.

다음은 위의 출력된 항목에 대한 설명이다.

항목 설명

카탈로그명

카탈로그에 등록되어 있는 항목들의 이름을 표시한다.

VOLUME

조회한 항목이 존재하는 볼륨의 이름을 표시한다.

ENTTYPE

조회한 항목의 타입을 표시한다.

조회 항목 타입의 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "통합 카탈로그"를 참고한다.

VSAM

조회한 항목의 VSAM 타입을 표시한다.

VSAM 타입의 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "VSAM 데이터셋"을 참고한다.

NVSAM

조회한 항목의 Non-VSAM 타입을 표시한다.

Non-VSAM 타입의 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "Non-VSAM 데이터셋"을 참고한다.

다음은 사용자 카탈로그 IYA.UCAT에 등록된 항목 중 IYA.NONVSAM 데이터셋에 대한 정보를 상세 조회하는 예이다.

$ listcat -c IYA.UCAT -l IYA.NONVSAM

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

List Catalog Entry Information

-----------------------------------------------------------------------------
  Data Set Name . . . : IYA.NONVSAM
  Data Set Type . . . : NONVSAM
  Catalog Name  . . . : IYA.UCAT

  Management Class  . :
    Creation Date . . : 2019/07/14      Data Set Owner  . : ROOT
    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  : 2019/07/14      Last Access Time  : 11:38:51
-----------------------------------------------------------------------------
* Total 1 entries in catalog IYA.UCAT printed.

다음은 VSAM 데이터셋인 TEST.KSDS 데이터셋에 대한 정보를 상세 조회하는 예이다.

$ listcat TEST.KSDS -l

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

List Catalog Entry Information

-----------------------------------------------------------------------------
  Data Set Name . . . : TEST.KSDS
  Data Set Type . . . : CLUSTER
  Catalog Name  . . . : SYS1.MASTER.ICFCAT

  Management Class  . :
    Creation Date . . : 2019/11/19      Data Set Owner  . : NOUSER
    Expiration Date . : ***None***

  Storage Class . . . :
    Volume Serial . . : DEFVOL          Device Type . . . : 3380

  Data Class  . . . . :
    Organization  . . : KSDS            AVGLRECL  . . . . : 21
    KEYLEN  . . . . . : 15              MAXLRECL  . . . . : 21
    KEYPOS  . . . . . : 0               CISIZE  . . . . . : 0
    AIXRKP  . . . . . : N.A.

  Current Allocation
    Primary Space . . : 0(KB)           Number of Extents : 0
    Secondary Space . : 0(KB)           Data Set Size . . : 0

  Last Access Date
    Last Access Date  : 2019/11/19      Last Access Time  : **None**
-----------------------------------------------------------------------------
* Total 1 entries in catalog SYS1.MASTER.ICFCAT printed.

다음은 위의 출력된 항목에 대한 설명이다.

항목 설명

Data set Name

데이터셋의 이름을 표시한다.

Data set Type

데이터셋의 타입을 표시한다.

데이터셋 타입의 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "데이터셋 소개"를 참고한다.

Catalog Name

데이터셋이 등록되어 있는 카탈로그의 이름을 표시한다.

Management Class

데이터셋이 속해 있는 매니지먼트 클래스의 이름을 표시한다.

Creation Date

데이터셋의 생성일자를 표시한다.

Expiration Date

데이터셋의 만료일자를 표시한다.

Data Set Owner

데이터셋의 Owner ID를 표시한다.

Storage Class

데이터셋이 속해 있는 스토리지 클래스의 이름을 표시한다.

Volume Serial

데이터셋의 볼륨 일련번호를 표시한다.

Device Type

데이터셋의 디바이스 타입을 표시한다.

Data Class

데이터셋이 속해 있는 데이터 클래스의 이름을 표시한다.

Organization

데이터셋의 구조를 표시한다.

데이터셋 구조 및 Record Format 항목과 관련된 레코드 포맷의 자세한 설명은 OpenFrame Base "데이터셋 안내서"의 "Non-VSAM 데이터셋"과 "VSAM 데이터셋"을 참고한다.

KEYLEN

데이터셋이 ISAM 또는 KSDS인 경우 KEY의 길이를 표시한다.

KEYPOS

데이터셋이 ISAM 또는 KSDS인 경우 KEY의 시작위치를 표시한다.

Record Format

데이터셋의 레코드의 포맷을 표시한다.

Record Length

데이터셋의 레코드 길이를 표시한다.

Block Size

데이터셋의 블럭 사이즈를 표시한다.

Primary Space

데이터셋에 할당된 Primary Space의 크기를 표시한다.

Secondary Space

데이터셋에 할당된 Secondary Space의 크기를 표시한다.

Number of Extents

데이터셋의 Extents 가능 개수를 표시한다.

Data set Size

데이터셋의 물리적 크기를 Byte 단위로 표시한다.

Last Access Date

데이터셋에 접근한 최종 일자를 표시한다.

Last Access Time

데이터셋에 접근한 최종 시각을 표시한다.

17. lockm

lockm은 데이터셋을 독점적으로 사용하기 위해서 관리되는 데이터셋 Lock 정보를 조회하는 기능을 제공하는 툴이다.

사용법

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

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

    항목 설명

    command

    • lock : 데이터셋 Lock 항목을 요청한다.

    • list : 데이터셋 Lock 목록을 조회한다.

  • [options]

    다음은 command에 설정한 각 명령어별 옵션에 대한 설명이다.

    • lock

      lock name과 lock type 옵션이 반드시 지정되어야 한다.

      옵션 설명

      [-n name]

      요청할 Lock의 이름을 지정한다. name 항목은 반드시 지정되어야 한다.

      [-t type]

      요청할 Lock의 유형을 지정한다.

      • EX

      • SHR

      [-p pid]

      요청할 Lock의 pid를 지정한다.

      [-w time]

      Lock 요청 대기 옵션을 지정한다.

      • FOREVER

      • NOWAIT

      [-c shell command]

      수행할 셸 명령어를 입력한다.

    • list

      옵션 설명

      [-p pid]

      조회할 Lock 항목의 소유 PID를 지정한다.

      [-n name]

      조회할 Lock 항목의 이름을 지정한다.

      [-j jobid]

      조회할 Lock 항목의 작업 ID를 지정한다.

      [-t type]

      조회할 Lock의 유형을 지정한다.

      • EX

      • SHR

      [-nd node name]

      조회할 Lock 항목의 노드 명을 지정한다.

사용예제

다음은 TESTCAT 카탈로그의 TESTDS.TESTLOCK 데이터셋에 대해 강제로 Lock을 요청하는 경우의 예이다.

$ lockm lock -n TESTCAT:TESTDS.TESTLOCK -t EX

다음은 lockm 툴 프로그램을 사용하여 현재 시스템에서 관리되는 Lock 목록을 조회하는 예이다.

$ lockm list

위의 프로그램을 실행하면 다음과 같은 목록이 출력된다.

Dataset Lock Token Management Program

-----------------------------------------------------------------------------
  PID     NODENAME  JOBID     JOBNAME   TYPE  LOCKNAME
-----------------------------------------------------------------------------
 *6163    tp3lab                        SHR   TEST.IMS43643.FIRST
 *6163    tp3lab                        EX    TESTDS.TESTLOCK
 *30752   tp3lab              dsview    SHR   TMAX.LOCK.TEST
-----------------------------------------------------------------------------
* List command completed successfully.

다음은 위의 출력된 항목에 대한 설명이다.

항목 설명

옵션(1,2 컬럼)

  • 1 : Lock을 요청하고 있는 상태이면 R이 보여진다.

  • 2 : Lock을 설정한 또는 요청한 프로세스가 실행 중이면 애스터리스크(*) 가 보인다. 프로세스의 노드가 다른 경우는 보이지 않는다.

PID

데이터셋에 Lock을 설정한 프로세스 ID를 표시한다.

NODENAME

데이터셋에 Lock을 설정한 프로세스가 속한 노드의 이름을 표시한다.

JOBID

데이터셋에 Lock을 설정한 프로세스가 속한 JOBID를 표시한다. JOBID는 Batch에서 JCL이 수행될 때 할당된다.

JOBNAME

데이터셋에 Lock을 설정한 Tool의 이름을 JOBNAME으로 표시한다.

TYPE

Lock 타입으로 SHR(공유) 또는 EX(독점)을 표시한다.

LOCKNAME

Lock의 이름을 표시한다.

18. smfmgr

smfmgr은 SMF 데이터셋의 상태를 조회하고 관리하는 툴로, 다음과 같은 기능을 갖는다.

  • SMF 데이터셋의 현재 상태 조회

    SMF 데이터셋은 다음의 3가지 상태를 갖는다.

    상태 설명

    F(FULL)

    데이터셋이 가득 찬 경우이다. IFASMFDP 유틸리티(MVS 환경에서만 사용 가능)를 통해 내용을 복사하고, Empty 상태로 변경할 수 있다.

    U(USING)

    SMF에서 해당 데이터셋을 사용하고 있는 상태이다.

    E(EMPTY)

    데이터셋이 비어 있는 상태이다. 교체의 대상이 될 수 있다.

  • SMF 데이터셋 교체

    SMF는 한 시점에는 1개의 데이터셋만을 사용한다. 사용하던 데이터셋이 가득차면 자동으로 빈 데이터셋으로 교체되지만, 그 전에 교체를 하기 위해서는 smfmgr의 SWITCH 명령을 통해 수동으로 교체해야 한다.

사용법

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

Usage: smfmgr command [option]
  • 입력 항목

    항목 설명

    command

    • STATUS : SMF 데이터셋의 상태를 조회한다.

    • SWITCH : SMF 데이터셋을 교체한다. SWITCH를 지정할 경우 DSN을 지정할 수 있다. DSN을 지정하지 않으면 비어있는 데이터셋 중 하나로 교체한다.

  • [option]

    옵션 설명

    dsn

    SWITCH 명령을 통해 USING 상태로 바꾸고 싶은 데이터셋의 이름을 기술한다. SWITCH 명령에만 유효하다.

사용예제

다음은 SMF 데이터셋의 상태를 조회하는 예이다.

$ smfmgr STATUS

위 명령의 결과는 다음과 같다. SMLOG.DS1과 SMLOG.DS2는 가득찬 상태이고, SMLOG.DS3는 사용 중이다. SMLOG.DS4는 비어 있는 상태이다.

DSNAME                                          STATUS
--------------------------------------------------------------
SMLOG.DS1                                       F
SMLOG.DS2                                       F
SMLOG.DS3                                       U
SMLOG.DS4                                       E

다음은 SMF 데이터셋을 교체하는 예이다. SMLOG.DS3에서 SMLOG.DS4로 교체한다.

$ smfmgr SWITCH SMLOG.DS4

위 명령을 입력하면 다음의 메시지가 출력된다.

SMF Dataset is switched to SMLOG.DS4

위 명령의 결과는 다음과 같다.

$ smfmgr STATUS
DSNAME                                          STATUS
--------------------------------------------------------------
SMLOG.DS1                                       F
SMLOG.DS2                                       F
SMLOG.DS3                                       F
SMLOG.DS4                                       U
관련 환경설정 및 초기화

smfmgr을 사용하기 위해서는 OpenFrame 환경설정에 smf 서브젝트를 통해 SMF 환경설정을 하고, 이후 SMF를 초기화하는 작업이 필요하다.

  • SMF 환경설정

    OpenFrame 환경설정에 smf 서브젝트, DATASET 섹션에서 데이터셋 이름을 키로 설정한 후 VALUE 항목에 사용 가능한 노드 명칭을 지정한다(현재는 ALL만 지정 가능하다. ALL로 설정하면 모든 노드에서 사용할 수 있음을 의미한다).

    $ ofconfig list -s smf -sec DATASET
    
    ====================================================================================
       SUBJECT   |      SECTION      |           KEY            |          VALUE
    ====================================================================================
         smf     |      DATASET      |       NODE1.SMLOG1       |          ALL
                 |                   |       NODE1.SMLOG2       |          ALL
                 |                   |       NODE2.SMLOG1       |          ALL
                 |                   |       NODE2.SMLOG2       |          ALL
                 |                   |       SMLOG1.NODE1       |          ALL
                 |                   |       SMLOG2.NODE2       |          ALL
                 |                   |       SMLOG3.NODE3       |          ALL
                 |                   |       SMLOG4.NODE4       |          ALL
    ====================================================================================

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

  • SMF 초기화

    SMF를 초기화하는 방법은 다음과 같다.

    1. SMF가 동작 중인 경우 다음을 통해 SMF의 동작을 중지시킨다.

      tmdown -s ofrsmlog
    2. smf 서브젝트에 기술된 모든 데이터셋을 다음의 속성으로 생성한다.

      recfm=VB, lrecl=32760
    3. $OPENFRAME_HOME/shared/SMF 디렉터리 내의 SMF_INFO를 삭제한다.

    4. 다음 명령을 통해 SMF를 기동한다.

      tmboot -s ofrsmlog

19. spfedit

spfedit는 Non-VSAM 데이터셋을 직접 편집하는 툴 프로그램으로 다음의 기능을 제공한다.

  • SDS 또는 PDS 멤버와 같은 Non-VSAM 구조의 데이터셋 내용 편집(ISAM 제외)

  • 지정한 위치에 레코드를 삽입, 복사, 삭제, 이동

  • 데이터셋 내용을 HEX 값으로 변환하여 표시 및 수정

  • 특정 문자열의 검색 및 치환

  • 필터 키를 이용한 데이터셋 검색 및 PDS 멤버 생성

  • 데이터셋 레코드의 정렬(SORT)

  • JCL Batch Job Submit

spfedit는 Mainframe에서 제공하는 데이터셋 편집기에 익숙한 사용자를 위해 기본적으로 동일한 인터페이스와 명령어를 제공한다. 또한 UNIX의 vi 에디터에 익숙한 사용자를 위해 편집 관련 기능에 대응하는 vi의 명령어를 함께 지원하고 있다.

사용법

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

Usage: spfedit [options] [dataset_name] [member_name]
  • [options]

    옵션 설명

    [-V]

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

    [-h]

    spfedit의 사용법을 출력한다.

    [-b]

    읽기 전용 모드로 데이터셋을 오픈한다. 이 경우 데이터셋에 대한 Lock을 걸지 않으며 데이터셋을 편집하거나 저장할 수 없다. 읽기 전용 모드에서는 데이터셋의 크기와 상관없이 일정한 양의 메모리를 사용한다. TSAM / ISAM의 경우 읽기 전용 모드로만 데이터셋을 오픈할 수 있다.

    [-v volume_serial]

    편집할 데이터셋이 카탈로그에 등록되어 있지 않은 경우 편집할 데이터셋의 볼륨 시리얼을 지정한다.

    [-c user_catalog]

    편집할 데이터셋이 유저 카탈로그에 등록되어 있는 경우 편집할 데이터셋의 유저 카탈로그를 지정한다.

  • 입력 항목

    항목 설명

    [dataset_name]

    편집할 데이터셋의 이름을 기술한다. 데이터셋이 PDS인 경우에는 반드시 멤버명을 함께 기술해야 한다. 데이터셋 이름을 생략한 경우 데이터셋 필터링 검색 화면이 나타난다.

    [member_name]

    편집할 데이터셋이 PDS인 경우 멤버명을 함께 기술한다.

화면 구성

데이터셋 편집화면에서는 Line command fieldPrimary command line에서 명령어를 입력한다.

Line command field에서 입력한 명령은 Line 명령, Primary command line에서 입력한 명령은 Primary 명령으로 인식하며 동시에 입력한 경우 Primary 명령을 우선하여 처리한다. 각 명령어에 대한 자세한 내용은 Line 명령어Primary 명령어를 참고한다.

figure 4 1 1
데이터셋 편집화면

다음은 데이터셋 편집화면의 기능키 목록에 대한 설명이다.

기능키 vi 대응 기능키 설명

<F1>

도움말 화면을 출력한다.

<F2>

편집화면을 2개로 분할한다. 분할 상태에서 <F2> 키를 누르면 분할 상태가 취소된다.

<F3>

편집된 내용을 저장하고 spfedit를 종료한다.

<F5>

최근에 수행한 FIND 명령을 반복 수행한다.

<F6>

최근에 수행한 CHANGE 명령을 반복 수행한다.

<F7>

<Ctrl>+<b>, <Page Up>

화면을 위로 스크롤한다.

<F8>

<Ctrl>+<f>, <Page Down>

화면을 아래로 스크롤한다.

<F9>

화면을 분할한 경우 화면 간 커서를 이동시킨다.

<F10>

화면을 왼쪽으로 스크롤한다.

<F11>

화면을 오른쪽으로 스크롤한다.

<F12>

편집된 내용을 저장하지 않고 spfedit를 종료한다.

<Esc>

<F12>와 동일한 기능을 수행한다.

<Home>

커서를 Primary command line으로 이동시킨다.

<Insert>

편집 모드를 INSERT 또는 REPLACE로 전환한다. 기본은 REPLACE 모드이다.

<Enter>

명령어를 입력한 경우 해당 명령을 수행한다.

<Tab>

커서를 다음 항목으로 이동한다.

<End>

레코드의 가장 마지막 컬럼으로 커서를 이동한다.

<Ctrl>+<A>

레코드의 가장 처음 컬럼으로 커서를 이동한다.

<Ctrl>+<L>

화면을 다시 그린다.

<방향키 위>

커서를 이전 레코드로 이동시킨다. 화면의 처음 레코드에서는 위로 스크롤한다.

<방향키 아래>

커서를 다음 레코드로 이동시킨다. 화면의 마지막 레코드에서는 아래로 스크롤한다.

데이터셋 필터링 검색화면은 데이터셋의 이름을 지정하지 않고 spfedit를 실행하거나 EDIT 또는 BROWSE 명령을 입력하면 다음과 같이 나타난다. spfedit를 데이터셋 필터링 검색화면으로 시작한 경우 편집화면을 종료하면 다시 검색화면으로 돌아온다. 또한 편집 모드에서 검색화면에 PDS에 존재하지 않는 멤버명을 입력한 경우 편집화면이 열리면서 새로운 멤버가 작성된다.

figure 4 1 2
데이터셋 필터링 검색화면

다음은 데이터셋 필터링 검색화면의 기능 키 목록에 대한 설명이다.

기능키 vi 대응 기능키 설명

<F1>

필터 키에 대한 도움말 화면을 출력한다.

<F7>

<Ctrl>+<b>, <Page Up>

검색한 데이터셋 목록을 위로 스크롤한다.

<F8>

<Ctrl>+<f>, <Page Down>

검색한 데이터셋 목록을 아래로 스크롤한다.

<F12>

데이터셋 편집화면으로 되돌아 가거나 종료한다.

<Esc>

<F12>와 동일한 기능을 수행한다.

<Home>

커서를 데이터셋 이름 입력 항목으로 이동한다.

<Enter>

현재 입력한 조건에 해당하는 데이터셋 목록을 가져온다. 데이터셋을 선택한 경우에는 해당 데이터셋을 open하고 편집화면으로 이동한다.

<방향키 위>

데이터셋 검색 입력 항목의 커서를 이전 항목으로 이동하거나 데이터셋 선택 막대를 위로 이동한다.

<방향키 아래>

데이터셋 검색 입력 항목의 커서를 다음 항목으로 이동하거나 데이터셋 선택 막대를 아래로 이동한다.

<Tab>

데이터셋 검색 입력 항목의 커서를 다음 항목으로 이동한다.

다음은 데이터셋 검색화면에서 사용할 수 있는 필터 키에 대한 설명과 사용 예제이다.

  • 필터 키 설명

    필터 키 설명

    *

    하나의 Qualifier를 의미한다.

    **

    0개 또는 하나 이상의 Qualifier를 의미한다.

    %

    하나의 문자를 의미한다.

  • 필터 키 사용 예제

    필터 키 조건 조건에 해당하는 데이터셋 이름 조건에 해당하지 않는 데이터셋 이름

    TEST.DATA.SET%

    TEST.DATA.SET1

    TEST.DATA.SET

    TEST.*.SET

    TEST.DATA1.SET

    TEST.SET

    TEST.DATA*

    TEST.DATA23

    TEST.DATA.SET

    TEST.**

    TEST.DATA.SET

    TEST1.DATA.SET

    **.SET

    TEST.DATA.SET

    TEST.DATA.SET1

    VSAM.DATA.SET

    VSAM.DATA.SET

    **

    모든 데이터셋

관련 환경설정

OpenFrame 환경설정에 dstool 서브젝트, SPFEDIT 섹션의 모든 키를 설정한다.

  • RECORD_READ_COUNT

  • END_KEY_FUNC_DEL_EOL

  • F12_KEY_FUNC_RETRIEVE

  • REPLACE_CREATE_NEEDED

  • EDIT_SIZE_LIMIT

  • DEFAULT_CURSOR_ON_LINE_COMMAND

  • CURSOR_KEY_FUNC_SCROLL

  • CPM_PATH

  • LOCALE

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

유의사항
  • 화면의 출력 가능한 최소 넓이는 편집화면의 경우 35 컬럼, 데이터 검색화면의 경우 73 컬럼이다.

  • Edit 모드로 데이터셋을 편집하거나 저장하는 경우 데이터셋의 전체 내용이 메모리에 적재되므로 대용량 데이터셋을 편집할 때는 시스템 자원관리에 주의한다.

  • Browse 모드로 open한 데이터셋의 경우 데이터셋 전체가 메모리에 올라가지 않고 OpenFrmae 환경설정 중 dstool 서브젝트, SPFEDIT 섹션의 RECORD_READ_COUNT 키의 VALUE 항목만큼만 메모리에 항상 유지시킨다. Browse 모드는 spfedit 실행하는 경우 -b 옵션을 기술하거나 BROWSE 명령으로 데이터셋을 open하면 된다.

  • OpenFrmae 환경설정 중 dstool 서브젝트, SPFEDIT 섹션의 EDIT_SIZE_LIMIT 키의 VALUE 항목으로 편집 가능 데이터셋의 크기를 제한하도록 설정이 가능하다. 그러나 Browse 모드로 데이터셋을 open할 때는 설정값에 영향을 받지 않는다.

  • EDIT 또는 BROWSE 명령으로 다른 데이터셋을 open하면 기존 데이터셋은 편집한 내용을 저장하지 않고 close한다.

  • 컨트롤 문자나 미정의된 더블 바이트 문자와 같이 출력이 불가능한 문자는 화면에 점(.)으로 표시된다.

  • 시스템의 OS가 Linux이면서 문자코드로 Shift_JIS를 사용하는 경우 확장된 특수 문자나 일본어가 정상적으로 출력되지 않을 수 있다. 이런 경우 spfedit의 환경설정 중 LOCALE을 Shift_JIS의 확장 문자코드 셋을 의미하는 ja_JP.windows31j로 지정하면 된다. 이때 Linux 셸에서 'locale -a’를 수행하여 ja_JP.windows31j가 사용 가능한 LOCALE 목록에 있는지 확인하고 만약 없다면 Linux의 localdef 명령을 수행하여 해당 LOCALE을 설치하면 된다.

19.1. Line 명령어

Line 명령은 명령어가 입력된 Line에만 적용되며 명령어를 하나 이상의 Line command field에 입력하고 <Enter> 키를 누르면 해당 명령이 실행된다. Line command field는 화면 가장 왼쪽의 6자리 숫자 필드를 말한다.

다음은 spfedit에서 입력 가능한 Line 명령어의 목록이다.

명령어 vi 대응 명령어 설명

A

p

다음 Line에 지정한 데이터를 삽입한다.

B

이전 Line에 지정한 데이터를 삽입한다.

C | CC

yy

Line을 메모리로 복사한다.

COLS

컬럼 눈금자 Line을 삽입한다.

D | DD

지정한 Line을 삭제한다.

F

Exclude된 Line을 처음부터 다시 보여준다.

I

임시 Line을 삽입한다.

L

Exclude된 Line을 마지막부터 다시 보여준다.

LC | LCC | LCLC

알파벳 대문자를 소문자로 변환한다.

M | MM

지정한 Line을 다른 위치로 이동한다.

O | OO

지정한 Line을 다른 위치로 덮어 씌운다.

UC | UCC | UCUC

알파벳 소문자를 대문자로 변환한다.

R | RR

지정한 Line을 복사하여 다음 Line에 삽입한다.

S

Exclude된 Line을 다시 보여준다.

X | XX

지정한 Line을 Exclude하여 하나의 점선라인에 숨긴다.

A ( p )

명령어가 입력된 위치의 다음 Line에 이동, 복사, 삽입 대상 데이터가 들어간다. 일반적으로 C(copy) 명령어 또는 M(move) 명령어와 함께 사용된다.

  • 사용법

    A[n]
    옵션 설명

    n

    삽입 반복 횟수를 지정한다. 생략된 경우는 1회이다.

    figure 4 2 1
    A 명령 수행 이전 화면
    figure 4 2 2
    A 명령 수행 이후 화면
B

명령어가 입력된 위치의 이전 Line에 이동, 복사, 삽입 대상 데이터가 들어간다. 일반적으로 C(copy) 명령어 또는 M(move) 명령어와 함께 사용된다.

  • 사용법

    B[n]
    옵션 설명

    n

    삽입 반복 횟수를 지정한다. 생략된 경우는 1회이다.

    figure 4 3 1
    B 명령 수행 이전 화면
    figure 4 3 2
    B 명령 수행 이후 화면
C | CC ( yy )

일반적으로A(after), B(before), O(overlay) 명령어와 함께 사용된다.

  • 사용법

    • C

      한 개 이상의 레코드를 메모리에 복사한다.

      C[n]
      옵션 설명

      n

      복사 반복 횟수를 지정한다. 생략된 경우는 1회이다.

    • CC

      복사 대상 블록을 복사 시작 Line과 종료 Line에 각각 CC를 입력하여 지정한다.

      CC
      figure 4 4 1
      C 명령 수행 이전 화면
      figure 4 4 2
      C 명령 수행 이후 화면
COLS

컬럼 눈금자 Line을 지정한 위치에 삽입한다. 삽입한 컬럼 눈금자 Line은 데이터와 같이 저장되지 않으며 D 명령어나 RESET COLS(Primary 명령어)를 입력하여 삭제할 수 있다.

  • 사용법

    COLS
    figure 4 5 1
    COLS 명령 수행 이전 화면
    figure 4 5 2
    COLS 명령 수행 이후 화면
D | DD

지정한 Line을 삭제한다.

  • 사용법

    • D

      한 개 이상의 레코드를 삭제한다.

      D[n]
      옵션 설명

      n

      삭제 대상 Line 수를 지정한다. 생략된 경우는 1회이다.

    • DD

      삭제대상 블록을 삭제 시작 Line과 종료 Line에 각각 DD를 입력하여 지정한다.

      DD
      figure 4 6 1
      D 명령 수행 이전 화면
      figure 4 6 2
      D 명령 수행 이후 화면
F

명령어가 입력된 위치의 Exclude Line에 숨겨진 레코드를 처음부터 지정한 개수만큼 다시 보여준다.

  • 사용법

    F[n]
    옵션 설명

    n

    다시 보여줄 레코드의 개수를 지정한다. 생략된 경우는 1개이다.

    figure 4 7 1
    F 명령 수행 이전 화면
    figure 4 7 2
    F 명령 수행 이후 화면
I

한 개 이상의 임시 레코드를 지정한 위치 다음에 삽입한다. 삽입된 Line에 아무것도 입력하지 않고 <Enter> 키를 입력하면 자동 삭제된다.

  • 사용법

    I[n]
    옵션 설명

    n

    삽입 반복 횟수를 지정한다. 생략된 경우는 1회이다.

    figure 4 8 1
    I 명령 수행 이전 화면
    figure 4 8 2
    I 명령 수행 이후 화면
L

명령어가 입력된 위치의 Exclude Line에 숨겨진 레코드를 마지막부터 지정한 개수만큼 다시 보여준다.

  • 사용법

    L[n]
    옵션 설명

    n

    다시 보여줄 레코드의 개수를 지정한다. 생략된 경우는 1개이다.

    figure 4 9 1
    L 명령 수행 이전 화면
    figure 4 9 2
    L 명령 수행 이후 화면
LC | LCC | LCLC

지정한 레코드의 알파벳 대문자를 소문자로 변환한다.

  • 사용법

    • LC

      한 개 이상의 레코드의 알파벳 대문자를 소문자로 변환한다.

      LC[n]
      옵션 설명

      n

      소문자로 변환할 대상 Line 수를 지정한다. 생략된 경우는 1개이다.

    • LCC | LCLC

      변환대상 블록을 변환 시작 Line과 종료 Line에 각각 LCC 또는 LCLC를 입력하여 지정한다.

      LCC | LCLC
      figure 4 10 1
      LC 명령 수행 이전 화면
      figure 4 10 2
      LC 명령 수행 이후 화면
M | MM

일반적으로 A(after), B(before), O(overlay) 명령어와 함께 사용된다.

  • 사용법

    • M

      한 개 이상의 레코드를 다른 위치로 이동한다.

      M[n]
      옵션 설명

      n

      이동 대상 Line 수를 지정한다. 생략된 경우는 1개이다.

    • MM

      이동대상 블록을 이동 시작 Line과 종료 Line에 각각 MM를 입력하여 지정한다.

      MM
      figure 4 2 1
      M 명령 수행 이전 화면
      figure 4 2 2
      M 명령 수행 이후 화면
O | OO

복사한 레코드를 지정한 레코드의 공백 문자부분에만 덮어 씌운다. 일반적으로 C(copy) 명령어 또는 M(move) 명령어와 함께 사용된다.

  • 사용법

    • O

      한 개 이상의 레코드에 덮어 씌운다.

      O[n]
      옵션 설명

      n

      덮어 씌울 대상 Line 수를 지정한다. 생략된 경우는 1개이다.

    • OO

      덮어 씌울 대상 블록을 시작 Line과 종료 Line에 각각 OO를 입력하여 지정한다.

      OO
      figure 4 11 1
      OO 명령 수행 이전 화면
      figure 4 11 2
      OO 명령 수행 이후 화면
UC | UCC | UCUC

지정한 레코드의 알파벳 소문자를 대문자로 변환한다.

  • 사용법

    • UC

      한 개 이상의 레코드의 알파벳 소문자를 대문자로 변환한다.

      UC[n]
      옵션 설명

      n

      대문자로 변환할 대상 Line 수를 지정한다. 생략된 경우는 1개이다.

    • UCC | UCUC

      변환대상 블록을 변환 시작 Line과 종료 Line에 각각 UCC 또는 UCUC를 입력하여 지정한다.

      LCC | LCLC
      figure 4 12 1
      UC 명령 수행 이전 화면
      figure 4 12 2
      UC 명령 수행 이후 화면
R | RR

지정한 레코드의 내용을 다음 Line에 삽입한다.

  • 사용법

    • R

      지정한 레코드의 삽입 반복 횟수를 지정한다.

      R[n]
      옵션 설명

      n

      레코드 반복 횟수를 지정한다. 생략된 경우는 1개이다.

    • RR

      반복대상 블록을 반복 시작 Line과 종료 Line에 각각 RR을 입력하여 지정한다.

      RR
      figure 4 13 1
      R 명령 수행 이전 화면
      figure 4 13 2
      R 명령 수행 이후 화면
S

명령어가 입력된 위치의 Exclude Line에 숨겨진 레코드를 전체 또는 지정한 개수만큼 다시 보여준다.

  • 사용법

    S[n]
    옵션 설명

    n

    다시 보여줄 레코드의 개수를 지정한다. 생략된 경우는 숨겨진 레코드 전체를 다시 보여준다.

    figure 4 14 1
    S 명령 수행 이전 화면
    figure 4 14 2
    S 명령 수행 이후 화면
X | XX

지정한 레코드의 내용을 Exclude하여 하나의 점선 Line에 숨긴다. 점선 Line에는 숨겨진 레코드의 개수가 표시된다. 지정한 레코드에 인접한 레코드가 점선 Line인 경우 하나로 합쳐진다.

숨겨진 레코드를 다시 표시하려면 F, L, S Line 명령어를 사용하거나 RESET 명령어에서 EXCLUDE 옵션을 사용한다. 또한 숨겨진 레코드가 FIND 명령어나 LOCATE 명령어의 대상이 된 경우도 해당 Line만 다시 표시된다.

  • 사용법

    • X

      Exclude할 한 개 이상의 레코드를 지정한다.

      X[n]
      옵션 설명

      n

      Exclude 대상 Line수를 지정한다. 생략된 경우는 1개이다.

    • XX

      Exclude 대상 블록을 Exclude 시작 Line과 종료 Line에 각각 XX를 입력하여 지정한다.

      XX
      figure 4 15 1
      X 명령 수행 이전 화면
      figure 4 15 2
      X 명령 수행 이후 화면

19.2. Primary 명령어

Primary 명령은 데이터셋 전체에 영향을 주는 명령어이다. 명령어는 화면에서 두 번째 Line에 Command Line('Command ===>')에 입력하고 <Enter> 키를 누르면 해당 명령이 실행된다.

다음은 입력 가능한 Primary 명령어의 목록이다.

명령어 vi 대응 명령어 설명

BOTTOM | BOT

데이터셋의 끝부분으로 이동한다.

BOUNDS | BOUND | BND

SORT 명령어에서 기본으로 사용할 키 영역을 지정한다.

BROWSE | BR

읽기 전용 모드로 다른 데이터셋을 오픈한다.

CANCEL | CAN

:q

편집된 내용을 저장하지 않고 종료한다.

CAPS

항상 대문자로 입력된다.

CHANGE | C

지정한 문자열을 다른 문자로 치환한다.

COLS

컬럼 눈금자 표시가 Primary command line 아래에 표시된다.

COPY

다른 데이터셋의 레코드를 현재 편집 중인 데이터셋에 복사한다.

CREATE

현재 편집 중인 레코드를 새로운 데이터셋을 생성하여 레코드를 복사한다.

CUT

편집 중인 레코드를 클립보드에 저장한다.

DELETE | DEL

지정한 Line을 삭제한다.

DOWN

편집 중인 레코드의 스크롤을 아래로 이동한다.

EDIT | E

:e

편집 모드로 다른 데이터셋을 오픈한다.

END

:wq

편집된 내용을 저장하고 종료한다.

EXCLUDE

특정 문자열을 검색하여 편집 중인 레코드에 보이지 않도록 한다.

FIND | F

/

특정 문자열을 검색한다.

HELP

도움말 화면을 출력한다.

HEX

데이터셋 출력포맷을 일반 또는 HEX 모드로 전환한다.

LEFT

화면을 왼쪽으로 스크롤한다.

LOCATE | L

:[n]

특정 Line으로 화면을 이동한다.

MENU

하단의 기능키 목록을 보여주거나 숨긴다.

PASTE

클립보드에 저장한 레코드를 현재 편집 중인 데이터셋에 복사한다.

RCHANGE

최근에 수행한 CHANGE명령을 반복수행한다.

REPLACE

현재 편집 중인 레코드를 다른 데이터셋의 레코드로 변경한다.

RESET | RES

화면을 초기화해서 출력한다.

RFIND

최근에 수행한 FIND 명령을 반복수행한다.

RIGHT

화면을 오른쪽으로 스크롤 한다.

SAVE

:w

현재 편집 중인 데이터셋을 저장한다.

SCROLL | SCR

화면의 스크롤 방법을 결정한다.

SORT/SORTE

데이터셋의 모든 레코드를 지정한 순서로 정렬한다.

SUBMIT | SUB

현재 편집 중인 내용으로 배치작업을 실행한다.

TOP

데이터셋의 처음부분으로 이동한다.

UP

편집 중인 레코드의 스크롤을 위로 이동한다.

BOTTOM | BOT

데이터셋의 끝부분으로 화면을 이동한다.

  • 사용법

    BOTTOM | BOT
BOUNDS | BOUND | BNDS | BND | BOU

SORT 명령어에서 기본값으로 사용할 키 영역을 지정한다. 옵션을 생략하면 현재 지정한 키 영역에 대한 값이 표시된다.

  • 사용법

    BOUNDS | BOUND | BNDS | BND | BOU [left_column right_column]
    옵션 설명

    left_column

    키 영역의 시작 컬럼 위치를 기술한다. (기본값:1)

    right_column

    키 영역의 종료 컬럼 위치를 기술한다. (기본값: 레코드 최대길이)

다음은 left boundary를 1, right boundary를 72로 설정하는 예이다.

BOUNDS 1 72
BROWSE | BR

현재 화면에서 편집 중인 데이터셋을 닫고 다른 데이터셋을 읽기 전용 모드로 오픈한다. 이때 데이터셋에 대한 잠금(Lock)은 걸지 않으며 데이터셋을 편집하거나 저장할 수 없다. 읽기 전용 모드에서는 데이터셋의 크기와 상관없이 환경설정 RECORD_READ_COUNT에서 지정한 크기만큼의 메모리만을 사용한다. 현재 오픈된 데이터셋을 이 명령으로 다시 오픈하는 것은 허용하지 않는다.

  • 사용법

    BROWSE | BR [dataset_name] [member_name]
    옵션 설명

    dataset_name

    오픈할 데이터셋의 이름을 입력한다. 이 경우 카탈로그에 등록되어 있어야 한다. 데이터셋 이름을 생략하면 데이터셋 검색화면이 나타난다.

    member_name

    오픈할 데이터셋이 PDS인 경우 멤버명을 함께 기술한다.

CANCEL | CAN (:q)

편집한 데이터셋을 저장하지 않고 spfedit를 종료한다. <F12> 키를 입력해도 동일한 기능을 수행한다.

  • 사용법

    CANCEL | CAN
CAPS

키보드로 입력하는 영문자를 대문자로 변환할지에 대한 옵션을 지정한다.

  • 사용법

    CAPS {ON | OFF}
    옵션 설명

    ON

    키보드의 <CAPS> 키와 상관없이 입력되는 모든 영문자를 대문자로 변환하여 입력한다.

    OFF

    키보드에서 입력한 대로 영문자를 입력한다. (기본값)

CHANGE | C

지정한 문자열을 다른 문자열로 치환한다. 데이터셋이 F 또는 FB 포맷일 경우 치환 전 대상 문자열과 치환 후 문자 열의 길이는 반드시 동일해야 한다.

  • 사용법

    CHANGE | C string-1 string-2 [NEXT | PREV | ALL | FIRST | LAST] [left-col [right-col]]
    • 입력 항목

      입력 항목 설명

      string-1

      치환 전 대상 문자열을 입력한다. 기본적으로 대소문자를 구별하지 않는다.

      대소문자를 구별하여 치환하려는 경우는 C+’문자열’을 입력한다.

      치환 대상 문자열에 공백이 포함된 경우 ‘문자 열’ 또는 “문자 열”을 입력한다.

      HEX 값으로 치환 대상 문자열을 검색하려는 경우 X+’HEX값’을 입력한다.

      string-2

      치환 후 문자열을 입력한다.

      치환 후 문자열에 공백이 포함된 경우 ‘문자 열’ 또는 “문자 열”을 입력한다.

    • 옵션

      옵션 설명

      NEXT

      현재 화면의 첫 Line부터 검색을 시작하여 치환한다. (기본값)

      PREV

      현재 화면의 첫 Line 이전부터 역으로 검색을 하여 치환한다.

      ALL

      데이터셋 전체를 검색하여 대상 문자열을 모두 치환하고 치환된 총 개수를 표시한다.

      FIRST

      데이터셋의 처음부터 검색을 시작하여 치환한다.

      LAST

      데이터셋의 마지막부터 역으로 검색해서 치환한다.

      left-col

      치환 영역의 첫 번째 컬럼을 지정한다. (기본값: 1)

      right-col

      치환 영역의 마지막 컬럼을 지정한다. (기본값: 레코드 마지막 컬럼)

다음은 데이터셋을 처음부터 검색하여 "AAA"를 "BBB"로 치환하는 예이다.

CHANGE AAA BBB FIRST

다음은 데이터셋 전체에서 공백문자가 포함된 "HOME A"를 "HOME B"로 모두 치환하는 예이다.

CHAGNE 'HOME A' 'HOME B' ALL

다음은 현재 화면에 보여지는 레코드부터 검색하여 HEX 값 "6565"를 "6767"로 치환하는 예이다.

CHANGE X'6565' X'6767'

다음은 레코드 컬럼 5에서 8까지의 범위 내에서만 "XXX"를 "YYY"로 치환하는 예이다.

CHANGE XXX YYY NEXT 5 8
COLS

컬럼 눈금자를 Primary command line 아래에 표시할지에 대한 여부를 설정한다. 옵션을 생략하면 현재 설정에 따라 토글링된다.

  • 사용법

    COLS [{ON | OFF}]
    옵션 설명

    ON

    컬럼 눈금자를 표시한다.

    OFF

    컬럼 눈금자를 표시하지 않는다. (기본값)

COPY

다른 데이터셋의 레코드를 읽어서 현재 편집 중인 데이터셋에 복사한다.

  • 사용법

    COPY dataset_name {BEFORE | AFTER} label [start-line] [end-line]
    옵션 설명

    dataset_name

    레코드를 읽어올 데이터셋 이름을 지정한다.

    BEFORE

    지정한 LABEL 앞에 삽입한다.

    AFTER

    지정한 LABEL 뒤에 삽입한다.

    label

    읽어온 레코드를 추가할 LABEL 이름을 지정한다.

    start-line

    COPY할 대상 레코드의 시작 번호를 지정한다.

    end-line

    COPY할 대상 레코드의 마지막 번호를 지정한다.

다음은 XXX 데이터셋을 읽어서 현재 편집 중인 데이터셋의 가장 처음에 복사하는 예이다.

COPY XXX AFTER .ZFIRST
CREATE

편집 중인 레코드를 새로운 PDS 멤버 데이터셋으로 생성한다. PDS 멤버 이외의 다른 데이터셋으로는 저장할 수 없다.

  • 사용법

    CREATE dataset_name label1 label2
    옵션 설명

    dataset_name

    새로 생성할 데이터셋의 PDS 이름과 멤버 이름을 지정한다. 편집 중인 데이터셋이 PDS 멤버가 아니거나, 다른 PDS 멤버로 저장할 경우에는 PDS 이름과 멤버 이름을 같이 지정해야 한다. 동일한 PDS 내의 다른 멤버로 저장할 경우에는 PDS 이름은 생략 가능하다.

    label1

    저장할 레코드의 시작 LABEL을 지정한다.

    label2

    저장할 레코드의 종료 LABEL을 지정한다.

다음은 현재 편집 중인 레코드의 .L1 LABEL부터 .L2 LABEL까지 읽어서 XXX(YYY) 데이터셋을 생성하는 예이다.

CREATE XXX(YYY) .L1 .L2
CUT

편집 중인 레코드의 일부 혹은 전체를 클립보드에 저장하거나 조회한다.

  • 사용법1

    COPY [label1 label2] [X|NX] [REPLACE | APPEND]
    옵션 설명

    label1

    클립보드로 저장할 레코드의 시작 위치 LABEL을 지정한다.

    label2

    클립보드로 저장할 레코드의 종료 위치 LABEL을 지정한다.

    X

    EXCLUDE로 지정한 레코드만 클립보드에 복사한다.

    NX

    EXCLUDE되지 않은 레코드만 클립보드에 복사한다.

    REPLACE

    기존의 클립보드의 내용을 삭제하고 복사한다. (기본값)

    APPEND

    기존의 클립보드의 마지막에 선택한 부분을 추가한다.

  • 사용법2

    COPY DISPLAY
    옵션 설명

    DISPLAY

    클립보드의 내용을 조회한다.

DELETE | DEL

지정한 범위의 Line을 삭제한다.

  • 사용법

    DELETE | DEL from-line [to-line]
    입력 항목 설명

    from-line

    삭제 시작 Line의 번호를 입력한다.

    to-line

    삭제 종료 Line의 번호를 입력한다.

DOWN

현재 편집 중인 위치에서 지정한 만큼 아래로 이동한다.

  • 사용법

    DOWN {MAX | HALF | PAGE | CURSOR | nnn}
    입력항목 설명

    MAX

    가장 마지막의 레코드로 이동한다.

    HALF

    페이지의 절반만큼 아래로 이동한다.

    PAGE

    다음 페이지의 레코드로 이동한다.

    CURSOR

    현재 커서가 위치한 레코드가 가장 위로 보이도록 이동한다.

    nnn

    지정한 LINE수만큼 아래로 이동한다.

EDIT | E ( :e )

현재 화면에서 편집 중인 데이터셋을 닫고 다른 데이터셋을 편집 모드로 오픈한다. 이때 데이터셋은 배타적 잠금(Exclusive Lock)이 걸리며 다른 사용자가 편집모드로 접근할 수 없게 된다. 현재 오픈된 데이터셋을 이 명령으로 다시 오픈하는 것은 허용하지 않는다.

  • 사용법

    EDIT | E [dataset_name] [member_name]
    옵션 설명

    dataset_name

    편집할 데이터셋의 이름을 입력한다. 이 경우 카탈로그에 등록되어 있어야 한다. 데이터셋 이름을 생략하면 데이터셋 검색화면이 나타난다.

    member_name

    편집할 데이터셋이 PDS인 경우 멤버명을 함께 기술한다.

END ( :wq )

데이터셋을 저장한 뒤 spfedit를 종료한다. 최종 저장 여부를 확인한다. <F3> 키도 동일한 기능을 수행한다.

  • 사용법

    END
EXCLUDE

EXCLUDE 커맨드는 사용자가 문자열을 검색하여 해당 문자열이 포함된 라인을 숨기는 기능이다.

  • 사용법

    EXCLUDE string [label1 label2] [NEXT | PREV | ALL | FIRST | LAST] [left-col] [right-col]
    옵션 설명

    string

    편집할 데이터셋의 이름을 입력한다. 이 경우 카탈로그에 등록되어 있어야 한다. 데이터셋 이름을 생략하면 데이터셋 검색화면이 나타난다.

    label1

    EXCLUDE 기능을 수행할 시작 LABEL 이름을 지정한다.

    label2

    EXCLUDE 기능을 수행할 종료 LABEL 이름을 지정한다.

    NEXT

    범위 내에서 현재 위치부터 순차적으로 검색한다. (기본값)

    PREV

    범위 내에서 현재 위치의 이전부터 역으로 검색한다.

    ALL

    범위 내에서의 모든 Line을 검색한다.

    FIRST

    범위 내에서의 처음부터 검색을 시작한다.

    LAST

    범위 내에서의 마지막부터 역으로 검색한다.

    left-col

    검색 영역의 첫 번째 컬럼을 지정한다. (기본값:1)

    right-col

    검색 영역의 마지막 컬럼을 지정한다. (기본값:레코드 마지막 컬럼)

    member_name

    편집할 데이터셋이 PDS인 경우 멤버 이름을 함께 기술한다.

FIND | F ( / )

입력한 문자열을 검색하고 해당 문자열이 존재하는 곳으로 이동한다. 찾은 문자열은 화면에서 반전되어 표시된다.

  • 사용법

    FIND | F string [NEXT | PREV | ALL | FIRST | LAST] [left-col [right-col]]
    • 입력 항목

      입력 항목 설명

      string

      검색하기 원하는 문자열을 입력한다. 기본적으로 대소문자를 구별하지 않는다. 대소문자를 구별하여 검색하려는 경우는 C+’문자열’을 입력한다.

      검색하려는 문자열에 공백이 포함된 경우 ‘문자 열’ 또는 “문자 열”을 입력한다. HEX 값으로 검색하려는 경우 X+’HEX값’을 입력한다.

    • 옵션

      옵션 설명

      NEXT

      현재 화면의 첫 Line부터 순차적으로 검색한다. (기본값)

      PREV

      현재 화면의 첫 Line 이전부터 역으로 검색한다.

      ALL

      데이터셋의 처음부터 끝까지 검색하여 찾은 총 개수를 출력한다.

      FIRST

      데이터셋의 처음부터 검색을 시작한다.

      LAST

      데이터셋의 마지막부터 역으로 검색을 시작한다.

      left-col

      검색 영역의 첫 번째 컬럼을 지정한다. (기본값: 1)

      right-col

      검색 영역의 마지막 컬럼을 지정한다. (기본값: 레코드 마지막 컬럼)

다음은 데이터셋 처음부터 "DISP"를 검색하는 예이다.

FIND DISP FIRST

다음은 데이터셋 전체에서 공백문자가 포함된 "S P A C E"를 검색하는 예이다.

FIND 'S P A C E' ALL

다음은 현재 화면에 보여지는 레코드부터 검색하여 HEX 값 "656667"을 검색하는 예이다.

FIND X'656667'

다음은 레코드 컬럼 6에서 11까지의 범위 내에서만 "XXX"를 검색하는 예이다.

FIND XXX 6 11
HELP

spfedit에서 입력 가능한 명령어와 KEY의 목록과 간단한 설명이 담긴 별도의 창을 보여준다.

  • 사용법

    HELP
HEX

데이터셋의 내용을 HEX 값과 함께 표시할지를 지정한다.

  • 사용법

    HEX {ON | OFF}
    옵션 설명

    ON

    편집 중인 데이터셋의 내용을 Line별로 HEX 값을 수직으로 표시한다.

    표시된 HEX 값으로 데이터셋의 내용을 수정하는 것도 가능하다.

    OFF

    HEX 표시모드를 해제한다. (기본값)

LEFT

화면을 페이지 단위로 왼쪽으로 스크롤한다.

  • 사용법

    LEFT [MAX]
    옵션 설명

    MAX

    레코드의 시작 부분으로 이동한다.

LOCATE | L (:[n] )

지정한 Line 번호의 위치로 이동하여 내용을 화면에 출력한다.

  • 사용법

    LOCATE | L line-number
    입력 항목 설명

    line-number

    화면의 최상단에 보여줄 Line의 번호를 입력한다.

MENU

화면 하단의 기능키 목록의 표시 여부를 설정한다.

  • 사용법

    MENU {ON | OFF}
    옵션 설명

    ON

    화면 하단에 기능 키 목록을 표시한다. (기본값)

    OFF

    화면 하단에 기능 키 목록을 표시하지 않는다.

PASTE

CUT커맨드를 이용해서 클립보드에 저장된 레코드를 현재 편집 중인 데이터셋에 붙여넣기한다.

  • 사용법

    PASTE [{AFTER | BEFORE} label] [KEEP | DELETE]
    옵션 설명

    AFTER

    클립보드의 내용을 복사하여 LABEL로 지정한 앞에 붙여넣기한다.

    BEFORE

    클립보드의 내용을 복사하여 LABEL로 지정한 뒤에 붙여넣기한다.

    label

    클립보드의 내용을 현재 편집 중인 데이터셋에 붙여넣을 위치를 지정하기 위한 레코드의 라벨명을 기술한다.

    KEEP

    클립보드에서 레코드를 현재 편집 중인 레코드에 붙여넣기한 후에도 클립보드의 내용을 유지한다.

    DELETE

    클립보드에서 레코드를 현재 편집 중인 레코드에 붙여넣기한 후에 클립보드의 내용을 삭제한다.

RCHANGE

가장 최근에 수행한 CHANGE 명령을 현재 커서 위치를 기준으로 다시 수행한다. <F6> 키도 동일한 기능을 수행한다.

  • 사용법

    RCHANGE
REPLACE

편집 중인 레코드를 다른 데이터셋의 레코드로 저장한다.

  • 사용법

    REPLACE dataset_name [label1 label2]
    옵션 설명

    dataset_name

    현재 편집 중인 레코드를 저장할 데이터셋 이름을 지정한다.

    label1

    저장할 레코드의 시작 LABEL을 지정한다.

    label2

    저장할 레코드의 종료 LABEL을 지정한다.

RESET | RES

지정한 대상을 초기화하여 화면을 다시 출력한다.

  • 사용법

    RESET | RES {COMMAND | COLS | CHANGE | EXCLUDE | ALL}
    옵션 설명

    COMMAND

    Line command field에 입력한 명령을 모두 초기화하고 Line 번호를 다시 출력한다.

    COLS

    COLS 명령어로 입력한 컬럼 눈금자를 모두 삭제하고 다시 출력한다.

    CHANGE

    문자열을 치환하고 표시되는 내용을 모두 초기화한다.

    EXCLUDE

    Exclude 되어 숨겨진 레코드를 모두 다시 출력한다.

    ALL

    위의 내용을 모두 수행한다.

RFIND

가장 최근에 수행한 FIND 또는 CHANGE 명령의 검색어를 현재 커서 위치를 기준으로 재검색한다. <F5> 키도 동일한 기능을 수행한다.

  • 사용법

    RFIND
RIGHT

화면을 페이지 단위로 오른쪽으로 이동한다.

  • 사용법

    RIGHT [MAX]
    옵션 설명

    MAX

    레코드의 마지막 부분으로 이동한다.

SAVE ( :w )

spfedit를 종료하지 않고 현재까지 편집된 데이터셋의 내용을 저장한다.

  • 사용법

    SAVE
SCROLL | SCR

<F7>이나 <F8> 키를 입력했을 때 화면의 페이지 스크롤 방법을 결정한다.

  • 사용법

    SCROLL | SCR {PAGE | CSR}
    옵션 설명

    PAGE

    페이지 단위로 스크롤한다.

    CSR

    현재 커서 위치를 기준으로 스크롤한다.

    화면을 위나 아래로 스크롤하면 커서가 위치한 레코드를 화면의 가장 위나 아래로 이동한다.

다음의 3가지 경우에는 SCROLL이 CSR로 설정되어 있더라도 페이지 단위로 스크롤한다.

  1. 커서가 Primary command line에 위치한 경우

  2. 커서가 화면의 첫 번째 레코드 Line에 위치한 경우

  3. 커서가 화면의 마지막 레코드 Line에 위치한 경우

화면을 왼쪽이나 오른쪽으로 스크롤하면 커서가 위치한 컬럼을 화면의 가장 오른쪽이나 왼쪽으로 위치시킨다. 그러나 다음의 3가지 경우에는 SCROLL이 CSR로 설정되어 있더라도 페이지 단위로 스크롤한다.

  1. 커서가 Primary command line에 위치한 경우

  2. 커서가 화면을 기준으로 레코드의 첫 번째 컬럼에 위치한 경우

  3. 커서가 화면을 기준으로 레코드의 마지막 컬럼에 위치한 경우

SORT / SORTE

지정한 순서로 데이터셋의 모든 레코드를 정렬한다. SORT/SORTE 명령은 편집 모드에서만 실행 가능하며 정렬의 기준이 되는 키 영역은 최대 5개까지 기술이 가능하다. 키 영역을 한 개만 적용하려는 경우 키 영역의 지정이 생략 가능하며 이때 BOUNDS 명령으로 설정한 영역이 사용된다. 키 영역을 두 개 이상 기술하는 경우 옵션을 모두 입력해야 한다. SORT/SORTE 명령이 종료되면 RESET 명령의 대상이 되는 COLS, EXCLUDE Line 등이 모두 초기화된다. 가변형 데이터셋을 정렬하는 경우 지정한 키 영역에 해당하는 데이터가 없거나 일부만 존재하면 binary zero를 채워 정렬한다. SORT는 ASCII 순서로 정렬하며, SORTE는 EBCDIC 순서로 정렬한다.

  • 사용법

    SORT [[[{A|D}] [start-column [end-column]]]...]
    옵션 설명

    A

    오름차순으로 정렬한다. (기본값)

    D

    내림차순으로 정렬한다.

    start-column

    정렬의 기준이 되는 키 영역의 시작 컬럼 위치를 기술한다.

    (1~레코드 최대 길이)

    end-column

    정렬의 기준이 되는 키 영역의 종료 컬럼 위치를 기술한다.

    (1~레코드 최대 길이)

다음은 오름차순으로 정렬하는 예로 start-column과 end-column은 BOUNDS명령으로 설정한 left, right column 값을 따른다.

SORT

다음은 start-column은 1, end-column은 5의 영역을 오름차순으로, start-column은 9, end-column은 15의 영역을 내림차순으로 정렬하는 예이다.

SORT A 1 5 D 9 15
SUBMIT | SUB

현재 편집 중인 JCL을 TJES 서버를 호출하여 Batch 작업을 실행하도록 한다. SUBMIT 명령은 편집 모드에서만 실행 가능하며 저장되어 있는 내용이 아니라 현재 화면에서 편집 중인 내용을 수행한다. SUBMIT 명령어를 사용하려면 TACF Login이 되어 있어야 한다.

따라서 OpenFrame 환경설정의 dstool 서브젝트, COMMON 섹션의 CHECK_DSAUTH 키의 VALUE 항목이 YES로 설정되어 있는지 확인한다. JCL 데이터셋이 SDS인 경우 실행 JCL 이름은 JCL 데이터셋 이름 끝에 ".SPFTEMP"가 붙게 되고 PDS 멤버인 경우 "SPF + PID"로 처리된다.

명령실행 후 화면 하단에 SUBMIT에 대한 수행 메시지가 출력되고 아무키나 누르면 Primary command line으로 복귀한다. 작업 처리 결과는 tjesmgr로 확인한다.

  • 사용법

    SUBMIT | SUB
TOP

데이터셋의 처음으로 화면을 이동한다.

  • 사용법

    TOP
UP

현재 편집 중인 위치에서 지정한 만큼 위로 이동한다.

  • 사용법

    DOWN {MAX | HALF | PAGE | CURSOR | nnn}
    입력항목 설명

    MAX

    가장 처음의 레코드로 이동한다.

    HALF

    페이지의 절반만큼 위로 이동한다.

    PAGE

    이전 페이지의 레코드로 이동한다.

    CURSOR

    현재 커서가 위치한 레코드가 가장 마지막에 위치하도록 이동한다.

    nnn

    지정한 LINE 수만큼 위로 이동한다.