データセット・ユーティリティ

本章では、データセット・ユーティリティについて説明します。

1. 概要

以下は、データセット・ユーティリティの一覧です。各ユーティリティの説明は、各節の内容を参照してください。

ユーティリティ 説明

CTFE

カタログを編集します。

FCHK

直接アクセス・ボリュームに存在するすべてのファイルの属性を印刷します。

FCPY

直接アクセス・ボリュームまたは磁気テープ・ボリュームのデータセットをコピーします。

FDLT

直接アクセス・ボリュームに存在するファイルを削除します。

FDMP

直接アクセス・ボリュームに存在するファイルの内容を編集および印刷します。

GDGM

システム/マスター・カタログに登録されているGDGのGDSを管理します。

ISFG

一般的な非VSAMファイルを利用して、直接アクセス・ボリュームに存在する索引ファイルを作成します。

JYQDDUTY

RDBIIデータセット情報を作成および削除し、ETLを実行します。

KBKARCS

BACKUPコマンドとRESTOREコマンドを使用してデータセットやボリュームのバックアップおよびリカバリを行います。

KQCAMS

VSAMデータセット、非VSAMデータセット、カタログなどの情報を作成および管理します。

2. CTFE

CTFE(Catalog File Editor)は、カタログを編集するユーティリティです。

一般的に、磁気テープ・ボリュームのデータセットや直接アクセス・ボリュームのデータセットを使用する場合、ユーザーはJCLのFD文にファイル名とデータセットが存在するボリュームのシリアル番号を指定することになります。ただし、カタログには、データセット名とデータセットが存在するボリュームのシリアル番号の対応関係が含まれているため、データセット名だけ指定すれば、データセットにアクセスすることができます。つまり、ユーティリティでデータセットを指定すると、ボリュームのシリアル番号は省略できるという意味です。

2.1. FDの設定

以下は、FDの設定項目です。

項目 説明

COIN

制御文の入力データセットです。

LIST

リスト出力データセットです。

2.2. コマンドの設定

COINで入力されたコマンドは、それぞれのコマンドが意味する作業を実行するためのコマンド自体と、それに必要な各種オプションまたはオペランドで構成されています。CTFEは、実行するコマンドをCOINから読み込んで動作します。

  • FILE

    FILEコマンドを使って特定のデータセットを選択します。FILE文にはCATALOG型とREFERENCE型があります。カタログに登録するデータセットを指定する際はCATALOG型のFILE文を使用し、カタログからデータセットを削除するか、カタログに登録されているデータセットの情報を印刷するファイルを指定するときは、REFERENCE型のFILE文を使用します。

    • CATALOG型

      カタログに登録するデータセットを指定します。CATALOG型のFILEコマンド形式は以下のとおりです。

      /[Label]    F[ILE]    FileName,VolSerial 1[(VolSequence 1)]
                            [,VolSerial 2[(VolSequence 2)] …
      項目 説明

      FileName

      カタログに登録するデータセット名を指定します。指定できるデータセットは、カタログに登録されていない一般的なデータセットとGDSです。ただし、GDSの場合は、GDS(+1)からGDS(+99)のデータセットのみ登録できます。

      一般的なデータセット名(0)は変更の場合のみ使用でき、一般的なデータセット名(-1)から一般的なデータセット名(-99)のデータセットは登録できません。

      VolSerial (1~n)

      データセットが存在するボリュームのシリアル番号を指定します。マルチ・ボリュームの場合、最大255個のボリューム・シリアル番号を指定できます。

      OpenFrameではマルチ・ボリュームをサポートしないため、複数のボリューム・シリアル番号が指定された場合、最初に指定されたボリューム・シリアル番号のみ有効です。

      以前の富士通XSPで使用されていたCOIN文の構文解析のみサポートしています。

      VolSequence (1~n)

      ボリューム・シリアル番号の順序を指定します。nは3桁の数字でのみ指定可能です。OpenFrameでは使用されず、以前の富士通XSPで使用されていたCOIN文の構文解析のみサポートしています。

    • REFERENCE型

      カタログからデータセットを削除したり、カタログに登録されているデータセットの情報を印刷したりする目的でデータセットを指定します。以下は、REFERENCE型のFILEコマンドの形式です。

      /[Label]    F[ILE]    FileName
      項目 説明

      FileName

      カタログから削除するデータセット、またはカタログに登録されているデータセットの情報を印刷するデータセットを指定します。

      一般的なデータセット名(+1)から一般的なデータセット名(+99)を除いたGDSと一般的なデータセット名を指定できます。

  • CATL

    カタログに指定されているデータセットとボリューム・シリアル番号の対応関係を登録します。登録するデータセット名と同じデータセットがカタログにすでに存在しており、この2つのデータセットのボリューム・シリアル番号が一致しない場合は、エラーとして処理します。

    以下は、CATLコマンドの構文です。

    /[Label]    C[ATL]    [Comments]

    カタログに登録または変更するデータセットはFILE文で指定します。CATL文の次に追加されるFILE文はCATALOG型である必要があります。このFILE文の数には制限がありません。

    カタログされていないデータセットをカタログに登録する際に必要なデータの属性情報は、VTOCから取得できます。

  • UNCA

    すでに登録されているデータセットとボリューム・シリアル番号の対応関係をカタログから削除します。

    以下は、UNCAコマンドの構文です。

    /[Label]    U[NCA]    [Comments]

    カタログから削除するデータセットはFILE文で指定します。UNCA文の次に追加されるFILE文はREFERENCE型である必要があります。このFILE文の数には制限がありません。

  • SAVE

    OpenFrameのカタログ全体をバックアップします。

    OpenFrame設定のctfe.COMMON.CATALOG_BACKUP_DIRECTORYディレクトリに[U03 DDのデータセット名].CATLG, ASSOCで2つのバックアップ・ファイルが作成されます。

    この設定がない場合は、OpenFrame設定のofsys.DIRECTORY.TEMP_DIRディレクトリの下のctfeディレクトリに作成され、U03 DDが指定されていない場合は、CATBKUP.CATLG, CATBKUP.ASSOCで作成されます。

    /[Label]    S[AVE]

FILE文を使用した個別のカタログ項目のバックアップはサポートされていません。 また、出力ファイルの形式はメインフレームと互換性がありません。

  • RCVR

    SAVEコマンドを使用してバックアップしたカタログ項目を復元します。

    対象ファイルは、OpenFrame設定のctfe.COMMON.CATALOG_BACKUP_DIRECTORYディレクトリにある[U01 DDのデータセット名].CATLG, ASSOCです。

    この設定がない場合は、OpenFrame設定のofsys.DIRECTORY.TEMP_DIRディレクトリの下のctfeディレクトリから検索し、U01 DDが指定されていない場合は、CATBKUP.CATLG、CATBKUP.ASSOCを検索します。

    /[Label]    R[CVR]

FILE文を使用した個別のカタログ項目の復元はサポートされていません。

  • TAKE

    カタログに登録されているデータセット名とボリューム・シリアル番号などのカタログ関連情報を印刷の目的で出力します。カタログ情報は、以下の2つの方法で出力されます。

    • FILE文を使用して指定されたデータセットのみを出力します。

    • カタログに登録されているすべてのデータセットを出力します。

    印刷のために出力されるデータセットの情報は以下のとおりです。

    • 絶対データセット名

    • カタログが登録された日付

    • ボリューム・シリアル番号

    以下は、TAKEコマンドの構文です。

    /[Label]    T[AKE]    [{SEP|GNR|GDG}]
    項目 説明

    SEP

    GDS(Generation Data Set)と一般的なデータセットを区別してから、カタログに登録されているすべてのデータセットの情報を出力します。

    GNR

    カタログに登録されている一般的なデータセットの情報のみを出力します。GDSは除外します。

    GDG

    カタログに登録されているGDSの情報のみを出力します。一般的なデータセットは除外します。

    1. カタログに登録されているすべてのデータセットの情報を印刷するとき、FILE文を使用しない場合にのみオプションを指定します。オプションを指定すると、FILE文は使用できません。

    2. カタログに登録されている特定のデータセットの情報を印刷するときは、REFERENCE型のFILE文を使用します。このFILE文の数には制限がありません。FILE文が省略された場合は、カタログに登録されているすべてのデータセットの情報を印刷します。

  • VUNC

    特定のボリュームに存在するデータセットのうち、カタログに登録されているデータセットのみカタログから削除します。GDSは処理対象から除外します。

    以下は、VUNCコマンドの構文です。

    /[Label]    V[UNC]    VolSerial
    項目 説明

    VolSerial

    カタログから削除するデータセットが存在するボリュームのシリアル番号を指定します。

    1. 指定のボリューム内に存在するデータセットのうち、GDSを除いてカタログに登録されているすべてのデータセットをカタログから削除します。

    2. 1つのボリューム・シリアル番号のみ指定できます。

  • FIN

    CTFEユーティリティ制御文の最後を示します。省略が可能です。

    以下は、FINコマンドの構文です。

    /[Label]    FIN    [Comments]

2.3. 使用例

以下は、非VSAMデータセットをCTFEコマンドのCATL文を使用して、登録されていない一般的なデータセットとGDSをカタログに登録する例です。

データセット名 ボリューム・シリアル番号

ABCD

V00001

A.B.C.D

V00002

G(+1)

V00003

G(+2)

V00003

\ JOB  CTFE01
\ EX    CTFE
\  FD    LIST=DA,SOUT=A
\  FD    COIN=*
/ CATL
/ FILE ABCD,V00001
/ F   A.B.C.D,V00002
/ F   G(+1),V00003
/ F   G(+2),V00003
/ FIN
\ JEND

以下は、UNCA文を使用して、カタログに登録されているデータセットをカタログから削除する例です。削除するデータセットは、ABCD、A.B.C.D、G(-1)です。

\ JOB  CTFE02
\  EX    CTFE
\  FD    LIST=DA,SOUT=A
\  FD    COIN=*
/ UNCA
/ FILE ABCD
/ F   A.B.C.D
/ F   G(-1)
/ FIN
\ JEND

以下は、VUNC文を使用して、指定したボリューム内でカタログに登録されているデータセットを削除する例です。削除するボリューム・シリアル番号は、V00005です。

\ JOB  CTFE03
\  EX    CTFE
\  FD    LIST=DA,SOUT=A
\  FD    COIN=*
/ VUNC  V00005
/ FIN
\ JEND

以下は、TAKE文を使用して、カタログに登録されている特定のファイルなどの情報を出力する例です。印刷するデータセット名は、X.Y.Z、X.*.ABC000(データセット名が「X」で始まり、「ABC000」で終わるデータセット)です。

\ JOB  CTFE04
\  EX    CTFE
\  FD    LIST=DA,SOUT=A
\  FD    COIN=*
/ TAKE
/ FILE  X.Y.Z
/  FILE  X.*.ABC000
/  FIN
\ JEND

以下は、TAKE文を使用して、カタログに登録されているすべてのファイル情報を出力する例です。

\ JOB  CTFE05
\  EX    CTFE
\  FD    LIST=DA,SOUT=A
\  FD    COIN=*
/ TAKE
/  FIN
\ JEND

以下は、TAKE文を使用して、カタログに登録されているすべてのデータセットの情報を一般的なデータセットとGDSに区別して出力する例です。

\ JOB  CTFE06
\  EX    CTFE
\  FD    LIST=DA,SOUT=A
\  FD    COIN=*
/ TAKE  SEP
/  FIN
\ JEND

以下は、SAVE文を使用して、カタログを環境設定で指定されたディレクトリに CATALOGA.SAVE.CATLG、CATALOGA.SAVE.ASSOCファイルとしてバックアップする例です。

\ JOB CTFE7
\ EX CTFE
\ FD LIST=DA,SOUT=A
\ FD U03=DA,FILE=CATALOGA.SAVE,VOL=DEFVOL
\ FD COIN=*
/ SAVE
/ FIN
\ JEND

以下は、RCVR文を使用して、CATALOGA.SAVE.CATLG、CATALOGA.SAVE.ASSOCファイルからカタログを復元する例です。

\ JOB CTFE7
\ EX CTFE
\ FD LIST=DA,SOUT=A
\ FD U01=DA,FILE=CATALOGA.SAVE,VOL=DEFVOL
\ FD COIN=*
/ RCVR
/ FIN
\ JEND

2.4. 注意事項と戻りコード

以下は、CTFEユーティリティ・プログラムがバッチ・アプリケーションを実行した結果です。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをLIST FDに出力し、各エラーに該当するコードを返します。

    以下は、CTFEユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    続行可能なエラーが発生した場合です。

    30

    続行できないエラーが発生した場合です。

以下のコマンドの略語を使用できます。

  • CATL:C

  • UNCA:U

  • SAVE:S

  • RCVR:R

  • TAKE:T

  • VUNC:V

  • FILE:F

2.5. 関連環境設定

CTFEユーティリティの環境設定は、OpenFrame環境設定のctfeサブジェクトで行います。CTFEの一部の動作は、ユーザーの要求に応じて設定を変更して調整することができます。環境設定項目についての詳細は、OpenFrame Batch『環境設定ガイド』を参照してください。

3. FCHK

FCHK(File Check)は、直接アクセス・ボリュームに存在するすべてのファイルの属性を印刷するためのユーティリティです。

  • 印刷ファイル形式

    FCHKユーティリティで印刷されるファイルの種類は、LIST形式とSPD形式の2種類があります。

    ファイル形式 属性

    LIST形式

    • 直接アクセス装置の機種

    • 直接アクセス・ボリュームのボリューム・シリアル番号

    • ファイル名

    • データセットの構成

    • レコード形式

    • ブロック・サイズ

    • レコード長

    • キー長

    • トラック番号

    • 使用されたトラック

    • ボリューム番号

    • 有効期限

    • 最終使用日

    SPD形式

    • タイトルレコード(ID : SPD)

    • FEB レコード(ID : FEB)

    • ファイルラベルレコード(ID : FL)

    • リストレコード(ID : LST)

    • メッセージレコード(ID : MSG)

    • エラーログレコード(ID : ELOG)

    • エラーメッセージレコード (ID : EMSG)

    • 完了レコード (ID : CODE)

3.1. FDの設定

以下は、FDの設定項目です。

  • LIST形式のFD設定項目

    項目 説明

    U01

    入力ファイルのアクセス名です。

    LIST

    リスト出力ファイルです。

  • SPD形式のFD設定項目

    項目 説明

    U01

    入力ファイルのアクセス名です。

    SUTYPASS

    SPD出力ファイルです。

3.2. コマンドの設定

必要な情報がJCLのFD文に指定されていない場合、FCHKユーティリティはWTOR(Write To Operator with Reply)方式を利用して、コンソールを通じてオペレーターからボリューム・シリアル番号を取得します。ボリュームの情報がFD文に指定された場合、FCHK制御文は省略されます。

  • FCHK

    コンソールに「XTC0510R FCHK PLEASE KEY-IN PARAMETER」メッセージが表示された後、オペレーターは処理対象の直接アクセス・ボリュームのシリアル番号とボリューム・パスワードを入力します。OpenFrameではボリューム・パスワードが存在しないため、ボリューム・パスワードは省略可能です。

3.3. 使用例

以下は、FD文でボリューム・シリアル番号を指定する例です。

\ JOB  FCHK
\ EX   FCHK
\ FD   U01=DA,FILE=VOLUME,VOL=000001
\ FD   LIST=DA,VOL=WORK,TRK=(10,3),SOUT=A
\ JEND
項目 説明

U01

入力直接アクセス・ボリュームです。

FILE

ファイル名です。

VOL

ボリューム・シリアル番号です。

LIST

LIST形式の処理結果の出力ファイルです。

以下は、FD文の入力ファイルにDUMMYを指定した場合、コンソールに入力要求メッセージが表示され、コンソールからボリューム・シリアル番号を入力する例です。

\ JOB  FCHK
\ EX   FCHK
\ FD   U01=DUMMY
\ FD   SUTYPASS=DA,VOL=WORK,TRK=(10,3),SOUT=A
\ JEND

[UTIL;20100101_120000;37;0;JOB00001;1000] XTC0510R FCHK PLEASE KEY-IN PARAMETER
Input Message: 000001 《 Enter 》
項目 説明

U01

入力直接アクセス・ボリュームです。

SUTYPASS

SPD形式の処理結果の出力ファイルです。

3.4. 注意事項と戻りコード

入力直接アクセス・ボリュームを定義するFD文のファイル名を「FILE=VOLUME」に指定し、出力するボリュームを指定する必要があります。「FILE=VOLUME」と指定すると、ランナーでは該当するFDを一時データセットとして処理し、指定したボリュームのみをFCHKで使用します。コンソールを通じて入力する場合は「U01=DUMMY」と指定します。

以下は、FCHKユーティリティ・プログラムがバッチ・アプリケーションを実行した結果です。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをLIST FDに出力し、各エラーに該当するコードを返します。

    以下は、FCHKユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    続行できるエラーが発生した場合です。

    50

    続行できないエラーが発生した場合です。

4. FCPY

FCPY(File Copy)は、直接アクセス・ボリュームまたは磁気テープ・ボリュームのデータセットをコピーするユーティリティです。PS(Physical Sequential)、PO(Partitioned)、またはIS(Indexed Sequential)で構成されたデータセットのみを入力データセットとして使用できます。出力データセットの構成はPSとPOのみ可能です。

4.1. FDの設定

以下は、FDの設定項目です。

項目 説明

COIN

制御文の入力データセットです。

LIST

出力リスト・データセットです。コピーしたレコード数を出力します。

U01

入力データセットのアクセス名です。

U02

出力データセットのアクセス名です。

4.2. コマンドの設定

FCPYユーティリティが提供する機能を実行するためのコマンドをJCL PARA文のオペランド、あるいはCOINに指定します。

  • PARA文のオペランドのFCPY

    以下は、JCL PARA文のオペランドに指定するコマンドの構文です。

    ¥PARA /[label] FCPY  IN=U01,OUT=U02
  • COINでのFCPY

    以下は、COINに指定するFCPYコマンドの構文です。

    この構文はデータセットのコピーを実行し、1回のみ使用できます。

    /[label]   FCPY    IN=[{U01|Input_Access}],OUT=[{U02|Output_Access}]
                       [,NL=({F|V|U}[B],Input_RecordLen,Input_BlockSize)]
                       [,BL=Output_BlockSize]
                       [,COUNT={YES|NO}]
    項目 説明

    IN

    入力データセットのアクセス名を指定します。

    OUT

    出力データセットのアクセス名を指定します。

    NL

    NL(No Label)オペランドは、磁気テープ・ボリュームのデータセットを入力する場合に使用されます。

    • F : 固定長レコード形式のデータセットを入力します。

    • V : 可変長レコード形式のデータセットを入力します。

    • U : 不定形式レコードのデータセットを入力します。

    • B : ブロック化されているレコード形式のデータセットを入力します。

    • Input_RecordLen : 入力レコード長は1~32760の範囲内で指定します。

    • Input_Block_Size : 入力ブロック長は1~32760の範囲内で指定します。

    BL

    出力データセットのブロック・サイズを指定します。

    COUNT

    • YES : オペレーター・コンソールにコピーされたレコード件数を表示します。

    • NO : オペレーター・コンソールにコピーされたレコード件数を表示しません(デフォルト値)

  • FIN

    FCPYユーティリティ制御文の最後を示します。省略可能です。

    以下は、FINコマンドの構文です。

    /[Label]    FIN    [Comments]

4.3. 使用例

以下は、カタログされたデータセットを直接アクセス・ボリュームに新規データセットとしてコピーする例です。新規データセットのブロック・サイズは800に設定します。

\ JOB  FCPY01
\ EX   FCPY
\  FD   U01=DA,FILE=F1,VOL=100000,DISP=KEEP
\  FD   U02=DA,FILE=F2,VOL=100000
\  FD   LIST=DA,VOL=WORK,SOUT=A
\  PARA / FCPY IN=U01,OUT=U02,BL=800
\ FIN
\ JEND
  • 入力データセット

    区分 設定値

    データセット名

    F1

  • 出力データセット

    区分 設定値

    データセット名

    F2

    ボリューム・シリアル番号

    100000

    ブロック・サイズ

    800

以下は、カタログされたデータセットを直接アクセス・ボリュームに新規データセットとしてコピーする例です。オペレーター・コンソールにコピーされたレコード数を表示します。

\ JOB  FCPY02
\  EX   FCPY
\  FD   U01=DA,FILE=F3,VOL=100001,DISP=KEEP
\  FD   U02=DA,FILE=F4,VOL=100001
\  FD   LIST=DA,VOL=WORK,SOUT=A
\  FD   COIN=*
/  FCPY IN=U01,OUT=U02,COUNT=YES
/  FIN
\  JEND
  • 入力データセット

    区分 設定値

    データセット名

    F3

  • 出力データセット

    区分 設定値

    データセット名

    F4

    ボリューム・シリアル番号

    100001

4.4. 注意事項と戻りコード

以下は、FCPYユーティリティを使用する際の注意事項です。

  • JCLのFD文でFCBサブパラメータ値が与えられても、FCPY制御文のNLパラメータ、BLパラメータの値が優先されます。

  • 入力データセットと出力データセットとして同じ直接アクセス・ボリュームの同じデータセット名を指定する場合、エラーとして処理され、ユーティリティの実行が中断されます。

  • 入力データセットFD文は、一時データセットを指定することができません。ただし。以前のステップでFD文で指定した一時データセットをSW文で指定することは可能です。

  • 基本的に出力データセットは、入力データセットのLRECLとRECFMの値でFCB情報をオーバーライドして作成します。出力データセットFD文のFCBパラメータが指定されても、BLKSIZE値のみ有効です。

ただし、以下のような場合は、入力データセットのLRECLとRECFMの値でオーバーライドせずに、出力データセットのFCB情報そのまま作成します。

  • 出力データセットFD文のFILEパラメータにADサブパラメータが指定された場合

    \ JOB  FCPY
    \  EX   FCPY
    \  FD   U01=DA,VOL=100001,FILE=IFILE
    \  FD   U02=DA,VOL=100001,FILE=(OFILE,AD)
    \  FD   LIST=DA,SOUT=A
    \  FD   COIN=*
    /  FCPY IN=U01,OUT=U02
    /  FIN
    \  JEND
  • 入力データセットFD文にDUMMYデータセットが指定された場合

    \ JOB  FCPY
    \  EX   FCPY
    \  FD   U01=DUMMY
    \  FD   U02=DA,VOL=100001,FILE=OFILE,TRK=(1,1),DISP=CAT,
       FCB=(BLKSIZE=100,LRECL=100,RECFM=FB)
    \  FD   LIST=DA,SOUT=A
    \  FD   COIN=*
    /  FCPY IN=U01,OUT=U02
    /  FIN
    \  JEND
  • 入力データセットFD文にDUMMYデータセット、FCBパラメータにLRECLとRECFMが指定され、出力データセットが以前作成されたデータセットの場合

    \ JOB  FCPY
    \  EX   *
    \  FD   U02=DA,VOL=100001,FILE=OFILE,TRK=(1,1),DISP=CAT,
       FCB=(BLKSIZE=100,LRECL=100,RECFM=FB)
    \  EX   FCPY
    \  FD   U01=DUMMY,FCB=(BLKSIZE=200,LRECL=200,RECFM=VB)
    \  FD   U02=DA,FILE=OFILE
    \  FD   LIST=DA,SOUT=A
    \  FD   COIN=*
    /  FCPY IN=U01,OUT=U02
    /  FIN
    \  JEND
  • 出力データセットFD文に一時データセットが指定され、FCBパラメータにLRECLとRECFMが指定された場合

    \ JOB  FCPY
    \  EX   FCPY
    \  FD   U01=DA,VOL=100001,FILE=IFILE
    \  FD   U02=DA,VOL=100001,TRK=(1,1),
       FCB=(BLKSIZE=100,LRECL=100,RECFM=FB)
    \  FD   LIST=DA,SOUT=A
    \  FD   COIN=*
    /  FCPY IN=U01,OUT=U02
    /  FIN
    \  JEND

以下は、FCPYユーティリティ・プログラムを実行した結果です。

  • 正常に実行された場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをLIST FDに出力し、各エラーに該当するコードを返します。

    以下は、FCPYユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    続行できるエラーが発生した場合です。

    50

    続行できないエラーが発生した場合です。

5. FDLT

FDLT(File Delete)は、直接アクセス・ボリュームに存在するファイルを削除するユーティリティです。

以下は、FDLTユーティリティの削除機能です。

  • FDLT文にボリューム・シリアル番号が指定されている場合、カタログされていないファイルとして見なし、VTOCでのみ削除します。

  • FDLT文にボリューム・シリアル番号が省略された場合はカタログされているファイルと見なし、カタログに登録されている情報も削除します。

  • ファイル名にアスタリスク(*)が使用された場合、アスタリスクが指定されたレベル以下の全レベルのファイルをすべて削除し、カタログに登録されているファイルの情報も削除します。

  • GDGファイルが指定された場合、指定されたファイルを削除し、カタログに登録されている情報も削除します。

5.1. FDの設定

以下は、FDの設定項目です。

項目 説明

COIN

制御文の入力ファイルです。

LIST

出力リスト・ファイルです。

U50

削除対象のファイルです。

5.2. コマンドの設定

COINで入力された各コマンドは、作業を実行するためのコマンド本体と、それに必要な各種オプションまたはオペランドで構成されています。FDLTは、実行するコマンドをCOINから読み取り、動作します。

  • FDLT

    ファイルを削除します。

    以下は、FDLT文の構文です。

    /[label]    FDLT    FileName,
                       {[,VolSerial][,Password]
                        [,VOL=(VolSerial[,…])]
                        [,PSW=Password]}
    項目 説明

    FileName

    削除するファイル名を指定します。

    指定できるファイル名は、ボリューム・シリアル番号の指定の有無によって変わります。

    VolSerial

    削除するファイルが存在する直接アクセス・ボリュームのシリアル番号を指定します。このパラメータは、位置パラメータまたはキーワード・パラメータで指定できます。パラメータが省略されている場合は、削除するファイルがカタログに登録されているファイルであると見なします。

    以下は、ボリューム・シリアル番号の存在の有無によって指定できるファイル名です。

    • ボリューム・シリアル番号が存在する場合: 一般的なファイル名

    • ボリューム・シリアル番号が存在しない場合: 一般的なファイル名、カタログに登録されているファイル名、GDGファイル名

    OpenFrameではマルチ・ボリュームが使用されないため、以前の富士通XSPで使用されていたCOIN文を解析するために構文チェックのみサポートしています。

    Password

    削除するファイルがパスワードを持っている場合、そのパスワードを指定します。

    このパラメータは、位置パラメータまたはキーワード・パラメータで指定できます。ボリューム・シリアル番号が位置パラメータで指定された場合は、パスワードも位置パラメータで指定し、キーワード・パラメータで指定された場合は、パスワードもキーワード・パラメータで指定する必要があります。

    OpenFrameではファイル・パスワード機能がないため、構文チェックのみサポートしています。

  • FIN

    FDLTユーティリティ制御文の最後を示します。省略が可能です。

    以下は、FINコマンドの構文です。

    /[Label]    FIN    [Comments]

5.3. 使用例

以下は、カタログに登録されている「A.*.C」ファイルをすべて削除し、カタログに登録されている情報も削除する例です。

\ JOB  FDLT01
\ EX    FDLT
\  FD    LIST=DA,VOL=WORK,SOUT=B
\  FD    COIN=*
/ FDLT A. *. C
/ FIN
\ JEND

以下は、カタログに登録されている「A.B.*」ファイルとGDGファイル「A(-2)」を削除し、カタログに登録されている情報も削除する例です。

\ JOB  FDLT02
\ EX    FDLT
\  FD    LIST=DA,VOL=WORK,SOUT=B
\  FD    COIN=*
/ FDLT A.B.*
/ FDLT A(-2)
/ FIN
\ JEND

以下は、ボリューム・シリアル番号「100000」に存在するファイル「ABCD」を削除する例です。

\ JOB  FDLT03
\ EX   FDLT
\ FD   LIST=DA,VOL=WORK,SOUT=A
\ FD   COIN=*
/ FDLT ABCD,100000
/ FIN
\ JEND

5.4. 注意事項と戻りコード

以下は、アクセス名がU50のファイルを使用する場合の注意事項です。

  • U50=DUMMYと指定するか、あるいは省略します。

  • U50=DUMMYと指定した場合も、以前のジョブ・ステップでアクセス名がU50のファイルがCONT指定として使用されていてはいけません。

以下は、FDLTユーティリティ・プログラムがバッチ・アプリケーションを実行した結果です。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをLIST FDに出力し、各エラーに該当するコードを返します。

    以下は、FDLTユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    ボリュームが指定されており、そのボリュームに指定したファイルが存在しない場合です。

    40

    ボリュームが指定されていないか、あるいは指定したファイルが存在しない場合です。

    50

    続行できないエラーが発生した場合です。

6. FDMP

FDMP(File Dump)は、直接アクセス・ボリュームに存在するファイルの内容を編集し、印刷するためのファイル・ダンプ・ユーティリティです。

FCHKユーティリティがファイルの属性のみを印刷するのに対し、FDMPユーティリティはファイルのコンテンツを印刷します。

  • 直接アクセス・ボリュームのファイルの印刷

    区分 説明

    DSORG

    • PS (Physical Sequential)

    • PO (Partitioned)

    • IS (Indexed Sequential)

    印刷文字

    16進数

6.1. FDの設定

以下は、FDの設定項目です。

項目 説明

COIN

制御文の入力ファイルです。

LIST

リスト出力ファイルです。

U01

入力ファイルです。

6.2. コマンドの設定

COINにFDMPユーティリティの機能を実行するコマンドを指定するか、JCL PARA文のオペランドを使用して指定することができます。

  • FDMP

    FDMPコマンドは1回のみ指定できます。この構文には、入力ファイル、リスト・ファイルのアクセス名、および仮名文字の出力の有無を指定します。

    以下は、FDMP文の構文です。

    /[label]    FDMP       IN=Input_Access,OUT=Output_Access
                           [,KANA={YES|NO}]
    項目 説明

    IN

    入力ファイルのアクセス名を指定します。

    OUT

    リスト・ファイルのアクセス名を指定します。

    KANA

    仮名文字の出力の有無を指定します。形式的にのみサポートしています。

  • DUMP

    DUMPコマンドは、データセットの構造または磁気テープ・ファイルを指定し、また印刷範囲と印刷形式を指定します。印刷可能なデータセットのうち、IS(Indexed Sequential)はKEY制御文の形式を指定します。DUMP制御文はFDMPの次に指定します。

    以下は、DUMP文の構文です。

    /[label]    DUMP    PS=*,*
                           [,RCD]
                        PO=*
                           [,RCD]
                        IS={KEY |
                            KEY,LEN=mmm |
                            KEY,* |
                            *,KEY |
                            *,*}
                            [,KMOD={E|H}]

    以下は、DUMP文のオペランドについての説明です。

    • PS= *,*[, RCD]

      PSファイルを印刷します。以下は、PSファイルの印刷範囲です。

      オペランド 印刷範囲

      *,*

      ファイルの最初から最後までの全ブロックを印刷します。

      RCD

      レコード単位で印刷します。省略した場合は、ブロック単位で印刷します。OpenFrameでは形式的にのみサポートしており、常にRCDが存在するかのように動作します。

    • PO=*[, RCD]

      POファイルを印刷します。特定のメンバーを印刷するには、JCLのFD文でメンバー名を指定します。ディレクトリ全体を印刷する場合はメンバー名を指定しません。現在OpenFrameでは、特定のメンバーの印刷のみをサポートします。

      以下は、POファイルの印刷範囲です。

      オペランド 印刷範囲

      *

      特定のメンバーの全ブロックを印刷します。

      RCD

      特定のメンバーをレコード単位で印刷します。ディレクトリを印刷する場合、ファイル単位で印刷します。

      OpenFrameでは常にRCDが存在するかのように動作します。

    • IS={KEY | KEY, LEN=mmm | KEY,* | *, KEY | *,*}[, KMOD={E | H}]

      削除されていないISファイルを印刷します。以下は、ISファイルの印刷範囲です。

      オペランド 印刷範囲

      KEY

      KEY文で指定したキーを持つレコードを印刷します。

      KEY, LEN=mmm

      KEY文で指定したキーの最初からmmmバイト内で、指定したキーを持つレコードを印刷します。mmmは254バイト以内で指定します。

      KEY,*

      KEY文で指定したキーを持つレコードからファイルの最終レコードまで印刷します。

      *, KEY

      ファイルの最初からKEY文で指定したキーを持つレコードまで印刷します。

      *,*

      ファイルの全レコードを印刷します。

      KMOD= {E|H}

      KEYパラメータを指定した場合、KEY文の形式を指定します。

      • E : EBCDIC文字

      • H : 16進数

      OpenFrameでは形式的にのみサポートしています。

      以下は、KEYとLEN=mmmの指定例です。

      /  KEY  ‘7001234’
      • LEN=3の場合、KEYの範囲は7000000 ≤ KEY< 7010000です。

      • LEN=4の場合、KEYの範囲は7001000 ≤ KEY< 7002000です。

  • KEY

    DUMP文で、ISファイルの印刷範囲にKEYオペランドを指定した場合、KEY文を使用してキー値を入力します。DUMP文でKEYオペランドを指定していない場合は、省略が可能です。

    以下は、KEY文の構文です。最大50個の構文を指定できます。

    /[label]     KEY       ‘XXXXXX’
    項目 説明

    ‘XXXXXX’

    キー値を単一引用符(' ')で囲んで指定します。

    キーの最大長は以下のとおりです。

    KMODオプション ISファイルの最大長

    KMOD=E

    254

    KMOD=H

    508

    以下のように、KEY値が複数行にまたがって表示される場合、72番目の列に空白ではなくキャラクターを入力し、その次の行に続けて入力します。

                                                                           72
    /  KEY  'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
             XXXX''
  • FIN

    FDMPユーティリティ制御文の最後を示す構文であり、省略が可能です。FIN文がFDMP制御文の先頭に指定されている場合、FDMPプログラムはいかなる処理もせずに正常終了します。

    FINコマンドの構文は以下のとおりです。

    /[Label]    FIN    [Comments]

6.3. 使用例

以下は、直接アクセス・ボリュームのPS(Physical Sequential)ファイルを印刷する例です。

\ JOB  FDMP01
\ EX   FDMP
\ FD   U01=DA,VOL=USER10,FILE=F1
\ FD   LIST=DA,VOL=WORK,CYL=(5,1),SOUT=A
\ FD   COIN=*
/ FDMP IN=U01,OUT=LIST,KANA=YES
/ DUMP PS=*,*,RCD
/ FIN
\ JEND
項目 説明

ボリューム・シリアル番号

USER10

ファイル名

F1

印刷範囲

全ブロック

印刷単位

レコード単位

以下は、直接アクセス・ボリュームのPO(Partitioned)ファイルを印刷する例です。

\ JOB  FDMP03
\ EX   FDMP
\ FD   U01=DA,VOL=USER10,FILE=F3,MEMBER=AAA
\ FD   LIST=DA,VOL=WORK,CYL=(5,1),SOUT=A
\ FD   COIN=*
/ FDMP IN=U01,OUT=LIST
/ DUMP PO=*
/ FIN
\ JEND
項目 説明

ボリューム・シリアル番号

USER10

ファイル名

F3

メンバー名

AAA

印刷範囲

全ブロック

印刷単位

ブロック単位

以下は、直接アクセス・ボリュームのIS(Indexed Sequential)ファイルを印刷する例です。

\ JOB  FDMP07
\ EX   FDMP
\ FD   U01=DA,VOL=USER10,FILE=F7
\ FD   LIST=DA,VOL=WORK,CYL=(5,1),SOUT=A
\ FD   COIN=*
/ FDMP IN=U01,OUT=LIST
/ DUMP IS=*,*
/ FIN
\ JEND
項目 説明

ボリューム・シリアル番号

USER10

ファイル名

F7

印刷範囲

全レコード

以下は、直接アクセス・ボリュームのIS(Indexed Sequential)ファイルを印刷する例です。

\ JOB  FDMP07
\ EX   FDMP
\ FD   U01=DA,VOL=USER10,FILE=F8
\ FD   LIST=DA,VOL=WORK,CYL=(5,1),SOUT=A
\ FD   COIN=*
/ FDMP IN=U01,OUT=LIST
/ DUMP IS=KEY
/  KEY='12345'
/ FIN
\ JEND
項目 説明

ボリューム・シリアル番号

USER10

ファイル名

F8

KEY値

12345

6.4. 注意事項と戻りコード

FDMPプログラムはFL(ファイル・ラベル)を印刷しません。

以下は、FDMPユーティリティ・プログラムがバッチ・アプリケーションを実行した結果です。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをLIST FDに出力し、各エラーに該当するコードを返します。

    以下は、FDMPユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    続行できるエラーが発生した場合です。

    50

    続行できないエラーが発生した場合です。

7. GDGM

GDGM(Generation Data Group Manager)は、システム・カタログとマスター・カタログに登録されているGDGのGDS(GDGの一世代に当たる非VSAMデータセット)を管理するユーティリティです。

制御文でボリュームの種類とGDG名、GDG世代番号を指定することができます。GDGMは、カタログから当該GDGの指定された世代番号のGDSを残し、以前の世代を削除した後、その結果を出力します。また、DA(=DASD)ボリュームを指定した場合、GDSをカタログから削除し、実際のボリュームからも削除します。世代番号を「/」と指定した場合、GDGMは削除は行わずに当該GDGの状態のみを出力します。

7.1. FDの設定

以下は、FDの設定項目です。

項目 説明

COIN

制御文の入力データセットです。

LIST

リスト出力データセットです。

7.2. コマンドの設定

COINに入力可能なコマンドには、GDGM、FILE、EJECT、FINがあります。それぞれの詳細情報は以下のとおりです。

  • GDGM

    GDGMジョブを開始するための制御文です。後続するFILE文のGDGが属しているボリュームの種類を指定します。最初のGDGM文が出現するまで指定された他の制御文はすべて無視されます。

    以下は、GDGM文の構文です。

    /[Label]    G[DGM]    [ { DA | MT } ]
    項目 説明

    DA

    後続するFILE文で指定するGDGが属しているボリュームが直接アクセス・ボリュームであることを示します。ボリュームの種類をDAと設定した場合、GDGMはカタログからGDSを削除するとき、実際のボリュームからもGDSを削除します。

    MT

    後続するFILE文で指定するGDGが属しているボリュームが磁気テープ・ボリュームであることを示します。ボリュームの種類をMTと設定する場合、GDGMはカタログからGDSを削除するとき、ボリュームからは削除しません。

  • FILE

    GDGMが処理するGDG名と世代番号を指定します。世代番号は4つの方式で指定します。

    以下は、FILE文の構文です。

    /[Label]    FILE      GDGName{(0) | (m) | (-n) | (/)}
    項目 説明

    GDGName

    GDGMが処理するGDGの名前を指定します。最大17字まで指定できます。

    (0)

    指定したGDGに対して最新の世代のみ残し、以前世代のGDSはをすべて削除します。m=1と同様に動作します。

    (m)

    指定したGDGに対して最新のm個の世代を残し、その他のGDSはすべて削除します。たとえば、m=3と指定した場合、最新の世代(GDG(0))を含む3つの世代(GDG(-1)、GDG(-2))まで残し、以前世代(GDG(-3)、GDG(-4) …​)は削除します。mは、2桁以内の整数である必要があります。

    (-n)

    指定したGDGに対して最新世代から-n世代までを残し、その他のGDSはすべて削除します。m=n+1と同様に動作します。nは、2桁以内の整数である必要があります。

    (/)

    指定したGDGに対してGDSを削除せずに出力のみ行います。

  • EJECT

    出力するリストを取り替えるコマンド文であり、現在OpenFrameではサポートしていません。

  • FIN

    GDGM制御文の終了を示します。省略可能です。

    以下は、FIN文の構文です。

    /[Label]    FIN    [Comments]

7.3. 使用例

以下は、GDGMユーティリティを使用してGDG1とGDG2から最新の3世代だけを残し、その他のGDSをマスター・カタログと直接アクセス・ボリュームから削除した後、その結果を出力する例です。

\  JOB  GDGM00
\  EX    GDGM
\  FD    LIST=DA,VOL=WORK,TRK=(1,1,RLSE),SOUT=T
\  FD    COIN=*
/  GDGM  DA
/  FILE GDG1(3)
/  FILE  GDG2(-2)
/  FIN
\  JEND

7.4. 注意事項と戻りコード

GDGMは、FILE文以外の制御文でエラーが発生した場合、そのJCL行番号を出力し、ジョブの実行を停止します。FILE文でエラーが発生した場合は、FILE文の行番号とオペランドをエラー・メッセージと一緒に出力し、次の制御文を実行します。

GDGMユーティリティ・プログラムがバッチ・アプリケーションを実行した結果は、以下のとおりです。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージを出力し、各エラーに該当するコードを返します。

    以下は、GDGMユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    続行できるエラーが発生した場合です。

    50

    続行できないエラーが発生した場合です。

8. ISFG

ISFG(Indexed Sequential File Generator)は、一般的な非VSAMファイルを使用して直接アクセス・ボリュームに存在する索引ファイルを作成するためのユーティリティです。

ISFGユーティリティは、以下のように索引ファイルを作成します。

  • ISFGのU01文、U05文にボリューム・シリアル番号が指定されている場合、カタログされていないファイルとして処理します。

  • ISFGのU01文、U05文にボリューム・シリアル番号が指定されていない場合、カタログされているファイルと見なします。

  • ISFGのU05文に指定された索引ファイルでデータセットを作成します。作成された索引ファイルは内部的にKSDSファイルとなります。

8.1. FDの設定

以下は、FDの設定項目です。

項目 説明

COIN

制御文の入力ファイルです。

LIST

出力リスト・ファイルです。

U01

元の非VSAMファイルです。(入力ファイル)

U05

作成する索引ファイルです。(出力ファイル)

8.2. コマンドの設定

COINに入力されたそれぞれのコマンドは、ジョブを実行するためのコマンドと、各種のオプションまたはオペランドで構成されます。ISFGは、実行するコマンドをCOINから読み込んで動作します。

  • ISFG

    入力および出力ファイル(索引ファイル)の属性を指定します。

    以下は、ISFGコマンドの構文です。

    /[label]   ISFG    IN=[{U01|Input_Access}], OUT=[{U05|Output_Access}]
                       [,SPFL]
                       [,DISP={YES | NO}]
    項目 説明

    IN

    入力ファイルのアクセス名を指定します。(主にU01)

    OUT

    出力ファイルのアクセス名を指定します。(主にU05)

    SPFL

    現在はサポートしません。

    DISP

    現在はサポートしません。

  • AREA

    出力ファイル(索引ファイル)の割り当て空間の属性を指定します。

    以下は、AREAコマンドの構文です。

    /[label]   AREA    PRIM=prime_no
                       [,COVF=track_no][,INDX=index_no]
    項目 説明

    PRIM

    出力索引ファイルに割り当てるストレージのシリンダー容量を指定します。現在は構文解析のみサポートします。

    COVF

    出力索引ファイルに割り当てるストレージのシリンダー・トラック容量を指定します。現在は構文解析のみサポートします。

    INDX

    索引の作成条件を指定します。現在は構文解析のみサポートします。

  • BTYP

    出力ファイル(索引ファイル)の属性を指定します。

    以下は、BTYPコマンドの構文です。

    /[label]   BTYP    RKYP=key_pos,KEYS=key_length
                       [,RCDS=record_length][,BLKS=block_length]
                       [,RFOM={F | V}][,BLKD=block_density]
    項目 説明

    RKYP

    出力索引ファイルで1つのレコード上でキーとなる部分の位置を指定します。

    KEYS

    出力索引ファイルで1つのレコード上でキーとなる部分のキーの長さを指定します。

    RCDS

    出力索引ファイルで1データ当たりのレコード長を指定します。省略する場合は、入力ファイルのレコード長をデフォルト値として使用します。

    BLKS

    出力索引ファイルでブロックの長さを指定します。省略する場合は、入力ファイルのブロック長をデフォルト値として使用します。

    RFOM

    出力索引ファイルのレコード形式を指定します。

    • F : 固定長レコード形式

    • V : 可変長レコード形式

    BLKD

    出力索引ファイルでレコードを受け入れる密度を指定します。現在は構文解析のみサポートします。

  • FIN

    ISFGユーティリティ制御文の最後を示します。省略が可能です。

    以下は、FINコマンドの構文です。

    /[Label]    FIN    [Comments]

8.3. 使用例

以下は、U01の非VSAMデータセットを利用して、U05に指定した索引ファイルを作成する例です。

\ JOB  ISFG01
\ EX    ISFG
\ FD    U01=DA,FILE=SAMPLE.DATA01,VOL=DEFVOL,DISP=DLT
\ FD    U05=DA,FILE=SAMPLE.VS.DATA01,VOL=DEFVOL,FCYL=(30,OLD),
         FCB=(LRECL=500,BLKSIZE=5000,RECFM=FB)
\ FD    LIST=DA,VOL=WORK,TRK=5,SOUT=A
\ FD    COIN=*
/ ISFG  IN=U01,OUT=U05
/ AREA  PRIM=30
/ BTYP  RCDS=500,BLKS=5000,RKYP=4,KEYS=6
/ FIN
\ JEND

8.4. 注意事項と戻りコード

以下は、ISFGユーティリティ・プログラムがバッチ・アプリケーションを実行した結果です。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをLIST FDに出力し、各エラーに該当するコードを返します。

    以下は、ISFGユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    入力ファイルを使用して出力ファイルを作成するとき、重複するデータが存在する場合です。重複レコードの件数と内容がリスト・ファイルに出力されます。リスト・ファイルに表示される出力レコードの総件数は、上記の重複レコード件数と、出力ファイルに正常に追加された新規レコードの件数を足した値です。

    40

    コード20以外の続行できるエラーが発生した場合です。

    50

    続行できないエラーが発生した場合です。

9. JYQDDUTY

JYQDDUTYユーティリティを使用して、データベースの作成や削除などのデータセットの内容をデータベースにロードおよびアンロードすることができます。

以下は、JYQDDUTYユーティリティ・プログラムが提供する機能です。

  • メタ・データベースの定義と削除

    • メタ・データベースの定義文(CREATE DBSPACE FOR MD)

    • メタ・データベースの削除文(DROP DBSPACE FOR MD)

  • パブリック・データベースの定義および削除

    • パブリック・データベースの定義文(CREATE DBSPACE FOR PUBLIC)

    • パブリック・データベースの削除文(DROP DBSPACE FOR PUBLIC)

  • スキーマの定義および削除

    • スキーマの定義文(CREATE SCHEMA)

    • スキーマの削除文(DROP SCHEMA)

  • テーブルの定義および削除

    • テーブルの定義文(CREATE TABLE)

    • テーブルの削除文(DROP TABLE)

  • ビューの定義および削除

    • ビューの定義文(CREATE VIEW)

    • ビューの削除文(DROP VIEW)

  • インデックスの定義および削除

    • インデックスの定義文(CREATE INDEX)

    • インデックスの削除文(DROP INDEX)

  • ファイルの定義および削除

    • ファイルの定義文(CREATE FILE)

    • ファイルの削除文(DROP FILE)

  • その他の機能

    • LOAD文(LOAD)

    • UNLOAD文(UNLOAD)

9.1. FDの設定

以下は、FDの設定項目です。

項目 説明

EX文

PGMオペランドにユーティリティ名のJYQDDUTYを指定します。

SYSIN文

制御文のデータセットを指定します。

SYSPRINT文

メッセージのデータセットを指定します。

AIMPED文

AIMPEDを指定します。

SYSDBDCT文

メタ・データベースのためのデータセットを指定します。

SYSULIST文

JYQDDUTYユーティリティの処理結果を出力するデータセットを指定します。

INDATA文

JYQDDUTYユーティリティのロードを実行するときに入力するデータセットを指定します。

OUTDATA文

JYQDDUTYユーティリティのアンロードを実行するときに出力するデータセットを指定します。

9.2. CREATE/DROPコマンドの設定

本節では、JYQDDUTYで実行可能なコマンドについて説明します。マンドの使用方法については、各節の説明を参照してください。

  • CREATE DBSPACE(メタ・データベース・スペース)

    メタ・データベース・スペースを作成します。パブリック・データベースを管理するデータベースです。

    以下は、CREATE DBSPACE(メタ・データベース・スペース)コマンドの構文です。

    CREATE DBSPACE  データベース・スペース名  FOR MD
                    ENVIRONMENT SIS SIS名  
                                DID AIMディレクトリID 
                                RECOVERY(down,cancel,forward)
                    ALLOCATE    DATASET  データセット名 
                                VOLUME   ボリューム・シリアル番号     UNIT  ユニットタイプ  
                    ATTRIBUTE   SPACE(XXX, XXX, CYLINDER | TRACK)
                    PROTECT | NOPROTECT
    項目 説明

    DBSPACE

    作成するメタ・データベース・スペースを指定します。

    SIS

    データベースおよびパブリック・データベースが使用するAIM環境のSIS名を指定します。現在この機能はサポートしておらず、メタ情報としてのみ格納します。

    DID

    データベースおよびパブリック・データベースが使用するAIM環境のAIMディレクトリIDを指定します。現在この機能はサポートしておらず、メタ情報としてのみ格納します。

    RECOVERY

    メタ・データベースとパブリック・データベースのリカバリ方法を指定します。

    DATASET

    作成するデータセット名を指定します。

    VOLUME

    作成するデータセットのボリューム名を指定します。

    UNIT

    データセットを割り当てるための直接アクセス装置のタイプまたはグループ名を指定します。現在この機能はサポートしておらず、メタ情報としてのみ格納します。

    SPACE

    データセットを直接アクセス装置に割り当てるときのスペース容量と方法(初期量、増分量、割り当て方法)を指定します。現在この機能はサポートしておらず、メタ情報としてのみ格納します。

    PROTECT | NOP​​ROTECT

    SQL文による機密保護機能を使用するかどうかを指定します。現在この機能はサポートしておらず、メタ情報としてのみ格納します。

    • 制約事項

      • メタ・データベース・スペースの名前は8文字以内で作成します。

      • メタ・データベース・スペースの名前は一意である必要があります。

  • DROP DBSPACE(メタ・データベース・スペース)

    メタ・データベース・スペースを削除します。

    以下は、DROP DBSPACE(メタ・データベース・スペース)コマンドの構文です。

    DROP DBSPACE メタ・データベース・スペース名 FOR MD
    • 制約事項

      • メタ・データベース・スペースの名前は8文字以内で作成します。

      • コマンドを実行するとき、そのメタ・データベース・スペースに関連付けられたデータベース・スペース、テーブル、またはインデックスが残っている場合は削除できません。

  • CREATE DBSPACE(パブリック・データベース・スペース)

    パブリック・データベース・スペースを作成します。テーブル、ビュー、インデックスを管理します。

    以下は、CREATE DBSPACE(パブリック・データベース・スペース)コマンドの構文です。

    CREATE DBSPACE パブリック・データベース・スペース名 FOR PUBLIC
    • 制約事項

      • パブリック・データベース・スペースの名前は18文字以内で作成します。

  • DROP DBSPACE(パブリック・データベース・スペース)

    パブリック・データベース・スペースを削除します。

    DROP DBSPACE(パブリック・データベース・スペース)コマンドの構文です。

    DROP DBSPACE パブリック・データベース・スペース名 FOR PUBLIC
    • 制約事項

      • パブリック・データベース・スペースの名前は18文字以内で作成します。

      • コマンドを実行するとき、そのパブリック・データベース・スペースに関連付けられたテーブルまたはインデックスが残っている場合は削除できません。

  • CREATE SCHEMA

    スキーマを作成します。スキーマはデータベースの単位ですが、Tiberoではスキーマの概念を使用していません。

    以下は、CREATE SCHEMAコマンドの構文です。

    CREATE SCHEMA スキーマ名
    • 制約事項

      • スキーマ名は18文字以内で作成します。

      • 同じ名前のスキーマ名を指定することはできません。

  • DROP SCHEMA

    DROP SCHEMA文を使用してスキーマの定義を削除します。

    以下は、DROP SCHEMAコマンドの構文です。

    DROP SCHEMA スキーマ名 [CASCADE]
    • 制約事項

      • スキーマ名は18文字以内で作成します。

      • CASCADEを指定すると、そのスキーマに関連付けられたテーブル、ビュー、インデックス、すべてのファイルが削除されるので注意が必要です。

      • CASCADEを指定していない場合は、そのスキーマに関連付けられたテーブル、ビュー、インデックス、ファイルが残っている場合は削除できません。

  • CREATE TABLE

    テーブルを作成します。データ操作の対象となるテーブル名を指定し、テーブルを構成するカラムを定義します。

    以下は、CREATE TABLEコマンドの構文です。

    CREATE TABLE スキーマ名.テーブル名
                (カラム名 カラム型(長さ) 制約1(NOT NULL| PRIMARY KEY | UNIQUE), ...
                   カラム名 カラム型(長さ) 制約1(NOT NULL| PRIMARY KEY | UNIQUE)
                 制約2(PRIMARY KEY | UNIQUE)(カラム名, カラム名 ... ))
                 [NCOMMENT N'コメント'| COMMENT 'コメント']
                 ON テーブル・データベース・スペース名
    項目 説明

    スキーマ名.テーブル名

    スキーマ名とテーブル名をドット(.)で区切って指定します。

    カラム名

    カラム名を指定します。

    • CHAR : character

    • NUMERIC : signed zoned decimal

    • UNUMERIC : unsigned zoned decimal

    • DECIMAL : signed packed decimal

    • UDECIMAL : unsigned packed decimal

    カラム型(長さ)

    カラム型と長さを指定します。

    制約1

    制約を指定します。

    • NOT NULL

    • PRIMARY KEY

    • UNIQUE

    制約2

    この機能は実行しません。上述したカラムを括弧で囲んで制約を設定します。

    コメント

    コメントを指定します。

    • N:各国語文字(National Character)で指定します。

    テーブル・データベース・スペース名

    テーブル・データベース・スペースの名前を指定します。

    • 制約事項

      • テーブル名は36文字以内で作成します。

      • テーブル名は「スキーマ名.テーブル名」形式で作成します。

      • 指定可能な最大のカラム数は1024です。

      • 同じ名前のカラム名を指定することはできません。

  • DROP TABLE

    DROP TABLE文を使用してテーブルの定義情報とテーブルを削除します。そのテーブルに関連付けられたビュー、ファイルを削除するには、CASCADEを指定します。

    以下は、DROP TABLEコマンドの構文です。

    DROP TABLE スキーマ名.テーブル名[CASCADE]
    • 制約事項

      • テーブル名は36文字以内で作成します。

      • テーブル名は「スキーマ名.テーブル名」形式で指定します。

      • CASCADEを指定すると、その依存関係にあるビュービュー、インデックス、すべてのファイルが削除されるので注意が必要です。

      • CASCADEを指定していない場合は、そのテーブルに関連付けられたビュービュー、インデックス、ファイルが残っている場合は削除できません。

  • CREATE VIEW

    ビューを作成します。アプリケーション・プログラムでのデータ操作を簡素化するためにビューを使用します。JOIN属性を利用して、複数のテーブルを結合して1つのテーブルとして処理するために使用します。

    以下は、CREATE VIEWコマンドの構文です。

    CREATE VIEW スキーマ名.ビュー名
                (カラム名  , ...
                  カラム名)
                [NCOMMENT N'コメント'| COMMENT 'コメント']
                AS SELECT   カラム名  , ...
                            カラム名 
                            FROM スキーマ名.テーブル名 
    項目 説明

    スキーマ名.ビュー名

    スキーマ名とビュー名をドット(.)で区切って指定します。

    カラム名

    カラム名を指定します。

    コメント

    コメントを指定します。

    • N:各国語文字(National Character)で指定します。

    スキーマ名.テーブル名

    スキーマ名とテーブル名をドット(.)で区切って指定します。

    • 制約事項

      • ビュー名は36文字以内で作成します。

      • ビュー名は「スキーマ名.ビュー名」形式で指定します。

      • ビューのカラムの数と、テーブルのAS SELECT句で指定したカラム数は一致する必要があります。

      • ビューに使われるテーブルはすべて同じスキーマに存在する必要があります。

  • DROP VIEW

    DROP VIEW文を使用してビューを削除します。

    以下は、DROP VIEWコマンドの構文です。

    DROP VIEW スキーマ名.ビュー名[CASCADE]
    • 制約事項

      • ビュー名は36文字以内で作成します。

      • ビュー名は「スキーマ名.ビュー名」形式で指定します。

      • CASCADEを指定すると、そのビューに関連付けられたすべてのファイルが削除されるので注意が必要です。

      • CASCADEを指定していない場合は、そのビューに関連付けられたファイルが残っている場合は削除できません。

  • CREATE INDEX

    インデックスを作成します。データベースのデータを操作する際、データの検索効率を高めるために使われます。

    以下は、CREATE INDEXコマンドの構文です。

    CREATE INDEX スキーマ名.テーブル名.インデックス名
                 KEY( カラム名 , カラム名 ...  )
                 FREERATE 数字 ON インデックス・データベース・スペース名
    項目 説明

    INDEX

    スキーマ名、テーブル名、インデックス名をドット(.)で区切って指定します。

    KEY

    インデックスとして設定するカラム名を指定します。

    FREERATE

    この機能はサポートしていません。

    インデックス・データベース・スペース

    インデックス・データベース・スペースの名前を指定します。

    • 制約事項

      • インデックス名は36文字以内で作成します。

      • インデックス名は「スキーマ名.テーブル名.インデックス名」形式で指定します。

      • 指定可能な最大のカラム数は1024です。

  • DROP INDEX

    DROP INDEX文を使用してインデックスの定義を削除します。

    以下は、DROP INDEXコマンドの構文です。

    DROP INDEX スキーマ名.テーブル名.インデックス名
    • 制約事項

      • インデックス名は36文字以内で作成します。

      • インデックス名は「スキーマ名.テーブル名.インデックス名」形式で指定します。

  • CREATE FILE

    ファイルの入出力文を使用してデータベースにアクセスするアプリケーションを運用する場合、CREATE FILE文を使用してファイルを作成します。

    以下は、CREATE FILEコマンドの構文です。

    CREATE FILE ファイル名  FOR PHYSICAL | LOGICAL
                ON スキーマ名.テーブル名
                RECORD(FREE)
                ACCESS  PATH
                (INTERNAL | EXTERNAL PATH FOR KEY
                  WITH スキーマ名.テーブル名.インデックス名 ...)
    項目 説明

    FILE

    ファイル名を指定します。

    PHYSICAL | LOGICAL

    物理ファイルなのか、論理ファイルなのかを指定します。

    スキーマ名.テーブル名

    スキーマ名とテーブル名をドット(.)で区切って指定します。

    RECORD

    この機能はサポートしていません。

    ACCESS PATH

    内部からのアクセスなのか、外部からのアクセスなのかを指定します。

    スキーマ名.テーブル名.インデックス名

    「スキーマ名.テーブル名.インデックス名」形式で指定します。(ドット(.)で区切る)

    • 制約事項

      • ファイル名は36文字以内で作成します。

      • アクセス・パスを指定する際、指定するインデックスが事前に作成されている必要があります。

  • DROP FILE

    DROP FILE文を使用してファイルを削除します。

    以下は、DROP FILEコマンドの構文です。

    DROP FILE  ファイル名 FOR PHYSICAL | LOGICAL 
    • 制約事項

      • ファイル名は36文字以内で作成します。

9.3. LOAD/UNLOADコマンドの設定

  • LOAD

    外部データセットの入力を受けてデータベースを作成するコマンドです。

    LOAD文は、入力データセットのデータから、データベースにデータを挿入および追加することができます。挿入と追加の対象となるテーブルのテーブル名を指定します。

    入力データセットのデータ型とデータベースのカラム型が一致するように、CREATE TABLEコマンドを実行するときにカラム型を入力データセットのデータに合わせて指定する必要があります。

    LOADコマンドの構文です。

    LOAD TABLE スキーマ名.テーブル名 FROM DDNAME DD名.テーブル
               TFREERATE(数字) ERRORLIMIT(数字)WITH [NULL | NONULL]
               MODE [NEW | IGNORE | ADD [REPLACE] | UPDATE] [KEYCHECK | ALLCHECK]
    項目 説明

    TABLE

    「スキーマ.テーブル名」形式で指定します。

    FROM DDNAME

    DD名を指定します。

    TFREERATE

    この機能はサポートしていません。

    ERRORLIMIT

    この機能はサポートしていません。

    MODE

    • NEW:定義直後のデータベースにデータを作成する場合に指定します。

    • IGNORE:NEWモードで使われるオプションで作成されたデータを削除した後、データを作成する場合に指定します。

    • ADD:作成済みのデータベースにデータを追加する場合に指定します。REPLACEを指定すると、LOADのプライマリ・キーへの重複が発生したときにUPDATEを実行します。

    • UPDATE : この機能はサポートされません。

    KEYCHECK | ALLCHECK

    この機能はサポートされません。

    • 制約事項

      • テーブル名は36文字以内で作成します。

      • テーブル名は「スキーマ名.テーブル名」形式で指定します。

      • ロード機能を使用するには、テーブルが事前に作成されている必要があります。

    以下は、FGA.R.COMMON.sampleという外部データセットのデータを、FGA_R_COMMON_TBLというデータベース・テーブルに入力する例です。

    \    JOB       JYQLOAD
    \    EX        JYQDDUTY
    \    FD        INDATA=DA,VOL=100000,FILE=FG9.R.COMMON.sample
    \    FD        LIST=DA,VOL=WORK,TRK=(30,10,RLSE),SOUT=A
    \    FD        SYSIN=*
         LOAD TABLE SURDIIX.FGA_R_COMMON_TBL
                    FROM DDNAME INDATA TFREERATE(10)
                    WITH NONULL MODE NEW IGNORE KEYCHECK
    \/
    \   JEND
  • UNLOAD

    データベース・テーブルのデータを外部データセットに出力するコマンドです。UNLOAD文を使用してデータベースに作成されたデータを外部データセットに出力することができます。

    データベース・テーブルのデータはCREATE TABLEコマンドを実行時のカラム型で外部データセットのレコードとしてシリアライズされます。

    以下は、UNLOADコマンドの構文です。

    UNLOAD TO DDNAME DD名  
              WITH [FORMATの指定|NULLの指定]
              AS SELECT [delimeter | column] FROM [nTABLE] [WHERE ~ ] [ORDER BY columns]
    項目 説明

    DDNAME

    DD名を指定します。

    FORMAT

    SELECTを使って取得するデータのデータ型を指定します。

    • [X] : CHAR型に指定します。

    • [N] : NATIONAL CHAR型に指定します。

    • [9] : NUMERIC型に指定します。

    • [C] : DECIMAL型に指定します。

    • [U9] : UNSIGNED NUMERIC型に指定します。

    • [UC] : UNSIGNED DECIMAL型に指定します。

    NULL | NONULL

    この機能はサポートされません。

    AS

    SQLのSELECT文を作成します。

    • [delimeter | column] : SELECTを使用して取得するデータを指定します。引用符(')で囲まれた領域の値であれば、すべてデリミターとして使用することができます。

    • [nTABLE] : データを取得するテーブルを指定します。最大2つのテーブルからデータを取得できます。

    • [WHERE ~] : 指定したテーブルから取得するデータの範囲を指定します。

    • [ORDER BY columns] : 取得したデータを該当のカラム順でソートします。

    • 制約事項

      • DD名は、JCLで出力用のデータセットのために指定されたDD名で作成します。

      • AS SELECT句のテーブル名は、36文字以内で作成します。

      • AS SELECT句のテーブル名は「スキーマ名.テーブル名」形式で指定します。

      • AS SELECT句にカラム名を指定する場合、指定したテーブルにそのカラムが存在する必要があります。

    以下は、データベース・テーブルのFGA_R_COMMON_TBLに作成されたデータを、データセットのFGA.R.COMMON.outに出力する例です。

    \    JOB       JYQUNLOD
    \    EX        JYQDDUTY
    \    FD        OUTDATA=DA,VOL=100000,FILE=FG9.R.COMMON.out
    \    FD        LIST=DA,VOL=WORK,TRK=(30,10,RLSE),SOUT=A
    \    FD        SYSIN=*
         UNLOAD TO DDNAME OUTDATA
                WITH NONULL AS SELECT
                * FROM SURDIIX.FGA_R_COMMON_TBL
    \/
    \   JEND

9.4. 関連環境設定

JYQDDUTYユーティリティの環境設定は、OpenFrame環境設定のdsサブジェクトのRDBII_DATASETセクションで行います。詳細については、OpenFrame Batch『環境設定ガイド』を参照してください。

10. KBKARCS

KBKARCSユーティリティは、BACKUPとRESTOREコマンドを使用して、災害によるシステムの損傷に備えたり、重要なデータを保護したりする目的で、データセットやボリュームのバックアップおよびリカバリーを行います。

BACKUPコマンドは、JCLの制御文で指定したデータセットやボリュームを1つのデータセットにまとめて指定されたボリューム・ディレクトリーに格納します。RESTOREコマンドは、バックアップしたデータセットを元の状態に戻して指定したボリューム・データセットに復元します。この際、内部ではUNIXが提供するtarプログラムを使用します。

OpenFrameではBACKUPコマンドを実行する際、バックアップ対象のデータセット・カタログ情報を別途のメタ情報ファイルとして構成して、バックアップ対象のデータセットと一緒にまとめておきます。RESTOREコマンドの実行時に、このメタ情報ファイルを先に読み込んで、バックアップ処理時のカタログ情報に復元させます。

10.1. FDの設定

以下は、BACKUPとRESTOREのFD設定項目です。

  • BACKUP

    項目 説明

    SYSIN FD

    BACKUPコマンドと、それに関連するオプションを指定します。

    FROM DDのためのFD

    SYSIN FDに指定した制御文のうち、FROM DD文で指定したFD名と同じであり、バックアップ対象のデータセット・ボリュームの情報が記述されているFDです。

    TO DDのためのFD

    SYSIN FDに指定した制御文のうち、TO DD文で指定したFD名と同じであり、新規作成するデータセットの情報が記述されているFDです。

  • RESTORE

    項目 説明

    SYSIN DD

    RESTOREコマンドと、それに関連するオプションを指定します。

    FROM DDのためのFD

    SYSIN FDに指定した制御文のうち、FROM DD文で指定したFD名と同じであり、復元対象のバックアップ・データセットが指定されているFDです。

    TO DDのためのFD

    SYSIN FDに指定した制御文のうち、TO DD文で指定したFD名と同じであり、復元されたデータセットを格納するボリュームを指定します。

10.2. コマンドの設定

BACKUPとRESTOREコマンドは以下のように設定します。

  • BACKUP

    複数の非VSAMデータセットまたはボリュームを、1つのデータセットとしてバックアップ処理するコマンドです。

    以下は、BACKUPコマンドの構文です。

    BACKUP VOLUME | DATASET(dsname[,dsname,...]),
           [FROM(DD(fdname))],
           TO(DD(fdname)),
           [LIST],
           [EXCLUDE(dsname[,dsname,...])],
           [DELETE]
    項目 説明

    VOLUME

    ボリュームをバックアップします。DATASET文と一緒に指定できません。

    DATASET

    ファイルをバックアップします。

    データセット名を1つ以上指定することが可能であり、ワイルドカード文字を使用してバックアップ対象のデータセットをフィルタリングすることもできます。ワイルドカード文字の詳細については、[ワイルドカード文字]のフィルタリングの例を参照してください。

    FROM DD

    バックアップ対象ボリュームのFD名を指定します。

    TO DD

    バックアップ処理における出力ボリュームのFD名を指定します。

    LIST

    バックアップ処理が完了したデータセットの情報をSYSPRINT FD文で指定したファイルに出力します。

    EXCLUDE

    バックアップ処理時にバックアップ対象から除外する1つ以上のデータセット名を指定します。

    DELETE

    バックアップ処理が完了したデータセットを削除します。

  • RESTORE

    1つのファイルにバックアップされたデータセットを元の非VSAM形式のデータセットに復元します。

    以下は、RESTOREコマンドの構文です。

    RESTORE DATASET(dsname[,dsname,...]),
            FROM(DD(ddname)),
            [TO(DD(ddname))],
            [RENAME((OLD DATASET NAME,NEW DATASET NAME),…)],
            [LIST],
            [EXCLUDE(dsname[,dsname,...])]
    項目 説明

    DATASET

    バックアップ処理されたデータセットから復元する1つ以上のデータセット名を指定します。

    ワイルドカード文字を使用して復元対象のデータセットをフィルタリングすることができます。ワイルドカード文字の詳細については、[ワイルドカード文字]のフィルタリングの例を参照してください。

    FROM DD

    復元するボリュームのFD名を指定します。

    TO DD

    復元時に格納されるボリュームのFD名を指定します。

    RENAME

    DATASET文で指定したデータセット名を新しいデータセット名に変更して復元します。ワイルドカードを指定することもできますが、OpenFrameの制約上、%のみ使用できます。

    LIST

    復元が完了したデータセットの情報をSYSPRINT FD文で指定したファイルに出力します。

    EXCLUDE

    復元時に復元対象から除外する1つ以上のデータセット名を指定します。

[ワイルドカード文字]

DATASET文でバックアップまたは復元対象のデータセット名に対して、ワイルドカード文字を使用したフィルタリングが可能です。

フィルターキー 説明

* (single asterisk)

基本的に1つの修飾子(Qualifier)とマッチします。また、1つの修飾子内の0個以上の文字とマッチすることができます。

** (double asterisk)

0個以上の修飾子とマッチします。

?

修飾子内の1つの文字とマッチします。

% (percent)

0個以上の修飾子とマッチします。%の後に文字は指定できません。

修飾子は、ピリオド(.)の間に指定された修飾語で、データセット名を構成する要素です。たとえば、データセット名がSYS.LIBの場合、SYS1とLIBという2つの修飾子を有すると言います。

以下は、ワイルドカード文字を使用したフィルタリングの例です。

フィルタリング・データセット フィルタリング対象のデータセット フィルタリング非対象のデータセット

SYS1.*.LIST

SYS1.TEST.LIST, SYS1.LIB.LIST

SYS1.TEST.LIST.TEMP, SYS1.LIST

SYS1.LIB.*.*

SYS1.LIB.LIST.TEMP, SYS1.LIB.A.B

SYS1.LIB.LIST, SYS1.LIB.A.B.C

SYS.*IB.LIST

SYS.LIB.LIST, SYS1.IB.LIST

SYS.LIBA.LIST, SYS.LIB.LIST.TEMP

**.LIST

SYS1.LIST, SYS1.LIB.LIST, SYS1.A.B.C.LIST

SYS1.LIST.TEMP, SYS1.LIB.LISTA

USER.LIB.**

USER.LIB.LIST.TEMP, USER.LIB

USER.LIBTEST.LIST, USER.LIBLIST

SYS1.**.LIST

SYS1.A.B.C.LIST, SYS1.LIST

SYS1.LIST.ERR, SYS1.TEST.LIST.ERR

**.*LIST

SYS1.TEST.LIST, SYS1.TEST.A.B.OKLIST

SYS1.LIST.ERR, SYS1.TEST.OKLIST.TEMP

*.*.L*B

SYS1.TEST.LIB,

USER.LIB.LISTB, A.B.LB

SYS1.TEST.LIBTEMP,

SYS1.USER.LIB.TEMP

USER?.*

USER1.LIST, USERA.LIST

USEROK.LIST, USER1.OK.LIST, USER.LIST

*??*

AA, BB, TEST, USER

A, B, TEST.USER

A.A.%

A.A.B, A.A.LIST, A.A.USER.LIST

A.B, A.USER

A.%

A.A.B, A.A.LIST, A.A.USER.LIST, A.B

B.USER, TEST.USER

10.3. 使用例

以下は、バックアップ機能を使用して複数の非VSAMデータセットをテープ・ボリュームに1つのデータセットとしてバックアップする例です。

KBKARCS.TEST01、KBKARCS.TEST02、KBKARCS.TEST03データセットを、TO DDで指定したテープ・ボリューム100004のデータセットKBKARCS.UACKUP.DSにまとめてバックアップし、バックアップします。

\          JOB  KBK01
\STEP01    EX   KBKARCS
\          FD   SYSUT1=DA,VOL=100000,FILE=VOLUME
\          FD   SYSUT2=TAPEA,VOL=100004,FILE=KBKARCS.UACKUP.DS,FCYL=10
\          FD   SYSPRINT=DA,VOL=WORK,TRK=(1,1,RLSE),SOUT=A
\          FD   SYSIN=*
 BACKUP DATASET(KBKARCS.TEST01,KBKARCS.TEST02,KBKARCS.TEST03),
        FROM(DD(SYSUT1)),TO(DD(SYSUT2))
\          JEND

以下は、FROM DD文で指定したボリュームに属しているすべての非VSAMデータセットをバックアップする例です。

FROM DDで指定したボリューム100000のすべてのデータセットを、TO DDで指定したボリューム100001のデータセットSVWORK02にまとめてバックアップし、バックアップに成功したデータセットの情報を出力します。

\          JOB  KBK02
\STEP01    EX   KBKARCS
\          FD   SYSUT1=DA,VOL=100000,FILE=VOLUME
\          FD   SYSUT2=DA,VOL=100001,FILE=SVWORK02,FCYL=10
\          FD   SYSPRINT=DA,VOL=WORK,TRK=(1,1,RLSE),SOUT=A
\          FD   SYSIN=*
 BACKUP VOLUME,FROM(DD(SYSUT1)),TO(DD(SYSUT2)),LIST
\          JEND

以下は、FROM DD文で指定したバックアップ・データセットから、ワイルドカードの条件に一致するデータセットを復元する例です。

FROM DD文で指定したボリューム100001のバックアップ・データセットKBKARCS.UACKUP.DSから、最初の修飾子(Qualifier)が「KBKARCS」であるデータセットを検索して、TO DDで指定したボリューム100000に復元します。

\          JOB  KBK03
\STEP01    EX   KBKARCS
\          FD   SYSUT1=DA,VOL=100001,FILE=KBKARCS.UACKUP.DS
\          FD   SYSUT2=DA,VOL=100000,FILE=VOLUME,FCYL=10
\          FD   SYSPRINT=DA,VOL=WORK,TRK=(1,1,RLSE),SOUT=A
\          FD   SYSIN=*
 RESTORE DATASET(KBKARCS.*),FROM(DD(SYSUT1)),TO(DD(SYSUT2))
\          JEND

10.4. 注意事項と戻りコード

OpenFrameでのKBKARCSユーティリティ・プログラムは、非VSAMデータセットのみ処理可能であり、VSAMデータセットには対応していません。

KBKARCSユーティリティ・プログラムがバッチ・アプリケーションを実行した結果は以下のとおりです。

  • 正常に実行した場合

    ユーティリティの正常終了コード10を返します。

  • エラーが発生した場合

    エラー・メッセージをSYSPRINT DDに出力して、各エラーに該当するコードを返します。

    以下は、KBKARCSユーティリティ・プログラムで発生する可能性のあるエラー・コードです。

    コード 説明

    20

    プログラムの実行中に特定のデータセットでエラーが発生したが、他のデータセットの処理は正常に行われた場合です。

    50

    回復不可(Unrecoverable)エラーです。エラーが発生して正常に実行できない場合です。

11. KQCAMS

KQCAMSは、OpenFrameのVSAMデータセット、非VSAMデータセットおよびカタログ情報を管理するためのユーティリティ・プログラムです。

SYSIN FDに入力されたそれぞれのコマンドは、ジョブを実行するためのコマンドと、各種のオプションまたはオペランドで構成されます。KQCAMSは実行するコマンドをSYSIN FDから読み込んで動作します。

OpenFrameのKQCAMSプログラムは、既存のメインフレームのKQCAMSコマンドをそのまま使用できるため、ユーザーはメインフレーム環境と同様な操作方法で作業することができます。

11.1. KQCAMSのコマンド

  • 機能コマンド

    実際にユーザーが実行する特定のジョブを示すコマンドです。各コマンドの詳細については、該当の節を参照してください。

    コマンド 説明

    ALTER

    すでに定義されているデータセットまたはカタログの属性を変更します。

    DEFINE

    次のようなデータセット・オブジェクト(またはカタログ・エントリ)を定義するために使用します。

    DELETE/VDELETE

    VSAMと非VSAMデータセットおよびカタログを削除します。

    EXPORT

    カタログやVSAMデータセットを移植可能なデータセットにエクスポートするか、バックアップ・データセットを生成します。

    IMPORT

    EXPORTコマンドによって作成された移植可能なカタログやVSAMデータセットをインポートするか、バックアップされたデータセットを元の状態に復元します。

    LISTCAT/VLISTCAT

    カタログに登録されたVSAMや非VSAMデータセットに関する情報を表示します。

    PRINT

    VSAMと非VSAMデータセットに格納されているレコードを出力します。

    REPRO

    VSAMと非VSAMデートセットの内容をコピーします。

    VERIFY

    VSAMデータセットの異常終了(close)により、正しくないデータセット情報がカタログされていないか確認して正しく修正します。また、レコード数などの情報も正確に反映されているか確認します。

    VSAMデータセットを終了するとき、データセットの最後の位置やレコード数などの統計情報がカタログに保存されますが、データセットが正常終了しなかった場合は、カタログ情報と実際のデータセットの状態情報が一致しない可能性があります。VERIFYコマンドは、そうした不一致を修正できます。

  • 補助コマンド

    一連のKQCAMSコマンドの実行を制御するためのコマンドです。各コマンドの詳細については、該当の節を参照してください。

    コマンド 説明

    IF-THEN-ELSE

    実行されたコマンドの条件コード値(LASTCCまたはMAXCC)に従って次に実行するコマンドを分岐させるために使用します。

    Null

    何の動作も起こさない、文法用のコマンドです。

    IF-THEN-ELSEコマンドのTHENまたはELSEの後に作業を行わないことを明示的に表すために使用します。

    SET

    MAXCCやLASTCCの値を特定の値に強制設定するために使用します。

    CANCEL

    プログラムの実行中にCANCELコマンドに遭遇すると、KQCAMSの実行が中止され、CANCELコマンド以降のコマンドは処理されません。

    PARM

    KQCAMSの実行中に適用されるオプションおよびパラメータ値を指定します。

    現在はサポートしていません。

  • 非機能コマンド

    エラーが発生しないようにだけ処理し、実際には機能しないコマンドです。各コマンドの詳細については、該当の節を参照してください。

    コマンド 説明

    BLDINDEX

    特定のデータセットのセカンダリ・インデックスを作成します。

    EXAMINE

    特定のクラスターのインデックスとデータ・コンポーネントの整合性をチェックします。

11.2. コーディング規約

以下は、KQCAMSを利用してコーディングする際に共通して適用される規則です。

  • ハイフン(-)

    1つのコマンドを複数行にまたがって作成する場合、各行の最後にハイフン(-)を入力して、コマンドの残りの部分を次の行に続けてコーディングします。ハイフン(-)はキーワードやパラメータ値の途中にはコーディングできず、一般的にキーワードやパラメータ値の境界になる部分に挿入することで次の行に続いていることを示します。

    以下は、ハイフン(-)を使用したコーディングの例です。

    LISTCAT ENT( -
      TEST.CLUS1 -
      TEST.KSDS1 -
      TEST.RRDS1 -
      TEST.SDS1)

    複数行にまたがって作成されたコマンドの最終行にはハイフン(-)を使用しないように注意してください。

  • コメント

    コメントはKQCAMSコマンドの間に入力できます。ただし、キーワードやパラメータ値の途中にコメントを追加することはできません。

    コメントは特別な機能はありませんが、1つのコマンドとみなされるため、コマンドの途中にコメントを追加する場合には、該当する行の最後にハイフン(-)を入力する必要があります。コメントは、空白やコンマ(,)と同様に、KQCAMS文法でフィールドを区切る役割もするため「/」と「/」の間に入力します。

    以下は、コメントを正しく記述した例です。

    /* This is KQCAMS Comment */
    /* This is multi line Comment comment continued from above line */
    LISTCAT ENT( /* Comment 1 */ -
    TEST.KSDS1 /* Comment 3 */ -
    TEST.SDS1 /* Comment 4 */ ) /* Comment 5 */

    IF-THEN-ELSE文の途中にコメントを使用する場合は、コメントによってIF-THEN-ELSEの構文が意図しなかった位置で終わらないように注意してください。

11.3. FDの設定

OpenFrameのKQCAMSは、JCLによるバッチ・ジョブで実行する方式と、UNIXシステムのコマンドラインから直接実行するインタラクティブ方式の両方をサポートします。

  • JCLを使用したジョブの実行(using JCL as JOB)

    JCLを使用してジョブの1ステップとしてKQCAMSを実行する場合、KQCAMSは以下のようなFD文を使用します。

    項目 説明

    SYSIN FD

    KQCAMSが実行するコマンドを指定します。

    データセットのレコード長は72列を超えることができず、コマンドが長くなる場合はハイフン(-)を使用します。

    SYSPRINT FD または

    SYSOUT FD

    KQCAMSの実行結果と、実行中に出力される情報メッセージ、警告メッセージ、エラー・メッセージなどを保存するデータセットを指定します。

    SYSPRINT FDを指定していない場合や、指定したデータセットの割り当て、またはオープンに失敗した場合、KQCAMSはコマンドを実行せずに終了し、条件コード50を返します。

    追加のFD

    KQCAMSコマンドの一部は、JCLに指定されているFDを使ってコマンドの対象になるFD名やエントリ名を間接的に指定することができます。この場合、KQCAMSはデータセットを動的に割り当てずに、ジョブの実行を制御するtjclrunによってジョブ・レベルで予め割り当てられたデータセットを継承して使用します。

    一般的にコマンドの対象になるデータセットを指定するパラメータは、JCLに指定されているFD名を使ってFILE(fdname)形式のパラメータ名を持ちます。

    KQCAMSで動的割り当てを利用してデータセットを指定するパラメータは、DATASET(entryname)形式のパラメータ名を持ちます。

    以下は、前で説明した追加のFDの例です。REPRO BLDINDEX PRINTのパラメータを使用してJCLで割り当てられたデータセットを継承して動作する例です。

    INFILE(fdname), OUTFILE(fdname)

    以下は、REPRO BLDINDEX PRINTのパラメータであり、KQCAMSで動的にデータセットを割り当てて動作する例です。

    INDATASET(entryname), OUTDATASET(entryname)

    JCLを使用してジョブの1ステップとしてKQCAMSを実行するには、KQCAMSを呼び出すジョブ・ステップに、前で説明したFDを指定し、EXEC PGMにKQCAMSを指定した後、当該のJCLをサブミットします。

    \ JOB OBM
    \ EX KQCAMS
    \ FD INFD=DA,FILE=VSAM.KSDS1
    \ FD OUTFD=DA,FILE=VSAM.KSDS2
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
        REPRO  INFILE(INFD) -
               OUTFILE(OUTFD) -
               SKIP(50000) COUNT(10000)
    \/
    \ JEND
  • コマンドラインからの実行(using from Command line)

    UNIXシステムのコマンドラインからKQCAMSを直接実行します。この場合、SYSIN FDとSYSPRINT FDの代わりに標準入出力ストリーム(stdin/stdout/stderr)を使用して動作します。つまり、stdinからKQCAMSコマンドを読み込んで命令単位で実行し、stdout/stderrには作業の結果およびエラー・メッセージを出力するインタラクティブなインタープリタ方式です。

    UNIXシステムのコマンドラインで下記のコマンドを実行すると、KQCAMSはDEFINE.TEST.CLUS1.CMDというVSAMデータセットを削除して再定義します。

    $ KQCAMS < DEFINE.TEST.CLUS1.CMD

    TEST.CLUS1.CMDは一般的なUNIXテキストファイルで、以下の内容を含めています。

    DEFINE.TEST.CLUS1.CMDファイルはKQCAMS UNIXコマンドラインでのstdinリダイレクトを示します。

    DELETE  TEST.CLUS1 CLUSTER
    DEFINE  CLUSTER                          -
            (NAME(TEST.CLUS1)                -
            VOLUMES(100000)                  -
            INDEXED                          -
            KEYS(07 0)                       -
            CYL (70 10)                      -
            RECORDSIZE(200 200)              -
            SHR(2 3))                        -
            DATA  (NAME(TEST.CLUS1.DATA)     -
            CONTROLINTERVALSIZE(4096)  )     -
            INDEX (NAME(TEST.CLUS1.INDEX)    -
            CONTROLINTERVALSIZE(4096)  )
  • 制約事項(Limitation)

    FD(fdname)を使って割り当てられたデータセットを継承して使用するには、OpenFrame/Batch環境、特にtjclrunを必要とします。したがって、UNIXシステムのコマンドラインでは、JCLを使用してジョブ・ステップとしてKQCAMSを実行する場合に可能であったfdnameを使用したデータセットの指定が不可能になります。

    UNIXコマンドを実行する場合、KQCAMSコマンドの対象となるデータセットを指定するには、常にDATASET(entryname)形式で指定して使用します。

11.4. 機能コマンド

本節では、KQCAMSユーティリティの機能コマンドの 使用方法について説明します。

  • ALTER

    DEFINE文でカタログに既に登録されているデータセットとカタログ・エントリの情報を一部変更することができます。

    以下は、ALTERコマンドの構文です。

    ALTER entryname
          [EMPTY|NOEMPTY]
          [FILE(fdname)]
          [LIMIT(limit)]
          [NULLIFY([OWNER][RETENTION])]
          [OWNER(ownerid)]
          [ROLLIN]
          [SCRATCH|NOSCRATCH]
          [SHAREOPTIONS(crossregion[ crosssystem])]
          [STORAGECLASS(class)]
          [STRNO(number)]
          [TO(date)|FOR(days)]
          [CATALOG(catname)]
    項目 説明

    entryname

    属性を変更する既存のデータセットやカタログ・エントリのエントリ名を指定します。

    ROLLIN

    GDGベースとの関連付け(association)がまだ行われていない状態(deferred rolled-in state)であるか、切断された状態(rolled off state)にあるGDSについて、GDGベースと関連付けられた状態(rolled-in state)に変更するときに指定します。

    CATALOG

    entrynameに指定されたカタログ・エントリを検索する際に使用するカタログを指定します。指定しない場合は、カタログの検索順序によって決定されます。

    カタログ・エントリのタイプと、カタログ・エントリに対応するユーザー・データセットにデータがロードされているかどうかによって、変更可能な属性と変更不可能な属性があります。

    以下は、OpenFrame KQCAMSのALTERコマンドがサポートする各カタログ・エントリ・タイプに応じた変更可能な属性をまとめた表です。「O」と表示された属性が、変更が可能な属性です。

    エントリタイプ

    変更可能な属性

    AIX

    AIX DATA

    AIX INDEX

    CLUSTER

    CLUSTER DATA

    CLUSTER INDEX

    PATH

    UCAT DATA

    UCAT INDEX

    NON-VSAM

    GDG

    NEWNAME

    -

    -

    -

    -

    -

    -

    O

    -

    -

    O

    -

    EMPTY

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    O

    NOEMPTY

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    O

    LIMIT

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    O

    NULLIFY

    -

    -

    -

    -

    -

    -

    O

    -

    -

    O

    O

    OWNER

    -

    -

    -

    -

    -

    -

    O

    -

    -

    O

    O

    ROLLIN

    -

    -

    -

    -

    -

    -

    -

    -

    -

    O

    -

    RETENTION

    -

    -

    -

    -

    -

    -

    O

    -

    -

    O

    O

    SCRATCH

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    O

    NOSCRATCH

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    O

    TO

    -

    -

    -

    -

    -

    -

    O

    -

    -

    O

    O

    FOR

    -

    -

    -

    -

    -

    -

    O

    -

    -

    O

    O

    変更したいカタログ・エントリの新しい属性値を指定するには、各パラメータのほか、変更の対象となるカタログ・エントリを指定するためのパラメータが必要です。

    以下は、TESTCATカタログに登録されているTEST.GDG1という名前のGDGの最大の世代数を255に、有効期限を2006年の300番目の日付に属性を変更する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
        ALTER  TEST.GDG1 -
                LIMIT(255) -
                TO(2006300) -
                CATALOG(TESTCAT)
    \/
    \ JEND
  • DEFINE

    DEFINEコマンドで共通して使用可能なパラメータは以下のとおりです。

    DEFINEコマンド別に指定可能な実際のパラメータの種類は、それぞれのDEFINEコマンドの節で説明します。ここでは共通して使用されるパラメータについて説明します。

    以下は、DEFINEコマンドの構文です。

    DEFINE Commands  NAME(entryname) {CYLINDERS(primary[ secondary])|
                                     KILOBYTES(primary[ secondary])|
                                     MEGABYTES(primary[ secondary])|
                                     RECORDS(primary[ secondary])|
                                     TRACKS(primary[ secondary])}
                                     VOLUMES(volser[ volser...])
                                     [CONTROLINTERVALSIZE(size)]
                                     [DATACLASS(class)]
                                     [MANAGEMENTCLASS(class)]
                                     [OWNER(ownerid)]
                                     [RECATALOG|NORECATALOG]
                                     [RECORDSIZE(average maximum)]
                                     [STORAGECLASS(class)]
                                     [TO(date)|FOR(days)])
                                     [DATA (...)]
                                     [INDEX (...)]
                                     [CATALOG(catname)]
                                     [NOOCCURSBULK]
    項目 説明

    NAME

    DEFINEコマンドで作成または定義するカタログ・オブジェクトの名前を指定します。

    CYLINDERS|

    KILOBYTES|

    MEGABYTES|

    RECORDS|

    TRACKS

    VSAMクラスター(CLUSTER、ALTERNATEINDEX、USERCATALOG)を作成する際、対応するデータセットに割り当てるストレージ容量を指定します。

    • CYLINDERS、TRACKSは、記憶媒体の種類に従属的な単位で割り当てる際に使われます。

    • その他は、記憶媒体の種類に非従属的な単位で割り当てる際に使われます。

    基本(primary)割り当てと追加(secondary)割り当てで指定します。基本割り当ては、データセットを作成するときに初めて割り当てる場合です。追加割り当ては、基本割り当て以降データセットに格納されるデータが増えてストレージを追加的に割り当てる場合です。

    VOLUMES

    データセットを作成するとき、データセットを保存するボリュームのシリアル番号を指定します。

    CONTROLINTERVALSIZE

    VSAMクラスター(CLUSTER、ALTERNATEINDEX、USERCATALOG)のコントロール・インターバル・サイズを指定します。

    コントロール・インターバルは、非VSAMのBLKSIZEに当たる概念であり、VSAMは実際にディスクに入出力するときに、コントロール・インターバルの単位で動作します。

    CONTROLINTERVALSIZE(size)は、512Bから8KBの間の値である場合は512Bの倍数単位で指定し、8KBから32KBの間の値である場合は2KBの倍数単位で指定します。そうしない場合、内部的にその範囲に応じて、指定された値より小さくない最も近い512Bまたは2KBの倍数単位の値で決定されます。

    CONTROLINTERVALSIZE(size)を指定しない場合は、VSAMが任意の値を決めます。

    DATACLASS

    データ・クラス値(1-8文字)を指定します。

    データ・クラスはSMS(Storage Management Subsystem)で定義し、新しいデータセットを作成時に使用する多様な属性を持ちます。

    データ・クラスを指定するとき、データ・クラスに属性を定義しなくても構いません。指定したデータ・クラスに定義された属性とDEFINEコマンドで明示的に指定された属性が異なる場合は、DEFINEコマンドで指定された属性が優先されます

    MANAGEMENTCLASS

    管理クラス値(1-8文字)を指定します。

    管理クラスはSMSで定義し、作成されるデータセットの管理作業に影響を与えるTOやFORなどの多様な属性を持ちます。

    DEFINEコマンドにTOやFORが明示的に指定され、管理クラスでも同じ属性がある場合は、データ・クラスとは異なり、管理クラスに定義された値が優先されます。

    OWNER

    データセットの所有者を指定します。

    RECATALOG|

    NORECATALOG

    既存のVVDSに保存されている情報に基づいて、クラスター、セカンダリ・インデックスのデータ、インデックス・コンポーネント、非VSAMデータセットに対応するカタログ・エントリを再作成します。

    クラスターやセカンダリ・インデックスは、VVDSに存在するVVR(VSAM VOLUME RECORD)の内容がカタログ・エントリの再作成に使用されます。この際、VVRに含まれていない一部の情報は、DEFINEコマンドを使用して直接指定する必要があります。

    このようなパラメータには、INDEXED、NONINDEXED、NUMBEREDなどのVSAMレコードの構成を指定するパラメータと、対応のデータセットが本来作成されたVOLUMESパラメータ、VRDSの場合のRECORDSIZEパラメータ、ALTERNATEINDEXの場合のNAME、RELATE、VOLUMEパラメータなどがあります。

    作成するカタログ・エントリが非VSAMデータセットの場合は、VOLUMESとDEVICETYPESパラメータをDEFINEコマンドを使って直接指定する必要があります。PATHの場合は、VVDSに保存される情報がないため、DEFINEコマンドにNAMEとPATHENTRYパラメータだけ指定すれば再カタログが可能です。

    RECORDSIZE

    CLUSTER、ALTERNATEINDEX、USERCATALOGを作成するとき、対応するデータセットに保存されるレコードのサイズをaverageとmaximumに指定します。両方の値を同一に指定すると、固定長レコード(Fixed Length Record)を意味します。

    • USERCATALOGに指定されたこのパラメータは無視されます。USERCATALOGはVSAMが処理するデータセットであるため、VSAMはUSERCATALOGのRECORDSIZEパラメータに常に(4096 32600)を使用します。

    • CLUSTERに対しては、このパラメータが省略された場合、SPANNEDパラメータが指定されていれば、(4096 32600)がデフォルト値として使用されます。そうでない場合は、(4089 4089)がデフォルト値として使用されます。

    • ALTERNATEINDEXに対して、このパラメータが省略された場合は常に(4089 32600)がデフォルト値として使用されます。ALTERNATEINDEXは、一般的に多くの非一意キーが存在する点を考慮して、VSAM内部でSPANNEDが指定されたKSDSのように処理されます。つまり、ALTERNATEINDEXには、SPANNEDパラメータは無視されます。

    STORAGECLASS

    ストレージ・クラス値(1-8文字)を指定します。

    ストレージ・クラスはSMSで定義し、生成されるデータセットに割り当てられるストレージの容量に関連する属性を持ちます。ストレージ・クラスを指定するとき、必須パラメータであるCYLINDERSのようなストレージの割当サイズを指定するパラメータを指定する必要がありません。

    DEFINEコマンドにストレージの割当量を直接指定し、ストレージ・クラスに定義された値と異なる場合は、ストレージ・クラスに定義された値が優先されます。

    TO|FOR

    データセットとカタログ・エントリを作成するとき、対応するオブジェクトの有効期限を指定します。

    • TO: 有効期限を指定します。

    • FOR: 有効日数を指定します。生成日に有効日数を足した日付が有効期限になります。

    DATA, INDEX

    CLUSTER、ALTERNATEINDEX、USERCATALOGのように、データ・コンポーネントとインデックス・コンポーネントを持つことができるVSAMクラスターを作成する場合、データ・コンポーネントとインデックス・コンポーネントそれぞれに対して上記のパラメータ(一部対応するパラメータ)を個別に指定することができます。

    例えば、ストレージの割当サイズを示すCYLINDERSパラメータは、DEFINE CLUSTERの際にクラスターのサブ・パラメータとして指定することも、データやインデックス・コンポーネントのサブ・パラメータとしても指定することもできます。このように個別に指定した場合は、コンポーネント別に適用することが可能であれば、コンポーネント別に異なる値が適用されます。

    CATALOG

    DEFINEコマンドで定義するカタログ・エントリが登録されるカタログの名前を指定します。この設定を省略すると、対応するジョブのSTEPCATやJOBCATに指定されたカタログ、あるいはカタログ・エントリの名前の一部をエイリアスとして使用するユーザー・カタログがある場合はそのユーザー・カタログに登録されます。最後まで登録するカタログが決まらない場合は、マスター・カタログに登録します。

    詳細については、OpenFrame Base『データセットガイド』の「統合カタログ」の「カタログの検索順序」節を参照してください。

    NOOCCURSBULK

    DEFINEコマンドで定義するVSAMデータセットのOCCURSフィールドをそれぞれカラムとして指定します。省略すると、OCCURSフィールドを1つのカラムとして指定します。

  • DEFINE ALIAS

    非VSAMデータセットやユーザー・カタログのエイリアスをカタログに作成します。

    エイリアスに対応するカタログ・エントリも、元のデータセット名とエイリアスだけを含んでいます。別途のユーザー・データを保存するためのデータセットは存在しません。

    ユーザー・カタログを除くVSAMデータセットのエイリアスを作成することはできません。

    以下は、DEFINE ALIASコマンドの構文です。

    DEFINE ALIAS (NAME(aliasname)
           RELATE(entryname)
           SYMBOLICRELATE(entryname))
           [CATALOG(catname)]
    項目 説明

    NAME

    作成するエイリアス名を指定します。

    RELATE

    エイリアスが指している実際のエントリのエントリ名を指定します。

    CATALOG

    作成するエイリアスを登録するカタログを指定します。

    以下は、TEST.NVSAM1のエイリアスとしてTEST.ALIAS1を作成し、TESTCATカタログに登録する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
    DEFINE ALIAS(NAME(TEST.ALIAS1) -
           RELATE(TEST.NVSAM1)) -
           CATALOG(TESTCAT)
    \/
    \ JEND
  • DEFINE ALTERNATEINDEX

    DEFINE ALTERNATEINDEX(以下、AIX)コマンドを使用して、特定のデータセット(BASE CLUSTER)に対する別途のインデックス方法を提供するAIXデータセットを定義します。

    VSAMはベース・クラスターにレコードが追加・削除・変更される場合、関連したAIXに対して自動で変更を実行し、AIXが継続的に正しくベース・クラスターに対して別途のインデックスを実行できるようにします。内部構造からみれば、AIXデータセットも1つのKSDSクラスター構造を持つデータセットであるため、DEFINE AIXに使用されるほとんどのパラメータは、DEFINE CLUSTERのパラメータと同じです。

    以下は、DEFINE AIXコマンドの構文と指定可能な主要パラメータです。

    DEFINE AIX (NAME(entryname)
           RELATE(entryname) {CYLINDERS(primary[secondary])|
                             KILOBYTES(primary[secondary])|
                             MEGABYTES(primary[secondary])|
                             RECORDS(primary[secondary])|
                             TRACKS(primary[secondary])}
           VOLUMES(volser[volser...])
           [CONTROLINTERVALSIZE(size)]
           [DATACLASS(class)]
           [FILE(fdname)]
           [KEYS(length offset|64 0)]
           [OWNER(ownerid)]
           [RECATALOG|NORECATALOG]
           [RECORDSIZE(average maximum | 4086 32600)]
           [TO(date)|FOR(days)]
           [UNIQUEKEY|NONUNIQUEKEY]
           [UPGRADE|NOUPGRADE])
           [DATA ({CYLINDERS(primary[secondary])|
                  KILOBYTES(primary[secondary])|
                  MEGABYTES(primary[secondary])|
                  RECORDS(primary[secondary])|
                  TRACKS(primary[secondary])}
                  [VOLUMES(volser[volser...])]
           [CONTROLINTERVALSIZE(size)]
           [FILE(fdname)]
           [KEYS(length offset)]
           [NAME(entryname)]
           [OWNER(ownerid)]
           [RECORDSIZE(average maximum)]
           [UNIQUEKEY|NONUNIQUEKEY])]
           [INDEX ({CYLINDERS(primary[secondary])|
                    KILOBYTES(primary[secondary])|
                    MEGABYTES(primary[secondary])|
                    RECORDS(primary[secondary])|
                    TRACKS(primary[secondary])}
           [VOLUMES(volser[volser...])]
           [CONTROLINTERVALSIZE(size)]
           [FILE(fdname)]
           [NAME(entryname)]
           [OWNER(ownerid)])]
           [CATALOG(catname)]
    項目 説明

    RELATE

    現在定義しているAIXと関連するベース・クラスター・データセットの名前を指定します。ベース・クラスターとして使用するデータセットは、VSAMデータセットのうちKSDSとESDS構造のデータセットのみ可能です。

    AIXを定義するには、事前にベース・クラスターとして使用するデータセットをDEFINE CLUSTERコマンドを使って作成する必要があります。

    RECORDSIZE

    AIXデータセット・クラスターのレコード・サイズを指定します。

    SPANNEDパラメータを指定した場合、最大32760まで指定できます。

    UNIQUEKEY|

    NONUNIQUEKEY

    定義するAIXのキー値がデータセット全体で一意であるかどうかを指定します。

    ベース・クラスターのKSDSデータセットは常に一意キーのみ指定できますが、AIXを作成する場合は非一意キーも指定できます。

    非一意キーが指定されれば、1つのセカンダリ・キーと複数の基本キーで構成されたレコードが、AIXデータセット・クラスターのレコードとして保存されます。

    UPGRADE

    定義するAIXクラスターのベース・クラスターが変更された場合、AIXクラスターの内容を同時に変更して、AIXクラスターの内容が常にベース・クラスターに対して正しいセカンダリ・インデックスを維持します。

    以下は、VSAM.KSDS1に対してセカンダリ・インデックスVSAM.AIX1を作成する例です。

    セカンダリ・インデックスVSAM.AIX1のレコードのオフセット44から始まる7バイトの部分をセカンダリ・キーとします。セカンダリ・キーは一意なものではなく、ベース・クラスターが変更されるときに自動的にアップグレードされます。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
    DEFINE AIX    (NAME(VSAM.AIX1) -
                    RELATE(VSAM.KSDS1) -
                    UPGRADE -
                    NUNQK -
                    KEYS(7 44) -
                    VOL(VOL100) -
                    SHR(2 3))
    \/
    \ JEND
  • DEFINE CLUSTER

    DEFINE CLUSTERコマンドを使ってVSAMデータセットを定義します。必須属性と追加属性を一緒に指定することができます。

    以下は、DEFINE CLUSTERコマンドの構文と指定可能な主要パラメータです。

    DEFINE CLUSTER (NAME(entryname)
                   {CYLINDERS(primary[secondary])|
                    KILOBYTES(primary[secondary])|
                    MEGABYTES(primary[secondary])|
                    RECORDS(primary[secondary])|
                    TRACKS(primary[secondary])}
           VOLUMES(vvolser[volser...])
           [CONTROLINTERVALSIZE(size)]
           [DATACLASS(class)]
           [FILE(fdname)]
           [INDEXED|LINEAR|NONINDEXED|NUMBERED]
           [KEYS(length offset| 64 0]
           [MANAGEMENTCLASS(class)]
           [OWNER(ownerid)]
           [RECATALOG|NORECATALOG]
           [RECORDSIZE(average maximum)]
           [SPANNED|NONSPANNED]
           [STORAGECLASS(class)]
           [TO(date)|FOR(days)])
           [DATA({CYLINDERS(primary[secondary])|
                  KILOBYTES(primary[secondary])|
                  MEGABYTES(primary[secondary])|
                  RECORDS(primary[secondary])|
                  TRACKS(primary[secondary])}
           [VOLUMES(vvolser[volser...])]
           [CONTROLINTERVALSIZE(size)]
           [FILE(fdname)]
           [KEYS(length offset)]
           [NAME(entryname)]
           [OWNER(ownerid)]
           [RECORDSIZE(average maximum)]
           [SPANNED|NONSPANNED])]
           [INDEX({CYLINDERS(primary[secondary])|
                   KILOBYTES(primary[secondary])|
                   MEGABYTES(primary[secondary])|
                   RECORDS(primary[secondary])|
                   TRACKS(primary[secondary])}
           [VOLUMES(volser[volser...])]
           [CONTROLINTERVALSIZE(size)]
           [FILE(fdname)]
           [NAME(entryname)]
           [OWNER(ownerid)])]
           [CATALOG(catname)]
    項目 説明

    VOLUMES

    データセットが位置するボリュームを指定します。

    INDEXED|

    NONINDEXED|

    NUMBERED

    KSDS、ESDS、RRDSなどのデータセットの構造を指定します。

    VRDSの場合はNUMBEREDを指定し、RECORDSIZEを可変長で指定します。

    KEYS

    INDEXED構造のデータセットのレコードで、キーとなる部分の位置とキーの長さを指定します。

    RECORDSIZE

    データごとのレコードの平均長と最大長を指定します。

    平均長と最大長を異なる値で指定すると、可変長のレコードであることを示します。

    SPANNED

    このパラメータが定義されているデータセットは、CONTROLINTERVALSIZEより長いレコードを保存することができます。

    NUMBERED構造のデータセットであるRRDSとVRDSに対しては、このパラメータを使用できません。

    以下は、VSAM.KSDS1というINDEXED構造のデータセットを作成する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
    DEFINE  CLUSTER (NAME(VSAM.KSDS1) -
                       INDEXED -
                       KEYS(10  0) -
                       VOL(VOL100) -
                       SPEED -
                       ORDERED -
                       SHR(2 3)) -
            INDEX   (NAME (VSAM.KSDS1.I)) -
            DATA    (NAME(VSAM.KSDS1.D) -
                       CISZ(4096) -
                       RECSZ(350 350))
    \/
    \ JEND

    VSAM.KSDS1に保存されるレコードは350バイトの固定長を持ち、キー・フィールドはレコードの最初の10バイトに位置します。また、VSAM.KSDS1データセットを構成するインデックスとデータ・コンポーネントの名前をそれぞれ明示的に指定しています。

  • DEFINE GDG(Generation Data Group)

    GDGに対応するカタログ・エントリをカタログに作成します。

    GDGの一世代(Generation)に当たる非VSAMデータセットGDSとは異なって、GDGに当たる実際のデータセットは存在しません。GDGカタログ・エントリは、対応するGDGグループにこれから属する複数のGDSを管理するための情報だけを持つカタログ・エントリです。

    DEFINE GDGの実行結果としてデータセットは生成されず、単に対応するGDGグループを管理するためのカタログ・エントリがカタログに追加されます。

    以下は、DEFINE GDGコマンドの構文です。

    DEFINE GENERATIONDATAGROUP (NAME(entryname)
                                LIMIT(limit)
                                [EMPTY|NOEMPTY]
                                [OWNER(ownerid)]
                                [SCRATCH|NOSCRATCH]
                                [TO(date)|FOR(days)])
                                [CATALOG(catname)]
    項目 説明

    NAME

    作成するGDGベースの名前を指定します。

    LIMIT

    作成するGDGに含められるGDSメンバーの最大値を指定します。

    例えば、100と指定した場合、100個を超えるGDSは作成できません。GDGメンバーは1個から255個まで作成することができます。

    EMPTY|

    NOEMPTY

    GDGベースがGDSメンバーを含むことができる最大値に達した場合、GDS全体とGDGベース間の関連付け(association)を切断するには(rolled off status)EMPTYを指定します。

    NOEMPTYを指定すると、最も古いGDSだけ関連が切れ、新しいGDSをベースに含ませます。GDGベースとの関連が切れたGDSは、単純な非VSAMデータセットとしてみなされます。

    OWNER

    作成するGDGベースの所有者を指定します。

    SCRATCH|

    NOSCRATCH

    GDGベースに含むことができるGDSメンバーが限界に達した場合、EMPTYとNOEMPTY属性によって、全体または最も古いGDSデータセットとGDGベース間の関連が切れるときに(rolled off)、そのGDSが使用するデータを削除するか(SCRATCH)、そのままにしておくか(NOSCRATCH)を指定します。

    TO|FOR

    GDGグループの有効期限を設定します。

    • TO: 有効期限の最終日をユリウス日付形式で指定します。(2006年1月1日は、2006001に指定)

    • FOR: 日数を指定します。(30を指定する場合、今日から30日間を意味します。)

    CATALOG

    作成するGDGベースが登録されるカタログの名前を指定します。システム・カタログを使用している場合は、指定されたカタログではなく、ds.confに設定されたシステム・カタログにカタログされます。

    以下は、GDSメンバーを100個まで含むことができるTEST.GDG1という名前のGDGベースを作成し、2006年12月31日をGDGベースの有効期限として設定して、TESTCATカタログに登録する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DEFINE GDG (NAME(TEST.GDG1) -
                    LIMIT(100) -
                    TO(2006365)) -
                    CATALOG(TESTCAT)
    \/
    \ JEND
  • DEFINE NONVSAM

    一般的なPS(Physical Sequential)タイプの非VSAMデータセットを作成し、作成されたデータセットをカタログに登録します。

    GDGに属するGDSは非VSAMデータセットであるため、DEFINE NONVSAMコマンドを使って作成することができます。

    以下は、DEFINE NONVSAMコマンドの構文です。

    DEFINE NONVSAM (NAME(entryname)
                    DEVICETYPES(devtype [devtype ...])
                    VOLUMES(volser [volser ...])
                    [OWNER(ownerid)]
                    [RECATALOG|NORECATALOG]
                    [TO(date)|FOR(days)])
                    [CATALOG(catname)]
    項目 説明

    NAME

    作成する非VSAMデータセットの名前を指定します。

    GDGに属するGDSを作成するには、GDGname.GxxxxVyyの形式でエントリ名を指定する必要があります。例えば、TEST.GDG1.G0001V00で、Gxxxxは世代番号であり、Vyyはバージョン番号です。

    命名規則については、『OpenFrame データセットガイド』を参照してください。

    DEVICETYPES

    非VSAMデータセットが保存されるボリュームのデバイス・タイプを指定します。3380、3390、3480などのデバイス・タイプを指定します。SYSDAのようなエソテリック・デバイス・グループ(esoteric device group)は使用できません。

    VOLUMES

    非VSAMデータセットが保存されるボリュームのシリアル番号を指定します。

    CATALOG

    非VSAMデータセットのカタログ・エントリ情報を登録するカタログを指定します。システム・カタログを使用している場合は、指定されたカタログではなく、ds.confに設定されたシステム・カタログにカタログされます。

    OWNER

    非VSAMデータセットの所有者を指定します。

    RECATALOG|

    NORECATALOG

    非VSAMデータセットに対応するVVDSとすでに存在するデータセットをカタログにだけ新規登録する場合には、RECATALOGを指定します。デフォルト値はNORECATALOGであり、データセットを新規作成します。

    TO|FOR

    非VSAMデータセットの有効期限を設定します。

    • TO: 有効期限の最終日をユリウス日付形式で指定します。(2006年1月1日は、2006001に指定)

    • FOR: 日数を指定します。(30を指定する場合、今日から30日間を意味します。)

    以下は、非VSAMデータセットであるTEST.NVSAM1を作成して、TESTCATカタログに登録する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DEFINE NONVSAM (NAME(TEST.NVSAM1) -
             VOLUMES(100000)) -
             CATALOG(TESTCAT)
    \/
    \ JEND
  • DEFINE PATH

    DEFINE PATHコマンドを使用して、ベース・クラスターへのアクセス・パスを直接定義するか、またはセカンダリ・インデックスを経由してベース・クラスターにアクセスする間接的なアクセス・パスを定義します。

    以下は、DEFINE PATHコマンドの構文です。

    DEFINE PATH (NAME(entryname)
                 [PATHENTRY(entryname)]
                 [OWNER(ownerid)]
                 [RECATALOG|NORECATALOG]
                 [TO(date)|FOR(days)]
                 [UPDATE|NOUPDATE])
                 [CATALOG(catname)]
    項目 説明

    NAME

    DEFINE PATH文を使って現在定義するパス名を指定します。

    PATHENTRY

    パスがAIXとベース・クラスターで構成されている場合は、AIXデータセットの名前を指定します。

    ベース・クラスターへのパスを定義する場合は、ベース・クラスター・データセットの名前を指定します。その名前は、ベース・クラスター・データセットのインデックス方法を指す単純なエイリアスと見ることができます。しかし、1つのベース・クラスターに複数のパスを定義することもできるため、実際にアクセスする際に適用される属性を別々に指定する用途に使えます。

    OWNER

    アクセス・パスの所有者を指定します。

    RECATALOG|

    NORECATALOG

    RECATALOGを指定すると、同一名のアクセス・パスが存在しても、既存のパスを削除して再度アクセス・パスを作成します。

    NORECATALOGを指定すると、新しいアクセス・パスのみ作成されます。

    TO|FOR

    アクセス・パスの有効期限を設定します。

    • TO: 有効期限の最終日をユリウス日付形式で指定します。(2006年1月1日は、2006001に指定)

    • FOR: 日数を指定します。(30を指定した場合、今日から30日間を意味します。)

    UPDATE|

    NOUPDATE

    • NOUPDATE:該当のパスを介してベース・クラスター・データセットを変更した場合は、変更されたベース・クラスターのアップグレード・セットへの変更が自動的に実行されません。

    • UPDATE:NOUPDATEと逆の意味です。(デフォルト値)

    以下は、セカンダリ・インデックスVSAM.AIX1を経由して、VSAM.AIX1のベース・クラスターにアクセスするアクセス・パスのVSAM.PATH1を作成する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DEFINE PATH    (NAME(VSAM.PATH1) -
                      PATHENTRY(VSAM.AIX1) -
                      UPDATE)
    \/
    \ JEND

    UPDATEパラメータが指定されているため、このアクセス・パスを使ってベース・クラスターの内容を変更する場合、VSAM.AIX1以外のセカンダリ・インデックスにもアップグレード処理が行われます。

    以下は、セカンダリ・インデックスを経由せずに、直接ベース・クラスターにアクセスするアクセス・パスVSAM.PATH2を定義する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DEFINE PATH    (NAME(VSAM.PATH2) -
                      PATHENTRY(VSAM.KSDS1) -
                      UPDATE)
    \/
    \ JEND

    UPDATEパラメータが指定されているため、VSAM.KSDS1をベース・クラスターとするセカンダリ・インデックスが存在します。VSAM.PATH2を使用してベース・クラスターの内容が変更される場合、アップグレード処理が行われます。

    DEFINE PATHに関する詳細は、OpenFrame Base『データセットガイド』を参照してください。

  • DEFINE USERCATALOG/MASTERCATALOG

    システムで提供される単一のマスター・カタログのほかに、複数のユーザー・カタログを別途使用することができます。

    DEFINE USERCATALOGコマンドを使用して、システムのマスター・カタログと同様の用途に使えるユーザー・カタログを作成することができます。これはマスター・カタログのサブ・カタログに当たります。

    作成されたユーザー・カタログの情報は、再びマスター・カタログに保存されます。ユーザー・カタログのサブ・カタログとして別のユーザー・カタログを作成することはできません。つまり、ユーザー・カタログは1レベルだけ作成することができ、すべてのユーザー・カタログはマスター・カタログにのみ登録され、他のユーザー・カタログに登録することはできません。一般的にユーザー・カタログはユーザーごとに作成するか、関連部署や業務ごとに作成します。

    OpenFrameでは、マスター・カタログの作成にKQCAMSのDEFINE MASTERCATALOGコマンドを使用せずに、OpenFrameが提供するmascatツールを使用します。一方、ユーザー・カタログをマスター・カタログのサブ・カタログとして追加で作成する場合には、KQCAMSのDEFINE USERCATALOGコマンドを使用します。

    以下は、DEFINE USERCATALOGコマンドの構文と指定可能な主要パラメータです。

    DEFINE USERCATALOG (NAME(entryname)
                       {CYLINDERS(primary[secondary])|
                        KILOBYTES(primary[secondary])|
                        MEGABYTES(primary[secondary])|
                        RECORDS(primary[secondary])|
                        TRACKS(primary[secondary])}
           VOLUME(volser)
           [CONTROLINTERVALSIZE(size)]
           [DATACLASS(class)]
           [FILE(fdname)]
           [MANAGEMENTCLASS(class)]
           [OWNER(ownerid)]
           [RECORDSIZE(average maximum|4086 32400)]
           [STORAGECLASS(class)]
           [TO(date)|FOR(days)])
           [DATA ({CYLINDERS(primary[secondary])|
                   KILOBYTES(primary[secondary])|
                   MEGABYTES(primary[secondary])|
                   RECORDS(primary[secondary])|
                   TRACKS(primary[secondary])}
           [CONTROLINTERVALSIZE(size)]
           [RECORDIZE(average maximum|4086 32400)])]
           [INDEX ({CYLINDERS(primary[secondary])|
                    KILOBYTES(primary[secondary])|
                    MEGABYTES(primary[secondary])|
                    RECORDS(primary[secondary])|
                    TRACKS(primary[secondary])}
           [CONTROLINTERVALSIZE(size)])]
           [CATALOG(mastercatname)]
    項目 説明

    NAME

    作成するユーザー・カタログの名前を指定します。

    VOLUME

    ユーザー・カタログが保存されるボリュームを指定します。

    RECORDSIZE

    ユーザーが指定したRECORDSIZEパラメータは無視され、基本カタログ構造を持つデータセットの基本的なレコード・サイズ(4086 32400)が使用されます。

    CATALOG

    作成されたユーザー・カタログが登録されるマスター・カタログの名前を指定します。この設定を省略しても、システムのマスター・カタログに自動で登録されます。

  • DELETE/VDELETE

    VSAMデータセットと非VSAMデータセット、またカタログされたその他のデータセット項目を削除するために使用します。DELETEコマンドはすでに存在する項目を削除する役割をするため、多くのパラメータを要求しません。削除する項目の名前とカタログ・エントリのタイプだけ必要です。

    以下は、DELETEコマンドの構文です。

    {DELETE|VDELETE|VDEL}
           (entryname [entryname ...])
           [ALIAS|
            ALTERNATEINDEX|
            CLUSTER|
            GENERATIONDATAGROUP|
            NONVSAM|
            PATH|
            TRUENAME|
            USERCATALOG]
           [FILE(fdname)]
           [PURGE|OPURGE]
           [FORCE|NOFORCE]
           [CATALOG(catname)]
    項目 説明

    entryname

    削除するデータセットまたはカタログ・エントリの名前を指定します。

    括弧の中に複数の名前を指定する場合、1つのコマンドで多数のエントリを削除できます。

    entrynameに指定されたデータセットは、排他的に(DISP=LOCK)割り当てられます。

    ALIAS|

    ALTERNATEINDEX|

    CLUSTER|

    GENERATIONDATAGROUP|

    NONVSAM|PATH

    TRUENAME|

    USERCATALOG

    ALIASは、エイリアスのエントリ・タイプです。

    削除するカタログ・エントリのエントリ・タイプを指定します。エントリ・タイプの指定は必須ではありませんが、指定する場合、同一名の項目を間違って削除するミスを防止できます。

    AIX、CLUSTER、PATH、TRUENAMEは、VSAMデータセットのエントリ・タイプであり、その他は非VSAMデータセットのエントリ・タイプです。

    FILE

    削除するデータセットを指定します。

    FILE(fdname)でデータセットを指定する場合、FD名はKQCAMSを呼び出したJCLのFD文によって割り当てられたFD名を指定する必要があります。

    FORCE|NOFORCE

    削除するGDGがGDSメンバーを保有している場合も強制的に削除するかどうかを指定します。現在は、GDGに対してのみ有効なオプションです。

    • FORCE:GDGのGDSメンバーの保有に関係なく削除します。

    • NOFORCE:削除するGDGがGDSメンバーを保有してる場合、削除せずにエラーを発生させます。(デフォルト値)

    PURGE|NOPURGE

    データセットを定義するときに指定した使用期間に関係なく、データセット・エントリを削除するかどうかを指定します。

    PURGEを指定した場合、使用期間に関係なくデータセット・エントリを削除します。

    NOPURGEを指定した場合、有効期限が満了したエントリのみを削除し、有効期限が切れていないエントリは削除しません。この設定を省略する場合、NOPURGEが指定されたものとして処理されます。

    データセットの使用期間(retention period)は、DEFINEコマンドのTOとFORパラメータで指定されます。

    CATALOG

    削除するカタログ・エントリ情報が登録されているカタログを指定します。

    以下は、VSAMデータセットのエントリ・タイプのVSAM.KSDS1とVSAM.KSDS2を、指定した使用期間に関係なく削除する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DELETE (VSAM.KSDS1 VSAM.KSDS2) -
              CLUSTER -
              ERASE -
              PURGE
    \/
    \ JEND
  • EXPORT

    EXPORTコマンドを使用して、VSAM CLUSTERやALTERNATE INDEXを移植可能な外部データセットにエクスポートすることができます。カタログ・データセットそのものをバックアップするために使用されます。

    以下は、EXPORTコマンドの構文です。

    EXPORT entryname {OUTFILE(fdname)|OUTDATASET(entryname)}
                     [INFILE(fdname)]
    項目 説明

    entryname

    エクスポートするカタログ・エントリのエントリ名を指定します。

    entrynameに指定されたエクスポート対象データセットは、排他的に(DISP=LOCK)割り当てられます。

    OUTFILE|

    OUTDATASET

    エクスポートの結果作成されるデータセットを指定します。

    エクスポートの結果作成されたデータセットをカタログに新規作成するか、またはデータセットがすでにカタログされている場合には、エントリ名を使用し、実行環境でKQCAMS呼び出しの前に事前に割り当てられているデータセットに作成したい場合は、FD名を使用します。

    OUTDATASETパラメータを使って指定したデータセットは、排他的に(DISP=LOCK)割り当てられます。

    INFILE

    エクスポートするデーターセットを指定します。

    INFILE(fdname)で指定する場合、FD名はKQCAMSを呼び出したJCLのFD文によって割り当てられたFD名を指定する必要があります。

    以下は、TESTCATカタログをTESTCAT.BACKUPにエクスポートする例です。カタログの内容をエクスポートしてバックアップします。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD BACK=DA,FILE=TESTCAT.BACKUP
    \ FD SYSIN=*
      EXPORT TESTCAT -
             OUTFILE(BACK)
    \/
    \ JEND
  • IMPORT

    IMPORTコマンドを使用すると、EXPORTコマンドを使用して作成したバックアップ・データセットや移植可能な外部データセットからデータセットを再び復元したり、新規作成することができます。

    以下は、IMPORTコマンドの構文です。

    IMPORT {INFILE(fdname)|INDATASET(entryname)}
           {OUTFILE(fdname)|OUTDATASET(entryname)}
           [INTOEMPTY]
           [OBJECTS((entryname
                     [MANAGEMENTCLASS(class)]
                     [NEWNAME(newname)]
                     [STORAGECLASS(class)]
                     [VOLUMES(volser[ volser...])])
                     [(entryname...)...])]
           [CATALOG(catname)]
    項目 説明

    INFILE|INDATASET

    インポートするソース・データセットを指定します。

    KQCAMSの呼び出し前に実行環境で事前に割り当てられたデータセットを使用する場合はFD名を指定し、KQCAMSが内部的に割り当てる場合にはエントリ名を使用します。

    INDATASETパラメータを使って指定されたソースデータセットは排他的に(DISP=LOCK)割り当てられます。

    OUTFILE|OUTDATASET

    KQCAMSの呼び出し前に実行環境で事前に割り当てられたデータセットを使用する場合はFD名を指定し、KQCAMSが内部的に割り当てる場合にはエントリ名を使用します。

    OUTDATASETパラメータを使って指定されたデータセットは、排他的に(DISP=LOCK)割り当てられます。

    INTOEMPTY

    インポートの結果としてデータを受信するデータセットがカタログに登録されているかデータセットに存在するけれど、ストレージ空間が割り当てられていない場合(empty dataset)、IMPORTコマンドは基本的に失敗します。IMPORTコマンドの実行中に必要なストレージ空間を確保して、コマンドを成功させたい場合は、INTOEMPTYを指定します。

    OBJECTS

    インポート作業を実行の際に、付随的に、ソース・データセットに記録されている情報の一部を変更することができます。変更しようとするエントリ名と適用する新規属性を指定します。

    複数のエントリ名に対して、繰り返し指定することができます。

    CATALOG

    インポートの際にカタロギングが必要な場合、使用するカタログを指定します。

    以下は、TESTCAT.BACKUPというバックアップ・データセットの内容をTESTCATカタログにインポートする例です。TESTCAT.BACKUPに保存されている内容を利用して、TESTCATカタログを復元します。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD BACK=DA,FILE=TESTCAT.BACKUP
    \ FD SYSIN=*
        IMPORT INFILE(BACK) -
               OUTDATASET(TESTCAT)
    \/
    \ JEND
  • LISTCAT/VLISTCAT

    LISTCATコマンドを使用して、カタログに定義されているデータセットの多様な情報を出力することができます。

    下記のようなグループにまとめて関連情報を表示します。

    • エントリ・オブジェクトの属性

    • 作成・変更・満了時間情報

    • 保護(protection)関連情報

    • データセット・アクセス統計情報

    • ストレージの割り当て情報

    • データセット構造に関する情報

    以下は、LISTCATコマンドの構文です。

    {LISTCAT|VLISTCAT|VLIST}
            [ALIAS]
            [ALTERNATEINDEX]
            [CLUSTER]
            [DATA]
            [GENERATIONDATAGROUP]
            [INDEX]
            [NONVSAM]
            [PATH]
            [USERCATALOG]
            [ENTRIES(entryname[ entryname...])|LEVEL(level)]
            [NAME|HISTORY|VOLUME|ALLOCATION|ALL]
            [CATALOG(catname)]
    項目 説明

    ALIAS

    ALTERNATEINDEX,

    CLUSTER, DATA,

    GENERATIONDATAGROUP,

    INDEX, NONVSAM, PATH,

    USERCATALOG

    指定した種類のカタログ・エントリに対してのみLISTCAT情報を出力します。

    例えば、LISTCAT CLUSTERと指定した場合、カタログ・エントリ・タイプがCLUSTERであるエントリ情報のみ出力されます。

    2つ以上のエントリ・タイプを指定することも可能です。LISTCAT DATA INDEXと指定すると、カタログ・エントリ・タイプがDATA、またはINDEXであるエントリ情報が出力されます。

    パラメータを指定しない場合は、カタログ・エントリ・タイプをフィルタリングをせず、全タイプのエントリ情報が出力されます。

    一方、ENTRIESパラメータを指定した場合は、エントリ・タイプが一致しても、エントリ名がENTRIESパラメータに指定されている名前と一致しないエントリ情報は出力されません。

    ENTRIES|LEVEL

    LISTCATコマンドの対象になるカタログ・エントリ名を指定します。

    • ENTRIES: カタログに存在するエントリ名の中から、指定のエントリ名と名前が一致し、セグメント数も一致する名前だけがコマンドの対象として指定されます。

    • LEVEL: カタログに存在するエントリ名の中から、指定のエントリ名と名前の先頭が一致するエントリ名がコマンドの対象として指定されます。ユーザーが指定したエントリのセグメント数より多いセグメント数を持つ名前もコマンドの対象として指定されます。

    ENTRIESとLEVELの使用例は以下のとおりです。

    • カタログが次のようなエントリ名を持つ場合

      1. A.A.B

      2. A.B.B

      3. A.B.B.C

      4. A.B.B.C.C

      5. A.C.C

      6. A.D

      7. A.E

      8. A

    • ENTRIES(A.*)を指定した場合、6、7がコマンドの対象に選択されます。

    • ENTRIES(A.*.B)を指定した場合、1、2がコマンドの対象に選択されます。

    • LEVEL(A.*.B)を指定した場合、1、2、3、4がコマンドの対象に選択されます。

    • LEVEL(A)を指定した場合、1、2、3、4、5、6、7がすべてコマンドの対象に選択されます。

    (*は、対応するセグメントのすべての名前と一致します。)

    NAME|HISTORY|

    VOLUME|

    ALLOCATION|ALL

    上記のエントリ・タイプのフィルター、およびENTRIESパラメータで指定されるエントリ名の条件を満たすカタログ・エントリの情報を出力するときに、出力する情報のレベルを指定します。

    NAMEを指定すると最も基本的な情報のみ出力され、ALLを指定するとエントリのすべての情報が出力されます。

    CATALOG

    LISTCATコマンドの対象となるカタログ名を指定します。上記のENTRIESまたはLEVELに指定するエントリ名は、ここで指定するカタログから検索されます。

    以下は、VSAM.KSDS1のすべてのエントリの情報を出力する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      LISTCAT ENTRIES(VSAM.KSDS1) ALL
    \/
    \ JEND

    以下は、上記のLISTCATコマンドの実行結果として出力される内容(SYSPRINT)です。

    CLUSTER ------------- VSAM.KSDS1
       HISTORY
         CREATION -------------- (NULL)   DATASET-OWNER ----------- (EMPTY)
         RELEASE ------------------- 1   VSAM QUIESCED --------------- (NO)
       PROTECTION-PSWD---------- (NULL)
       ASSOCIATIONS
         DATA ------------ VSAM.KSDS1.D
         INDEX ----------- VSAM.KSDS1.I
    DATA ---------------- VSAM.KSDS1.D
       HISTORY
         CREATION --------------- (NULL)   DATASET-OWNER ---------- (EMPTY)
         RELEASE -------------------- 1
       PROTECTION-PSWD ---------- (NULL)
       ASSOCIATION
         CLUSTER ----------- VSAM.KSDS1
       ATTRIBUTES
         AVGLRECL ----------------- 350   MAXLRECL ------------------- 350
         KEYLEN -------------------- 10   RKP -------------------------- 0
         CISIZE ------------------ 4096   INDEXED
         NON-SPANNED
       STATISTICS
         REC-DELETED ---------------- 0   REC-INSERTED ------------- 10445
         REC-RETRIEVED -------------- 0   REC-TOTAL ---------------- 10445
         REC-UPDATED ---------------- 0   TIMESTAMP ---------------- (NULL)
       ALLOCATION
         HI-A-RBA ------------------- 0   HI-U-RBA --------------------- 0
       VOLUMES
         VOLSER ----------------- (TSAM)
    INDEX --------------- VSAM.KSDS1.I
       HISTORY
         CREATION --------------- (NULL)   DATASET-OWNER ---------- (EMPTY)
         RELEASE -------------------- 1
       PROTECTION-PSWD ---------- (NULL)
       ASSOCIATION
         CLUSTER ----------- VSAM.KSDS1
       ATTRIBUTES
         AVGLRECL ----------------- 350   MAXLRECL ------------------- 350
         KEYLEN -------------------- 10   RKP -------------------------- 0
         CISIZE ------------------ 4096
       STATISTICS
         INDEX:
           ENTRIES/SECT ------------ 254     HI-LEVEL-RBA ----------- 12288
           LEVELS -------------------- 2     SEQ-SET-RBA ------------- 4096
         REC-DELETED ----------------- 0   REC-INSERTED ------------ 10445
         REC-RETRIEVED --------------- 0   REC-TOTAL --------------- 10445
         REC-UPDATED ----------------- 0   TIMESTAMP --------------- (NULL)
       ALLOCATION
         HI-A-RBA -------------------- 0   HI-U-RBA ------------------- 0
       VOLUMES
         VOLSER ---------------------- (TSAM)
  • PRINT

    VSAMおよび非VSAMデータセットに保存されているレコードを出力して表示します。

    PRINTコマンドの構文は以下のとおりです。

    PRINT {INFILE(fdname)|INDATASET(entryname)}
          [CHARACTER|DUMP|HEX]
          [FROMKEY(key)|FROMADDRESS(address)|FROMNUMBER(number)|SKIP(number)]
          [OUTFILE(fdname)]
          [TOKEY(key)|TOADDRESS(address)|TONUMBER(number)|COUNT(number)]
    項目 説明

    INFILE|INDATASET

    PRINTコマンドを使用して、内容を出力するデータセットを指定します。

    • INFILE:JCLによって事前に割り当てられたFD名を指定する必要があります。

    • INDATASET:KQCAMSが直接データセットを割り当てて、排他的に(DISP=LOCK)割り当てます。

    CHARACTER|

    DUMP|

    HEX

    出力内容のフォーマットを指定します。

    • CHARACTER: 文字列形式でレコードの内容を出力します。

    • DUMP: 右側には16進数で、左側には文字列形式を並んで出力します。(デフォルト値)

    • HEX: 16進数で出力します。

    FROMKEY|

    FROMADDRESS|

    FROMNUMBER|SKIP

    PRINT文はREPRO文と同様のパラメータを使用して、ユーザーが出力するレコードの範囲を指定できます。各パラメータの意味は、次に説明されるREPROコマンドのパラメータと同じです。

    OUTFILE

    SYSPRINTではなく、他のFDにPRINT結果を出力する場合に使用します。

    PRINTコマンドで出力されるデータセットの内容を保存する別途のデータセットを指定します。JCLによって事前に割り当てられたFD名を指定する必要があります。

    このパラメータを省略すると、PRINTコマンドはデフォルトでSYSPRINTに出力します。

    TOKEY|TOADDRESS

    |TONUMBER|COUNT

    PRINT文はREPRO文と同様のパラメータを使用して、ユーザーが出力するレコードの範囲を指定できます。各パラメータの意味は、REPROコマンドのパラメータと同じです。

    以下は、TEST.KSDS1に保存されているレコードをTEST.OUTにDUMPフォーマットで出力する例です。出力されるレコードの範囲は、キー値が0000000099である最初のレコードから10個です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD OUTFD=DA,FILE=TEST.OUT
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
        PRINT INDATASET(TEST.KSDS1) DUMP -
              FROMKEY(0000000099) OUTFILE(OUTFD) COUNT(10)
    \/
    \ JEND

    以下は、上記のJCLの実行結果、TEST.OUTに出力された内容です。

    KEY OF RECORD = 30303030303030303939
    0000: 3030 3030 3030 3030 3939 7265 636F 7264 *0000000099record*
    0010: 3030 3030 3030 3030 3939                *0000000099      *
    KEY OF RECORD = 30303030303030313030
    0000: 3030 3030 3030 3031 3030 7265 636F 7264 *0000000100record*
    0010: 3030 3030 3030 3031 3030                *0000000100      *
    KEY OF RECORD = 30303030303030313031
    0000: 3030 3030 3030 3031 3031 7265 636F 7264 *0000000101record*
    0010: 3030 3030 3030 3031 3031                *0000000101      *
    KEY OF RECORD = 30303030303030313032
    0000: 3030 3030 3030 3031 3032 7265 636F 7264 *0000000102record*
    0010: 3030 3030 3030 3031 3032                *0000000102      *
    KEY OF RECORD = 30303030303030313033
    0000: 3030 3030 3030 3031 3033 7265 636F 7264 *0000000103record*
    0010: 3030 3030 3030 3031 3033                *0000000103      *
    KEY OF RECORD = 30303030303030313034
    0000: 3030 3030 3030 3031 3034 7265 636F 7264 *0000000104record*
    0010: 3030 3030 3030 3031 3034                *0000000104      *
    KEY OF RECORD = 30303030303030313035
    0000: 3030 3030 3030 3031 3035 7265 636F 7264 *0000000105record*
    0010: 3030 3030 3030 3031 3035                *0000000105      *
    KEY OF RECORD = 30303030303030313036
    0000: 3030 3030 3030 3031 3036 7265 636F 7264 *0000000106record*
    0010: 3030 3030 3030 3031 3036                *0000000106      *
    KEY OF RECORD = 30303030303030313037
    0000: 3030 3030 3030 3031 3037 7265 636F 7264 *0000000107record*
    0010: 3030 3030 3030 3031 3037                *0000000107      *
    KEY OF RECORD = 30303030303030313038
    0000: 3030 3030 3030 3031 3038 7265 636F 7264 *0000000108record*
    0010: 3030 3030 3030 3031 3038                *0000000108      *
    PRINT 10 record(s)
    KQCAMS: PRINT OK
  • REPRO

    DEFINEコマンドでデータセットがすでに定義されている場合、REPROコマンドを使用してVSAMと非VSAMデータセットの内容を他のデータセットに保存することができます。このコマンドで使用されるVSAMデータセットはカタログに登録されている必要がありますが、非VSAMデータセットの場合はカタログに登録されていなくても構いません。

    メインフレームのカタログは、一般的に1つのKSDSクラスターに保存されているため、REPROコマンドはカタログの内容そのものをコピーする用途に使用できます。

    REPROコマンドを使用せずに、アプリケーションを利用してデータセットにレコードを保存することも一般的に行われますが、REPROコマンドはレコードの内容に関係なく、主に管理目的でデータセットをコピーする用途に使われます。

    以下は、REPROコマンド構文です。

    REPRO {INFILE(fdname)|INDATASET(entryname)}
          {OUTFILE(fdname)|OUTDATASET(entryname)}
          [ENTRIES(entryname [entryname...])|LEVEL(level)]
          [FROMKEY(key)|FROMADDRESS(address)|FROMNUMBER(number)|SKIP(number)]
          [MERGECAT|NOMERGECAT]
          [REPLACE|NOREPLACE]
          [REUSE|NOREUSE]
          [TOKEY(key)|TOADDRESS(address)|TONUMBER(number)|COUNT(number)]
    項目 説明

    INFILE|INDATASET

    コピーするソース・データセットを指定します。

    • INFILE:JCLによって指定されたFD名を指定し、INDATASETパラメータを使用する場合は、データセットのカタログに登録されているエントリ名を指定する必要があります。

    • INDATASET:INDATASETパラメータを使って指定したソース・データセットは、排他的に(DISP=LOCK)割り当てられます。

    OUTFILE|OUTDATASET

    ソース・データセットをコピーした後に保存する対象のデータセットを指定します。

    • OUTFILE:パラメータ値としてFD名を指定し、OUTDATASETパラメータ値でカタログされたエントリ名を指定する必要があります。

    • OUTDATASET:OUTDATASETパラメータを使って指定した対象データセットは、排他的に(DISP=LOCK)割り当てられます。

    ENTRIES|LEVEL

    REPROコマンドを使用してカタログをコピーするときに、対象になるカタログ・エントリ名を指定します。この場合、2つのカタログの間でカタログ・エントリ名だけがコピーされます。カタログ・エントリが指し示すデータセットはコピーされません。

    • ENTRIES: カタログに存在するエントリ名の中から、指定のエントリ名と名前が一致し、セグメント数も一致するエントリ名だけがコマンドの対象として指定されます。

    • LEVEL: カタログに存在するエントリ名の中から、指定のエントリ名と名前の先頭が一致するエントリ名がコマンドの対象として指定されます。ユーザーが指定したエントリのセグメント数より多いセグメント数を持つ名前もコマンドの対象として指定されます。

    ENTRIESとLEVELの使用例は以下のとおりです。

    • カタログが次のようなエントリ名を持つ場合

      1. A.A.B

      2. A.B.B

      3. A.B.B.C

      4. A.B.B.C.C

      5. A.C.C

      6. A.D

      7. A.E

      8. A

    • ENTRIES(A.*)を指定した場合、6、7がコマンドの対象に選択されます。

    • ENTRIES(A.*.B)を指定した場合、1、2がコマンドの対象に選択されます。

    • LEVEL(A.*.B)を指定した場合、1、2、3、4がコマンドの対象に選択されます。

    • LEVEL(A)を指定した場合、1、2、3、4、5、6、7がすべてコマンドの対象に選択されます。

    (*は、対応するセグメントのすべての名前と一致します。)

    FROMKEY|

    FROMADDRESS|

    FROMNUMBER|SKIP

    データセット全体をコピーぜずに、データセットの一部レコードだけをコピーする場合に、コピーの対象を限定します。

    各パラメータは、それぞれ特定のキー、アドレス、レコード番号以降のレコードをコピーし、SKIPパラメータは最初のレコードから指定の数のレコードはコピーせず、その次のレコードからコピーします。つまり、コピー作業の開始レコードを指定します。

    MERGECAT|

    NOMERGECAT

    REPROコマンドを使用して、一般のデータセットのほかに、カタログを含んでいる特殊なデータセットを対象にコピー作業を実行できます。

    • MERGECAT: ソース・カタログのレコードをターゲット・カタログにコピーした後、ソース・カタログのレコードを削除します。

    • NOMERGECAT: コピーのみ実行され、ソース・カタログからカタログ・レコードは削除されません。NOMERGECATを指定する場合、ターゲット・カタログは空である必要があります。(デフォルト値)

    REPLACE|NOREPLACE

    ソース・データセットをターゲット・データセットにコピーするときに、ターゲット・データセットに同じレコードがすでに存在する場合の処理方法を指定します。

    • REPLACE: 既存のレコードを新規レコードに代替します。

    • NOREPLACE: 重複レコードが発見されたというエラー・メッセージだけを表示し、ターゲット・データセットの重複レコードにはコピーしません。(デフォルト値)

    REUSE|NOREUSE

    カタログではなく、VSAMデータセットがターゲット・データセットである場合に使用します。既存のレコードを再利用するというより、データセットのレコードの保存に使用される領域を再利用します。

    • REUSE: ターゲット・データセットにすでにレコードが存在する場合でも、最初からレコードを追加します。(HURBAを0の状態で開いて書き込みを行います。)

    • NOREUSE: ターゲット・データセットの最後のレコード以降からレコードを追加します。既存のデータセットのレコードを削除しないまま、ターゲット・データセットにレコードをコピーします。

    TOKEY|TOADDRESS

    TONUMBER|COUNT

    コピー対象の最後のレコードを指定して、コピー作業の対象となるレコードを制限します。

    以下は、VSAM.KSDS1データセットの50001番のレコードから10000個のレコードを、VSAM.KSDS2データセットにコピーする例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD INFD=DA,FILE=VSAM.KSDS1
    \ FD OUTFD=DA,FILE=VSAM.KSDS2
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
    REPRO  INFILE(INFD) -
    OUTFILE(OUTFD) -
    SKIP(50000) COUNT(10000)
    \/
    \ JEND
  • VERIFY

    アプリケーションでVSAMデータセットを開放して使用する際に、異常終了のため終了処理が正しく行われていない場合、VSAMデータセットがカタログにレコードを保存するためのストレージの情報を不正確な値で記録することがあります。

    上記の理由でカタログに問題が発生した場合、VERIFYコマンドは問題のVSAMデータセットのストレージ、および状態情報が正しいか確認して、データセットのカタログ情報が正しくない場合は、正しい値に更新します。異常終了が発生した場合、カタログのSTATISTICS/REC-TOTAL情報が実際のVSAMデータセットのレコード数と一致しないことがありますが、VERIFYコマンドを実行すると、STATISTICS/REC-TOTAL情報を正しい値に更新できます。

    VERIFYコマンドは、VSAMデータセットに対してのみ動作します。

    以下は、VERIFYコマンドの構文です。

    VERIFY FILE(fdname)|DATASET(entryname)
    項目 説明

    FILE|DATASET

    VERIFYコマンドの対象となるデータセットを指定します。

    • FILE:JCLによって割り当てられたデータセットのFD名を指定します。

    • DATASET:KQCAMSが指定されたデータセットを直接割り当てて、共有(DISP=CONT)割り当てを行います。

    以下は、TEST.CLUS1データセットのカタログ情報を確認する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD TESTFD=DA,FILE=TEST.CLUS1
    \ FD SYSIN=*
        VERIFY FILE(TESTFD)
    \/
    \ JEND

11.5. 補助コマンド

1回のKQCAMSの実行で、複数のKQCAMSコマンドを実行することができます。

補助コマンド(Modal command)は、複数のKQCAMSコマンドを実行するために必要な機能を提供するコマンドであり、カタログ・エントリやオブジェクトを実際に処理する機能コマンドとは区分されます。

現在KQCAMSの補助コマンドのうち、PARMはサポートしていません。

  • IF-THEN-ELSE

    実行コマンドの結果コード値(LASTCC、またはMAXCC)によって、次に実行するコマンドを分岐させるために使用されます。IFとTHENの間には、条件分岐の際に評価する条件を指定します。条件は、条件コード(Condition Code)と特定の定数を比較して指定します。例えば、「LASTCC > 30」と指定すれば、条件コード変数の1つであるLASTCC値が30より大きい場合を意味します。

    THEN文にはIF文が真の場合に実行するKQCAMSコマンドを指定し、ELSE文にはIF文が偽の場合に実行するコマンドを指定します。IF文が偽の場合に実行するコマンドがない場合は、ELSE文を省略できます。

    IF-THEN-ELSE文は条件によって異なるコマンドを実行する、1つのKQCAMSコマンドとしてみなされます。そのため、IF-THEN-ELSE文を複数行にまたがって指定する場合は、ハイフン(-)を正しく使用する必要があります。

    以下は、IF-THEN-ELSEコマンドの構文です。

    IF {Condition Code} {operator} {number}
    THEN[ command| DO command set END]
    [ELSE[ command| DO command set END]]
    • 条件コード

      以下は、条件コードに指定可能な値です。

      説明

      LASTCC

      最も最近実行されたコマンドの実行結果を保存する変数です。成功した場合は10の値を持ち、無視できる警告が発生した場合は10、また深刻な問題が発生した場合は50の値を持ちます。

      MAXCC

      現在実行中のコマンドより前に実行されたコマンドの実行結果値の中で最大値を保存するために使用する変数です。

      Operator

      条件コードの値を評価するための演算子です。

      指定可能な値と意味は下の[参考]の比較演算子表を参照してください。

    以下は、LASTCCの値が30と等しい場合に、MAXCCに10を設定するプログラムの一部を示した例です。IF-THEN文が実際に動作するのを見せるためにLASTCCを30に設定しています。IF-THEN文を実行すると、LASTCC値が30であるため、THENに続くSET MAXCC=10が実行されます。この状態でKQCAMSを終了すると、最終のMAXCC値を報告して終了するため、実行結果を確認できます。

    SET LASTCC=30
    IF LASTCC=30 THEN SET MAXCC=10

    以下は、LASTCCの値が20より大きい場合はTEST.SDS1のエントリ情報を取得し、LASTCCが20より大きくない場合はTEST.SDS2のエントリ情報を取得する例です。一般的に、SET LASTCCの位置で他のKQCAMSコマンドが実行され、その結果によってLASTCCが設定され、またその値に基づいて条件付きでコマンドを実行します。この例では、IF-THEN-ELSE文の動作をテストするために強制的にIF文の前にLASTCCの値を10に設定しました。IF文の結果に基づいて、TEST.SDS2がLISTCATされます。

    SET LASTCC=10
    IF LASTCC > 20 -
    THEN -
        LISTCAT ENT(TEST.SDS1)
    ELSE -
        LISTCAT ENT(TEST.SDS2)
  • Null

    Nullは何の動作も発生しない文法的な用途のコマンドであり、次の2つの目的で使用されます。

    • IF-THEN-ELSE文の文法に従いながら、THENやELSEに何のコマンドも指定しない場合に使用します。

    • NullがIF-THEN-ELSE文以外で使用された場合、空の行として処理されます。

      THENやELSEの後ろで改行する場合、行が続くことを意味するハイフン(-)を指定しません。ハイフン(-)を指定すると、KQCAMSは、THENやELSE文の次にコマンドがあることを仮定して処理を行うため、意図したとおりのコマンドの分岐が実行されません。

    以下は、LASTCCが20より大きい場合は実行するコマンドがなく、LASTCCが20より小さい場合はTEST.SDS2のエントリ情報を取得する例です。

    SET LASTCC=10
    IF LASTCC > 20 -
    THEN
    ELSE LISTCAT ENT(TEST.SDS2)
  • SET

    MAXCC、またはLASTCCの値を強制的に特定の値に設定する場合に使用します。主に特定の警告レベルの条件コードを無視して、JCLでKQCAMS以降のステップを継続して実行するために使用されます。

    以下は、LASTCCの値が30と等しい場合、強制的にMAXCCの値を10に設定する例です。

    DELステップで、TEST.SDS1がない場合には、戻りコード30を返して終了します。そのため、DEFステップは実行されません。TJESの設定やジョブに指定されたCONDによって異なることがありますが、戻りコードが30の場合に、MAXCCを10に強制設定することで、後続のDEFステップが実行されるようにして、DEFステップを処理せずにジョブがABEND処理されることを防止することができます。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DELETE TEST.SDS1
      IF LASTCC=30 THEN SET MAXCC=10
    \/
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
      DEFINE NONVSAM (NAME(TEST.SDS1) VOLUMES(100000))
    \/
    \ JEND
  • CANCEL

    CANCELコマンドに遭遇すると、KQCAMSの実行が終了され、CANCELコマンド以降のコマンドは処理されません。

    以下の例は、LASTCCが20である場合に、次のTHENコマンドの実行中にCANCELが実行され、KQCAMSの実行を終了するプログラムの一部です。

    LISTCAT ENTRIES(MUST.EXIST.SDS)
    IF LASTCC=20 THEN CANCEL
    ...

    LISCATで指定したカタログ・エントリが存在しない場合の条件コードは20です。条件コードが20である場合、メッセージ・レベルの条件コードであるため、次のKQCAMSコマンドが続けて実行されます。

    上記の例は、MUST.EXIST.SDSデーターセットが存在しない場合、次のコマンドを実行せずに、直ちにIF条件を評価して、条件を満たす場合にはCANCELコマンドを実行して、KQCAMSの実行を終了します。

11.6. 非機能コマンド

本節では、KQCAMSユーティリティの非機能コマンドの使用方法について説明します。

  • BLDINDEX

    BLDINDEXコマンドを使って、既存に存在するデータセットのセカンダリ・インデックスを構成します。BLDINDEXコマンドは、内部的には、セカンダリ・インデックスのクラスターに1つのセカンダリ・キーと多数の基本キーで構成されているレコードをロードする役割をします。

    以下は、BLDINDEXコマンドの構文です。

    BLDINDEX {INFILE(fdname)|INDATASET(entryname)}
             {OUTFILE(fdname)|OUTDATASET(entryname)}
             [CATALOG(catname)]
    項目 説明

    INFILE|

    INDATASET

    セカンダリ・インデックスの構成に使用するベース・クラスターを指定します。

    • INFILE: KQCAMS呼び出しの前に実行環境によって事前に割り当てられたデータセットを使用する場合には、FD名を使用します。

    • INDATASET: KQCAMSが自らデータセットを割り当てる場合は、エントリ名を使用します。INDATASETパラメータを使用して指定したベース・クラスターは、排他的に(DISP=LOCK)割り当てられます。

    OUTFILE|

    OUTDATASET

    BLDINDEXの結果で構成されるセカンダリ・インデックスのクラスターを指定します。

    BLDINDEXの前に、セカンダリ・インデックスは事前に定義されていなければなりません。

    • OUTFILE: KQCAMSKQCAMS呼び出しの前に実行環境によって事前に割り当てられたデータセットを使用する場合は、FD名を使用します。

    • OUTDATASET: KQCAMSが自らデータセットを割り当てる場合は、エントリ名を使用します。OUTDATASETパラメータを使用して指定したセカンダリ・インデックスのクラスターは、排他的に(DISP=LOCK)割り当てられます。

    CATALOG

    entrynameに指定されたカタログ・エントリを検索するときに使用するカタログを指定します。指定しない場合は、カタログの検索順序によって決定されます。

    以下は、VSAM.KSDS1のセカンダリ・インデックスであるVSAM.AIX1を構成する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD BASE=DA,FILE=VSAM.KSDS1,DISP=LOCK
    \ FD AIX=DA,FILE=VSAM.AIX1,DISP=LOCK
    \ FD SYSIN=*
        BLDINDEX INFILE(BASE) -
                 OUTFILE(AIX)
    \/
    \ JEND
  • EXAMINE

    EXAMINEコマンドは、KSDSのインデックスとデータ領域の整合性を解析し、その結果を出力するコマンドです。

    OpenFrameでは、このコマンドは何の動作も行いません。

    EXAMINEコマンドの構文で指定できるパラメータは次のとおりです。

    EXAMINE {NAME(clustername)}
           [{INDEXTEST|NOINDEXTEST}]
           [{DATATEST|NODATATEST}]
           [ERRORLIMIT(value)]
    項目 説明

    NAME

    整合性チェックを実行するKSDSまたはユーザー・カタログ名を指定します。

    INDEXTEST|

    NOINDEXTEST

    指定されたクラスターのインデックス・コンポーネントに対して整合性チェックを実行するかどうかを指定します。

    • INDEXTEST:インデックス・コンポーネントの整合性チェックを実行します。(デフォルト)

    • NOINDEXTEST:インデックス・コンポーネントの整合性チェックを実行しません。

    DATATEST|

    NODATATEST

    指定されたクラスターのデータ・コンポーネントに対して整合性チェックを実行するかどうかを指定します。

    • DATATEST:データ・コンポーネントの整合性チェックを実行します。

    • NODATATEST:データ・コンポーネントの整合性チェックを実行しません。(デフォルト)

    ERRORLIMIT

    コマンドの実行結果として表示されるエラーの制限数をvalueに指定します。

    以下は、VSAM.KSDS1に対してEXAMINEコマンドを実行する例です。

    \ JOB OBM
    \ EX KQCAMS
    \ FD SYSPRINT=DA,SOUT=A
    \ FD SYSIN=*
       EXAMINE -
           NAME(VSAM.KSDS1) -
           INDEXTEST -
           DATATEST -
           ERRORLIMIT(350)
    \/
    \ JEND

11.7. 関連環境設定

KQCAMSに関する環境設定は、OpenFrame環境設定のidcamsサブジェクトで行います。 KQCAMSの一部の動作は、ユーザーの要求に応じて設定を変更して調整することができます。

環境設定項目についての詳細は、OpenFrame Batch『環境設定ガイド』を参照してください。

[参考]

以下は、KQCAMSのコマンドの中で実際には動作しないが、エラーが発生しないように処理されるパラメータの一覧です。

コマンド パラメータ

ALTER

[ACCOUNT(account–info)]

[ADDVOLUMES(volser[ volser…​])]

[BUFFERSPACE(size)]

[BUFND(number)]

[BUFNI(number)]

[BWO(TYPECICS|TYPEIMS|NO)]

[CCSID(value)]

[CODE(code)]

[ECSHARING|NOECSHARING]

[ERASE|NOERASE]

[EXCEPTIONEXIT(entrypoint)]

[FILEDATA(TEXT|BINARY)]

[FREESPACE(CI-percent[ CA-percent])]

[FRLOG(NONE[ REDO])]

[INHIBIT|UNINHIBIT]

[KEYS(length offset)]

[LOCK|UNLOCK]

[LOG(NONE|UNDO|ALL)]

[LOGSTREAMID(logstream)]

[MANAGEMENTCLASS(class)] [NULLIFY( [AUTHORIZATION(MODULE|STRING)] [BWO] [CODE] [EXCEPTIONEXIT] [LOG] [LOGSTREAMID]

[RECORDSIZE(average maximum)]

[REMOVEVOLUMES(volser[ volser…​])]

[REUSE|NOREUSE]

[ROLLIN]

[SHAREOPTIONS(crossregion[ crosssystem])]

[STORAGECLASS(class)]

[STRNO(number)]

[TYPE(LINEAR)]

[UNIQUEKEY|NONUNIQUEKEY]

[UPDATE|NOUPDATE]

[UPGRADE|NOUPGRADE]

[WRITECHECK|NOWRITECHECK]

BLDINDEX

[{EXTERNALSORT|INTERNALSORT}]

[{SORTCALL|NOSORTCALL}]

[SORTDEVICETYPE(device type)]

[SORTFILENUMBER(number)]

[SORTMESSAGEDD(fdname)]

[SORTMESSAGELEVEL({ALL|CRITICAL|NONE})]

[WORKFILES(fdname[ fdname…​])

DEFINE command

[ACCOUNT(account–info)]

[BUFFERSPACE(size)]

[BWO(TYPECICS|TYPEIMS|NO)]

[ERASE|NOERASE]

[EXCEPTIONEXIT(entrypoint)]

[FILE(fdname)]

[FREESPACE(CI-percent[ CA-percent])]

[FRLOG(NONE[| REDO])]

[LOG(NONE|UNDO|ALL)]

[LOGSTREAMID(logstream)]

[MODEL(entryname[ catname])]

[REUSE|NOREUSE]

[SHAREOPTIONS(crossregion[ crosssystem])]

[SPEED|RECOVERY]

[WRITECHECK|NOWRITECHECK])

[CYLINDERS(primary[secodnary])]

[KILOBYTES(primary[secodnary])]

[MEGABYTES(primary[secodnary])]

[RECORDS(primary[secodnary])]

[TRACKS(primary[secodnary])]

[CONTROLINTERVALSIZE(size)]

DELETE

[LIBRARYENTRY|NVR|PAGESPACE|VOLUMEENTRY|VVR]

[ERASE|NOERASE]

[FORCE|NOFORCE]

[PURGE|NOPURGE]

[RECOVERY|NORECOVERY]

[SCRATCH|NOSCRATCH]

EXPORT

[CIMODE|RECORDMODE]

[ERASE|NOERASE]

[INHIBITSOURCE|NOINHIBITSOURCE]

[INHIBITTARGET|NOINHIBITTARGET]

[PURGE|NOPURGE]

[TEMPORARY|PERMANENT]

IMPORT

[ALIAS|NOALIAS]

[ERASE|NOERASE]

[LOCK|UNLOCK]

[OBJECTS ([FILE(fdname)])]

[PURGE|NOPURGE]

[SAVRAC|NOSAVRAC]

LISTCAT

[LIBRARYENTRIES(libent)]

[PAGESPACE]

[VOLUMEENTRIES(volent)]

[EXPIRATION(days)]

[FILE(fdname)]

[LIBRARY(libname)]

[OUTFILE(fdname)]

PRINT

[DBCS]

[INSERTSHIFT((offset1 offset2)[(offset1 offset2 )…​])|INSERTALL]

[SKIPDBCSCHECK((offset1 offset2) [(offset1 offset2)…​])|NODBCSCHECK]

REPRO

[DBCS]

[ERRORLIMIT(value)]

[FILE(fdname)]

[INSERTSHIFT((offset1 offset2)[(offset1 offset2 )…​])| INSERTALL]

[SKIPDBCSCHECK((offset1 offset2)[(offset1 offset2 )…​])|NODBCSCHECK]

[VOLUMEENTRIES(entryname)]
[ENCIPHER({EXTERNALKEYNAME(keyname) |
INTERNALKEYNAME(keyname)|PRIVATEKEY}
[CIPHERUNIT(number|1)]
[DATAKEYFILE(fdname)|DATAKEYVALUE(value)]
[SHIPKEYNAMES(keyname[ keyname…​])]
[STOREDATAKEY|NOSTOREDATAKEY]
[STOREKEYNAME(keyname)]
[USERDATA(value)])]

[DECIPHER({DATAKEYFILE(fdname) |
DATAKEYVALUE(value)|SYSTEMKEY} [SYSTEMDATAKEY(value)]
[SYSTEMKEYNAME(keyname)])]

DEFINEのサブコマンドの場合は、以下のとおりです。

サブコマンド パラメータ

ALIAS

(SYMBOLICRELATE(entryname))

ALTERNATEINDEX

(BUFFERSPACE(size)]

[ERASE|NOERASE]

[EXCEPTIONEXIT(entrypoint)]

[FREESPACE(CI-percent[ CA-percent]| 0 0)]

[{KEYRANGES|KEYRANGE|KEYRNG|KRNG}((lowkey highkey)[(lowkey highkey)…​])]

[MODEL(entryname[ catname])]

[REUSE|NOREUSE]

[SHAREOPTIONS(crossregion[ crosssystem]| 1 3)]

[SPEED|RECOVERY]

[WRITECHECK|NOWRITECHECK])

[DATA ([ATTEMPTS(number)]
[AUTHORIZATION(entrypoint[ string])]
[BUFFERSPACE(size)]
[CODE(code)]
[ERASE|NOERASE]
[EXCEPTIONEXIT(entrypoint)]
[FREESPACE(CI-percent[ CA-percent])]
[{KEYRANGES|KEYRANGE|KEYRNG|KRNG}((lowkey highkey) [(lowkey highkey)…​ ])]
[MODEL(entryname [ catname ])]
[REUSE|NOREUSE]
[SHAREOPTIONS(crossregion[ crosssystem])]
[SPEED|RECOVERY]
[WRITECHECK|NOWRITECHECK])]

[INDEX ([ATTEMPTS(number)]
[AUTHORIZATION(entrypoint[ string])]
[CODE(code)]
[EXCEPTIONEXIT(entrypoint)]
[MODEL(entryname[ catname ])]
[REUSE|NOREUSE]
[SHAREOPTIONS(crossregion[ crosssystem])]
[WRITECHECK|NOWRITECHECK])]

CLUSTER

([ACCOUNT(account–info)]

[BUFFERSPACE(size)]

[BWO(TYPECICS|TYPEIMS|NO)]

[ERASE|NOERASE]

[EXCEPTIONEXIT(entrypoint)]

[FREESPACE(CI-percent[ CA-percent]|0 0)]

[FRLOG(NONE[| REDO])]

[LOG(NONE|UNDO|ALL)]

[LOGSTREAMID(logstream)]

[{KEYRANGES|KEYRANGE|KEYRNG|KRNG}((lowkey highkey)[(lowkey highkey)…​])]

[MODEL(entryname[ catname])]

[REUSE|NOREUSE]

[SHAREOPTIONS(crossregion[ crosssystem]|1 3)]

[SPEED|RECOVERY]

[WRITECHECK|NOWRITECHECK])

[DATA ([BUFFERSPACE(size)]
[ERASE|NOERASE]
[EXCEPTIONEXIT(entrypoint)]
[FREESPACE(CI-percent[ CA-percent])]
[{KEYRANGES|KEYRANGE|KEYRNG|KRNG}((lowkey highkey) [(lowkey highkey)…​ ])]
[MODEL(entryname [ catname ])]
[REUSE|NOREUSE]
[SHAREOPTIONS(crossregion[ crosssystem])]
[SPEED|RECOVERY]
[WRITECHECK|NOWRITECHECK])]

[INDEX ([EXCEPTIONEXIT(entrypoint)]
[MODEL(entryname[ catname ])]
[REUSE|NOREUSE]
[SHAREOPTIONS(crossregion[ crosssystem])]
[WRITECHECK|NOWRITECHECK])]

GENERATIONDATAGROUP

([SCRATCH|NOSCRATCH])

NONVSAM

([COLLECTION]

[FILESEQUENCENUMBERS(number[ number…​])])

PATH

([MODEL(entryname[ catname])])

USERCATALOG

([BUFFERSPACE(size|3072)]

[BUFND(number)]

[BUFNI(number)]

[ECSHARING|NOECSHARING]

[FREESPACE(CI-percent[ CA-percent]|0 0)]

[ICFCATALOG|VOLCATALOG]

[LOCK|UNLOCK]

[MODEL(entryname[ catname])]

[SHAREOPTIONS(crossregion[crosssystem]| 3 4)]

[STRNO(number|2)]

[WRITECHECK|NOWRITECHECK])

[DATA ([BUFFERSPACE(size)] [BUFND(number)] [FREESPACE(CI-percent[ CA-percent])] [WRITECHECK|NOWRITECHECK])]

[INDEX ([BUFNI(number)] [WRITECHECK|NOWRITECHECK])]

[比較演算子]

以下は、IF-THEN-ELSEコマンドのoperator項目で使用される比較演算子をまとめた表です。

演算子 符号 意味

EQ

=

等しい

LE

<=

小さいか等しい

LT

<

小さい

GT

>

大きい

GE

>=

大きいか等しい

NE

!=

等しくない

11.8. 注意事項と戻りコード

条件コード(Condition Code)は、KQCAMSが各コマンドを実行した結果が正常であるかどうかを表し、またコマンドの実行中にエラーが発生した場合はそれを表すエラー・コードです。使用される条件コードには、10、20、30、40、50があります。値が大きいほど、コマンドの実行中に重大な問題が発生したことを意味します。

以下は、各条件コード値についての説明です。

コード 意味

10

コマンドを正常に処理した場合に返されます。情報メッセージも一部出力されることがあります。

20

コマンドが完全に処理されていないとき、それを無視して追加的にコマンドを実行しても、永久的にエラーが発生しないと判断された状態で、追加的にコマンドを実行できます。このとき、警告性のメッセージが一緒に出力されます。

例えば、LISCATコマンドを実行したときに、ユーザー指定のカタログ・エントリが存在しない場合、条件コードは20に設定され、以下のメッセージが出力されます。

KQCAMS: No specified catalog entry found: NOT.EXIST.SDS

30

コマンドが意図した動作の一部が実行されなくても、結果的にユーザーが希望した状態になった場合、追加的にコマンドを実行できます。

例えば、DELETEコマンドで指定したデータセットが存在しない場合、実際にDELETEコマンドの実行は完了していなくても、結果的に指定のデータセットがないという状態は同じです。このような場合、追加的なコマンドの実行に問題がないため、条件コードは30に設定され、警告メッセージが出力されます。

KQCAMS(WARNING): No such catalog entry - 'NOT.EXIST.SDS'

40

コマンドの実行中にエラーが発生し、必ず実行されなければならない動作や機能が完了できない場合に発生します。このようなエラー(logical error)には、同時に指定できない論理的に不一致するパラメータを指定した場合や、必ず指定しなければならない必須パラメータが省略された場合、またはデータセットのキー長、レコード・サイズなどの指定値が正しくない場合に発生します。

上記のような状況が発生した場合、条件コードは40に設定され、エラー・メッセージが出力されます。

KQCAMS(ERROR): {error description or logical error code}

50

現在のコマンドの実行プロセスで深刻なエラーが発生し、ユーザーが指定した残りのコマンドを実行できない場合に発生します。

次のような場合にこのコードが発生します。

  • KQCAMSの実行ログを使用できない場合

    出力メッセージを保存する出力データセットを使用できない場合、条件コード50が発生します。例えば、SYSPRINT FDを開けない場合、KQCAMSはそれ以上実行をせずに即時終了します。

  • KQCAMSコマンドを誤ってコーディングした場合

    IF-THEN-ELSEを誤ってコーディングしたり、複数の行にまたがってコマンドをコーディングするときにハイフン(-)を適切に使用していなかったりした場合に発生します。

  • システム・データセットが破損した場合

    BCSまたはVVDSの内容にエラーが存在してコマンドを実行できない場合です。SYSPRINT FDを使用できる場合なら、次のようなエラー・メッセージが出力されます。

KQCAMS(ERROR): {error description or logical error code} 또는 KQCAMS(FATAL): {error description}
  • 条件コードの変数名(LASTCCとMAXCC)

    KQCAMSはLASTCCとMAXCC変数に条件コード値を保存します。

    LASTCCには最も最近実行したコマンドの条件コードが保存され、MAXCCには既存の条件コードの中から最も大きい値が保存されます。LASTCCとMAXCCは、SETコマンドを使用してユーザーが直接設定できます。

    以下は、NOT.EXIST.SDSデータセットを削除した後、LASTCCの値が30である場合に強制的にMAXCCに10を設定する例です。

    DELETE NOT.EXIST.SDS
    IF LASTCC = 30 THEN SET MAXCC=10
    DEFINE ...