OpenFrame NDBのツール
本章では、OpenFrame NDBシステムが提供するツールの使用方法について説明します。
1. 概要
OpenFrame NDBシステムのツールは、バッチ・ジョブで実行されるNDBユーティリティの機能を同様に提供し、システム管理者のユーザビリティを高めます。
以下は、OpenFrame NDBツールの主要機能です。
-
NDBの作成、削除、変更など、NDBの運用に必要な機能
-
NDBのデータ移行に関する機能
以下は、OpenFrame NDBシステムでサポートするツールの一覧です。
-
データベース運用ツール
ツール 説明 データベース、索引テーブルまたは拡張索引テーブルの作成時に必要なファイルの内容をロードします。
NDB DMLを使用してデータベースのレコードを変更または検索します。
NDBを初めてインストールする際に必要なメタデータ・テーブルを作成、初期化または削除します。
データベースまたは索引を作成、初期化および削除します。
-
データベース移行ツール
ツール 説明 データファイルを保存するための制御文を作成します。
データファイルを変換するための変換スキームを作成します。
NDBのデータを読み込んで指定されたファイルにエクスポートします。
データファイルをNDBにインポートします。
サブスキーマ・コピーブックを作成します。
ndbloader用のデータファイルを作成するためのCOBOLを生成します。
ndbloader用のデータファイルを読み込んでNDBに保存します。
2. データベース運用ツール
本節では、OpenFrame NDBのデータベース運用に使用されるツールの使用方法について説明します。
2.1. ndbadlgen
ndbadlgenは、ndbmgrを実行する前にスキーマ・ファイル(データベース、索引テーブルまたは拡張索引テーブルの作成時に必要なファイルの内容)を事前に登録するツールです。
このプログラムで既存のスキーマを削除して再登録すると、既存のレコード・データは使用できなくなります。 |
使用方法
以下は、ndbadlgenツールを実行する方法です。
ndbadlgen {COMMAND} [options] <schema-name | adl-file-path | adl-type>
-
入力項目
項目 説明 {COMMAND}
-
delete : NDB ADLスキーマ・ファイルを削除します。
-
load : ストアされたNDB ADLの情報をロードして表示します。
-
parse : NDB ADLを解析します。
-
store : NDB ADLを解析して該当のスキーマ・ファイルを登録します。
schema-name
索引が定義されたDBスキーマまたはXIFスキーマの名前を指定します。
adl-file-path
ADLファイルのパスとファイル名全体を指定します。
adl-type
ADLタイプ(DSCH、XIFS、SUBS、ALL)を指定します。
-
-
[options]
オプション 説明 -h
ndbadlgenの使用方法およびオプションとコマンドに関する簡単な情報を表示します。
-a
ADL名を指定して、削除またはロードを実行します。
-s
サブスキーマADLファイルをロードします。
-p
ADLファイルのパスを指定して、解析またはストアを実行します。
-t
DSCH、XIFS、SUBS、ALLのADLタイプを指定して、該当するタイプのADL名を検索します。
使用例
以下は、SCHTEST.adlファイルを解析する例です。
$ ndbadlgen parse -p SCHTEST.adl
[ADL]
|[SCHEMA]
| |[SCHEMA]
| | |[SCHEMA]
| | | |[SCHEMA]
| | | | |[NAME]
| | | | | |[SCHTEST]
| | | | |[TYPE]
| | | | | |[DB]
| | | | | | |[SLS]
| | | |[SCHEMA GROUP]
| | | | |[SG01]
| |[RECORD]
| | |[RECORD]
| | | |[RECORD]
| | | | |[RFB25000]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[01]
| | | | |[ITEM]
| | | | | |[P-KEY-XI]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[03]
| | | | |[ITEM]
| | | | | |[P-KEY-XI1]
| | | |[PICTURE]
| | | | |[X(010)]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[01]
| | | | |[ITEM]
| | | | | |[FILLER]
| | | |[PICTURE]
| | | | |[X(008)]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[01]
| | | | |[ITEM]
| | | | | |[FILLER]
| | | |[PICTURE]
| | | | |[X(29970)]
| | | |[COMPRESSED]
| | | | |[TYPE1]
| |[RANGE]
| | |[RANGE]
| | | |[RANGE]
| | | | |[RRB25000]
| | | |[RECORD]
| | | | |[RFB25000]
| | | |[LOCATION KEY]
| | | | |[P-KEY-XI2]
| | | |[STRETCHED]
| | | | |[4]
| | | |[DIVIDED]
| | | | |[512]
| | | |[RATE]
| | | | |[100]
| | | |[LOGICAL PAGE]
| | | | |[1]
| | | |[ALARM]
| | | | |[CONF]
| | | | | |[POINT]
| | | | | | |[70]
| | | | | |[OPT]
| | | | | | |[PRIME]
| | |[SUBRANGE]
| | | |[SUBRANGE]
| | | | |[SRB2500000]
| | | |[PRIME]
| | | | |[2700]
| | | |[LOCATION]
| | | | |[VALUE]
| | | | | |[ ]
| | | | |[THRU]
| | | | | |[0 ]
| |[DATASET]
| | |[DATASET]
| | | |[DATASET]
| | | | |[NAME]
| | | | | |[FKDAT.SCHTEST.H01]
| | | |[PAGE]
| | | | |[32632]
| | |[VOLUME]
| | | |[VOLUME]
| | | | |[NAME]
| | | | | |[100000]
| | | |[UNIT]
| | | | |[F6425]
| | | |[EXTENT-ID]
| | | | |[1]
| | | |[LOCATE]
| | | | |[RANGE]
| | | | | |[NAME]
| | | | | | |[RRB25000]
| | | | | |[SUBRANGE]
| | | | | | |[NAME]
| | | | | | | |[SRB2500000]
| |[EXTENDED INDEX]
| | |[EXTENDED INDEX]
| | | |[EXTENDED INDEX]
| | | | |[NAME]
| | | | | |[XIB25A1]
| | | | |[DATA]
| | | | | |[P-KEY-XI]
| | | | |[RECORD]
| | | | | |[RFB25000]
| | |[EXTENDED INDEX SUBRANGE]
| | | |[EXTENDED INDEX SUBRANGE]
| | | | |[EXTENDED INDEX]
| | | | | |[XIB25A1]
| | | | |[EXTENDED INDEX SUBRANGE]
| | | | | |[XSB250100]
| | | | | | |[SUBRANGE]
| | | | | | | |[SRB2500000]
| | | | |[EXTENDED INDEX SUBRANGE]
| | | | | |[XSB250101]
| | | | | | |[SUBRANGE]
| | | | | | | |[SRB2500001]
以下は、SCHTEST.adlファイルをNDBメタ・テーブルにストアする例です。
$ ndbadlgen store -p SCHTEST.adl -f
>> [SCHTEST] delete done
>> [DSCH:SCHTEST] store done
以下は、SCHTEST.adlファイルをロードする例です。
$ ndbadlgen load -a SCHTEST
SCHEMA NAME IS SCHTEST FOR DB
;SCHEMA GROUP NAME IS SG01
.
* ;XIF-SCHEMA (1)
* XITEST
RECORD NAME IS RFB25000
01 P_KEY_XI
.
03 P_KEY_XI1
;PIC X(010)
.
03 P_KEY_XI2
;PIC X(002)
.
03 P_KEY_XI3
;PIC X(010)
.
01 FILLER_0
;PIC X(008)
.
01 FILLER_1
;PIC X(29970)
.
.
. [省略]
以下は、SCHTEST.adlファイルを削除する例です。
$ ndbadlgen delete -a SCHTEST
>> [SCHTEST] delete done
2.2. ndbcmd
ndbcmdは、NDB DMLを使用してNDBのレコードを直接変更または検索するツールです。
使用方法
以下は、ndbcmdツールを実行する方法です。
ndbcmd [options]
-
[options]
オプション 説明 -h
ndbcmdのオプションに関する簡単な情報を表示します。
-V
ndbcmdのバージョン情報を表示します。
-b
バッチ・モードで設定され、プロンプトが表示されません。
-q
DMLの実行後、FCOMの情報が表示されません。
使用例
以下は、STORE DMLを使用して、2つのレコードを保存する例です。
$ ndbcmd
NDB% READY TSTSUB02
TSTSUB02 DML:RD DBESCB:0000 PGCSRN: PGCS:0,0 PAGENO:0 RECID:0 RECSEQ:0 OCCID:0
NDB% STORE OWNREC01
1 OWN1_FLD K data group
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 01
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
1 FILLER_0 PIC X(008) : TESTDATA
TSTSUB02 DML:ST DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,3 PAGENO:-1 RECID:7 RECSEQ:3 OCCID:7696581394435
NDB% STORE OWNREC01
1 OWN1_FLD K data group
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 02
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
1 FILLER_0 PIC X(008) : TESTDATA
TSTSUB02 DML:ST DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,4 PAGENO:-1 RECID:7 RECSEQ:4 OCCID:7696581394436
NDB% COMMIT
NDB% FINISH
TSTSUB02 DML:FN DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,4 PAGENO:-1 RECID:7 RECSEQ:4 OCCID:7696581394436
NDB%
以下は、上記例で保存されたレコードをGET ANY DMLを使用して検索する例です。
$ ndbcmd
NDB% READY TSTSUB02
TSTSUB02 DML:RD DBESCB:0000 PGCSRN: PGCS:0,0 PAGENO:0 RECID:0 RECSEQ:0 OCCID:0
NDB% GET ANY OWNREC01
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 01
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
TSTSUB02 DML:GT DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,3 PAGENO:-1 RECID:7 RECSEQ:3 OCCID:7696581394435
NDB% PRINT OWNREC01
1 OWN1_FLD K data group
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 01
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
1 FILLER_0 PIC X(008) : TESTDATA
NDB% FINISH
TSTSUB02 DML:FN DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,3 PAGENO:-1 RECID:7 RECSEQ:3 OCCID:7696581394435
2.3. ndbinit
ndbinitは、OpenFrame NDBを初めてインストールするときに必要なメタデータ・テーブルを作成、初期化および削除するためのツールです。
使用方法
以下は、ndbinitツールを実行する方法です。
ndbinit {COMMAND}[options]
-
入力項目
項目 説明 {COMMAND}
-
create : オプションとして与えられたテーブルを作成します。
-
drop : オプションとして与えられたテーブルを削除します。
-
truncate : オプションとして与えられたテーブルを初期化します。
-
-
[options]
オプション 説明 -h
ndbinitの使用方法およびオプションに関する簡単な情報を表示します。
-t
Tibero環境で指定されたテーブルを作成する表領域を指定します。
使用例
以下は、Tibero環境でDEFVOLという表領域にメタデータ・テーブルを作成および削除する例です。
$ ndbinit create -t DEFVOL
$ ndbinit drop -t DEFVOL
2.4. ndbmgr
ndbmgrは、ADL DBスキーマまたはXIFスキーマを参照し、オプションとコマンドに従ってスキーマに定義されたNDBのデータベースと索引を作成、初期化、削除するツールです。また、対象スキーマのDMLライブラリを作成します。
以下は、ndbmgrの主要機能です。
-
NDBのデータベースを作成、初期化、削除します。
-
NDBの索引を作成、初期化、削除します。
-
NDBの拡張索引を作成、初期化、削除します。
-
NDB DMLライブラリの作成
ndbmgrを実行する前に該当のスキーマ・ファイルが事前に登録されている必要があります。スキーマ・ファイルの登録時に使用されるndbadlgenツールの詳細については、ndbadlgenを参照してください。 |
使用方法
以下は、ndbmgrツールを実行する方法です。
ndbmgr schm {COMMAND} schema-name [options]
-
入力項目
項目 説明 {COMMAND}
-
create : NDBのデータベース、索引、拡張索引を作成および初期化します。
-
truncate : NDBのデータベース、索引、拡張索引を初期化します。
-
drop : NDBのデータベース、索引、拡張索引を削除します。
-
dmlgen : 次のコマンドを実行すると、指定されているパスに対象スキーマのDMLライブラリを作成します。
ofconfig LIST -s ndb -sec NDB_DEFAULT -k LIBRARY_PATH
schema-name | all
処理する対象を定義するDBスキーマまたはXIFスキーマの名前を指定します。allを指定する場合、OpenFrameに保存されているすべてのDBスキーマを対象にdmlの再作成を行います。
-
-
[options]
オプション 説明 -h
ndbmgrの使用方法およびオプションとコマンドに関する簡単な情報を表示します。
-V
"ndbmgr -V"を使用してndbmgrのバージョン情報を確認します。
-t
テーブルを作成する表領域を指定します。
-p page-size
スキーマ内のレコードを検索する際、指定したページ・サイズを基準にしてページング処理します。
-P
DDLを実際に実行せずにスキーマのDDLを画面に表示します。
使用例
以下は、NDBのデータベースを作成する例です。
$ ndbmgr schm create SCHTEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: creating SCHEMA (SCHTEST) objects
ndbmgr: successfully processed the request
以下は、NDBのデータベースを削除する例です。
$ ndbmgr schm drop SCHTEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: dropping SCHEMA (SCHTEST) objects
ndbmgr: successfully processed the request
以下は、NDBの拡張索引を作成する例です。
$ ndbmgr schm create XITEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: creating XIFSCHEMA (XITEST) objects
ndbmgr: successfully processed the request
以下は、NDB DMLライブラリを作成する例です。(DMLライブラリを作成する前に、ndbmgr schm createを使用してNDBのデータベースが作成されている必要があります。)
$ ndbmgr schm dmlgen SCHTEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: generate SCHEMA (SCHTEST) objects
tbESQL Precompiler 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
/home/rona/oframe7/OHOME/ndb/temp/SCHTEST_RFB25000.tbc is precompiled successfully!
ndbmgr: successfully processed the request
3. データベース移行ツール
本節では、OpenFrame NDBのデータベース移行に使用されるツールの使用方法について説明します。
3.1. ndbconvstmt
ndbconvstmtは、JXKUNLODユーティリティまたはndbexportツールで使用された制御文を使用して、JXKRELODまたはndbimportで使用できる制御文を作成するツールです。
使用方法
以下は、ndbconvstmtツールを実行する方法です。
ndbconvstmt [options] input-file output-file
-
[options]
オプション 説明 -h
ndbconvstmtの使用方法およびオプションに関する簡単な情報を表示します。
-V
ndbconvstmtのバージョン情報を表示します。
-r
逆変換を実行します。
JXKRELODまたはndbimportで使用された制御文を使用して、JXKUNLODまたはndbexportで使用できる制御文を作成します。
-
入力項目
項目 説明 input-file
JXKUNLODまたはndbexportで使用された制御文を含むファイル名を指定します。
-rを指定する場合は、JXKRELODまたはndbimportで使用されたファイル名を指定します。
output-file
JXKRELODまたはndbimportで使用する制御文を保存するファイル名を指定します。
-rを指定する場合は、JXKUNLODまたはndbexportで使用するファイル名を指定します。
使用例
以下は、NDBの変換スキームを作成する例です。
$ ndbconvstmt SCHTEST_UNLOAD SCHTEST_RELOAD
ndbconvstmt version 7.1.0(0), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
3.2. ndbgensch
ndbgenschは、指定されたスキーマに基づいてNDBデータベースを読み取り、データファイルを作成するユーティリティです。
使用方法
以下は、ndbgenschツールを実行する方法です。
ndbgensch [options] schema-name
-
[options]
オプション 説明 -h
ndbgenschの使用方法およびオプションに関する簡単な情報を表示します。
-V
ndbgenschのバージョン情報を表示します。
-o conversion-scheme-file -name
作成される変換スキーム・ファイル名を指定します。
-v volume-name
ボリューム名を指定します。
-c record-name= copybook-file-path [[,record-name= copybook-file-path]…]
各レコードの変換規則をコピーブックに定義する場合に設定します。
-
入力項目
項目 説明 schema-name
データベースを定義したスキーマ名を指定します。
使用例
以下は、データベースの変換スキームを作成する例です。
$ ndbgensch SCHTEST
ndbgensch version 7.1.0(0), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Scheme filename = /home/rona/oframe7/OHOME/schema/SCHTEST.conv - created
3.3. ndbexport
ndbexportは、NDBのデータを読み込んで指定されたファイルにエクスポートするためのツールです。NDBをエクスポートする前に、関連するすべてのスキーマを作成しておく必要があります。
使用方法
以下は、ndbexportツールを実行する方法です。
ndbexport [options] sub-schema-name schema-name dump-dataset-name
-
[options]
オプション 説明 -h
ndbexportの使用方法およびオプションに関する簡単な情報を表示します。
-V
ndbexportのバージョン情報を表示します。
-v volume-name
NDBデータが保存されるデータセットのボリューム名を指定します。
-c control-statment-file-name
JXKUNLODで使用される制御文が含まれたファイル名を指定します。
-
入力項目
項目 説明 sub-schema-name
エクスポート対象のデータベースを定義したサブスキーマ名を指定します。
schema-name
エクスポート対象のデータベースを定義したスキーマ名を指定します。
dump-dataset-name
ndbexportで作成するDB2形式のデータセット名を指定します。
使用例
以下は、NDBのデータを指定されたファイルにエクスポートする例です。
$ ndbexport -v DEFVOL -c MEMREC02_UNLOAD SSTEST SCHTEST FKAWA.SCHTEST.UNLD
ndbexport version 7.1.0(2), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
* JXKUNLOD START: 2019-12-18 19:08:18
_nstmts: 6
[2019-12-18T19:08:18] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
*********************** UNLOAD RECORD COUNT INFORMATION ***********************
UNLOAD DATA INFORMATION (RECFM=VB,BLKSIZE=08192,LRECL=05416)
RECORD-NAME RECORD-COUNT RECORD-LENGTH DATA-LENGTH
OWNREC01 0000000001004 00066 00050
MEMREC01 0000000003437 05416 05400
MEMREC02 0000000020930 01016 01000
*******************************************************************************
TOTAL RECORD COUNT = 0000000000025371
*******************************************************************************
[2019-12-18T19:08:19] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
* JXKUNLOD FINISH: 2019-12-18 19:08:19
dsmove version 7.1.0(1) rona@:ofsrc7/base(#5) 2019-09-25 14:03:01
Move or Rename a Dataset
DSMOVE SOURCE=SCHTEST.DB1.TxGCMFO,DEST=FKAWA.SCHTEST.UNLD,CATALOG=,VOLSER=DEFVOL,TARGET VOLSER=DEFVOL,TARGET CATALOG=
OFRUISVRDSMOVE2: Dataset Move OK. from=SCHTEST.DB1.TxGCMFO,to=FKAWA.SCHTEST.UNLD
COMPLETED SUCCESSFULLY.
dsdelete version 7.1.0(0) rona@:ofsrc7/base(#5) 2019-09-25 14:03:01
Delete an Existing Dataset or a Member of PDS Dataset
DSDELETE DSNAME=SCHTEST.CS1.T70mdcC,CATALOG=,VOLSER=DEFVOL,MEMBER=
OFRUISVRDSDEL: Dataset Delete OK. dsn=SCHTEST.CS1.T70mdcC
COMPLETED SUCCESSFULLY.
dsdelete version 7.1.0(0) rona@:ofsrc7/base(#5) 2019-09-25 14:03:01
Delete an Existing Dataset or a Member of PDS Dataset
DSDELETE DSNAME=SCHTEST.CN1.TFWBIGl,CATALOG=,VOLSER=DEFVOL,MEMBER=
OFRUISVRDSDEL: Dataset Delete OK. dsn=SCHTEST.CN1.TFWBIGl
COMPLETED SUCCESSFULLY.
3.4. ndbimport
ndbimportは、データファイルを順に読み込んでNDBにインポートするツールです。ndbimportを実行する前に、関連するすべてのスキーマを作成しておく必要があります。NDBのデータファイルの形式は、AIM/DBのDB2形式に従います。ndbexportツールを使用して、DB2ファイル形式のデータセットを作成することができます。
ndbimportは、DB2形式のNDBデータを読み込んで指定されたサブスキーマに含まれたスキーマにNDBデータを保存します。
使用方法
以下は、ndbimportツールを実行する方法です。
ndbimport [options] sub-schema-name schema-name source-dataset-name
-
[options]
オプション 説明 -h
ndbimportrの使用方法およびオプションに関する簡単な情報を表示します。
-V
ndbimportのバージョン情報を確認します。
-v volume-name
NDBデータが保存されたデータセットおよびixdataとkrdataが保存されるデータセットのボリューム名を指定します。
-c control-statment-file-name
JXKRELODで使用される制御文が含まれたファイル名を指定します。
-d
ndbimportの実行時に作成される一時ファイル(.dat、.log、.ctl)を実行後に削除します。
-e
ndbimportを使用して重複チェックを行います。重複チェックのみを実行するため、データはインポートしません。
-
入力項目
項目 説明 sub-schema-name
ロード対象のデータベースを定義したサブスキーマ名を指定します。
schema-name
ロード対象のデータベースを定義したスキーマ名を指定します。
source-dataset-name
データベースにロードするデータセット名を指定します。DB2形式に従います。
使用例
以下は、ソースファイルを指定してNDBのデータベースにインポートする例です。
$ ndbimport -v DEFVOL -c SCHTEST_RELOAD SSTEST SCHTEST FKAWA.SCHTEST.H00.ASCII
ndbimport version 7.1.0(0), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
* JXKRELOD START: 2019-12-18 19:05:57
[2019-12-18T19:05:57] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
*********************** RELOAD RECORD COUNT INFORMATION ***********************
RELOAD DATA INFORMATION (RECFM=V,BLKSIZE=43328,LRECL=32760)
RECORD-NAME RECORD-COUNT RECORD-LENGTH DATA-LENGTH
OWNREC01 0000000001004 00066 00050
MEMREC01 0000000003437 05416 05400
MEMREC02 0000000020930 01016 01000
*******************************************************************************
TOTAL RECORD COUNT = 0000000000025371
*******************************************************************************
[2019-12-18T19:06:12] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
* JXKRELOD FINISH: 2019-12-18 19:06:12
3.5. subsc
COBOLアプリケーション・ソースは、レコードを定義する際にコピーブックを使用します。また、アプリケーション・ソースを簡単に作成するために頻繁に使用されるロジックをコピーブックとして作成して使用できます。ほとんどのCOBOLアプリケーション・ソースではコピーブックを使用するため、COBOLアプリケーション・ソースのコンパイルにはコピーブックが必要です。
以下は、コピーブックの種類と作成方法です。
-
ユーザー・コピーブック
アプリケーションを簡単に作成するためにユーザーが直接作成するコピーブックです。
openframe_ndb.confのMETA SECTIONのSUBSCPY KEYのVALUEにユーザー・コピーブックのパスを追加し、ofconfigツールを使用してそのパスにコピーブックが配布されるようにします。
$ ofconfig import -f openframe_ndb.conf COMPLETED SUCCESSFULLY.
-
サブスキーマ・コピーブック
アプリケーションがNDBのデータを使用する場合は、NDBのSUBSCHEMAに定義されたレコードを介してデータを使用することになります。SUBSCHEMAはADLで定義し、そのADL SUBSCHEMAにレコード情報が定義されます。また、subscを使用してSUBSCHEMAに定義されたレコードを抽出して指定されたパスにコピーブックを作成します。
使用方法
以下は、subscプログラムを実行する方法です。
subsc sub-schema-name
-
入力項目
項目 説明 sub-schema-name
コピーブックを定義するサブスキーマ名を指定します。
使用例
以下は、subscによってサブスキーマ・コピーブックが指定されたパスに作成されたことを示す例です。
$ subsc TSTSUB01
* subschema copybook
[/home/rona/oframe7/OHOME/cobcpy/subscpy/TSTSUB01.cbl] create.
subschema copybook generation success (TSTSUB01)
$ OHOME/cobcpy/subscpy$ vi TSTSUB01.cbl
01 OWNREC01.
02 OWN1-FLD.
04 OWN1-FLD1 PIC X(10).
04 OWN1-FLD2 PIC X(2).
04 OWN1-FLD3 PIC X(10).
02 FILLER-0 PIC X(8).
01 MEMREC01.
02 MEM-FLD.
04 MEMB-FLD1 PIC X(10).
04 MEMB-FLD2 PIC X(20).
04 MEMB-FLD3 PIC X(10).
3.6. ndbunloader
ndbunloaderはクロスセット(Cross set)など、OpenFrame NDBでndbexportやjxkunlodを使用してデータをアンロードできない場合に使用されるアンロード用のCOBOL生成ツールです。
ndbloaderで使用できるNDBデータファイルを作成するためのCOBOLを生成します。
ndbunloaderを実行すると、NDB_DEFAULT.UNLOAD_COBOL_PATHとして設定したパスの下にスキーマ名でディレクトリを作成し、内部にRECORD、SET COBOLを生成します。
生成されるCOBOLの命名規則は以下のとおりです。
-
RECORD: スキーマ名_RECS.COBOL
-
SET: スキーマ名_SETS.COBOL
使用方法
以下は、ndbunloaderツールを実行する方法です。
ndbunloader schema-name sub-schema-name
-
入力項目
項目 説明 schema-name
アンロード対象のデータベースを定義したスキーマ名を指定します。
sub-schema-name
アンロード対象のデータベースを定義したサブスキーマ名を指定します。
使用例
以下は、ndbunloaderを使用してCOBOLを生成する例です。
$ ndbunloader TSTLOC01 TSTSUB01
=== UNLOAD RECORD COBOL GENERATION SUCCESS===
[/home/jaegu/OF73/OHOME/ndb/unload_cob/TSTLOC01/TSTLOC01_RECS.COBOL] created.
=== UNLOAD SET COBOL GENERATION SUCCESS===
[/home/jaegu/OF73/OHOME/ndb/unload_cob/TSTLOC01/TSTLOC01_SETS.COBOL] created.
NDBUNLOADER: successfully finished the request for the schema TSTLOC01
3.7. ndbloader
ndbloaderはクロスセット(Cross set)など、OpenFrame NDBでndbimportやjxkrelodを使用してデータをロードできない場合に使用されるNDB保存ツールです。ndbloaderを実行する前に、関連するすべてのスキーマを生成する必要があります。
ndbloaderは、ndbunloaderツールを実行して生成されたCOBOLによって作成されたNDBデータファイルを順次読み込み、NDBに保存します。
使用方法
以下は、ndbloaderツールを実行する方法です。
ndbloader command schema-name sub-schema-name source-dataset-name [options]
-
入力項目
項目 説明 command
-
record: NDBレコード・データ・ファイルを使用してレコード・データをロードします。
-
set: NDBセット・データ・ファイルを使用してセット関係を保存します。セットを保存するためには、事前にレコード・データがロードされている必要があります。
-
create: NDBレコード・ファイルとNDBセット・ファイルを関連付けるキーペア・テーブルを生成します。recordコマンドを実行する前に生成されている必要があります。
-
drop: キーペア・テーブルを削除します。
-
truncate: キーペア・テーブルを初期化します。
schema-name
ロード対象のデータベースを定義したスキーマ名を指定します。すべてのコマンドで必須入力項目です。
sub-schema-name
ロード対象のデータベースを定義したサブスキーマ名を指定します。キーペア・テーブル関連のコマンド(create、drop、truncate)では入力不要です。
source-dataset-name
データベースにロードするデータセット名を指定します。ndbunloaderによって生成されたCOBOLを実行して作成されたデータセットである必要があります。キーペア・テーブル関連のコマンド(create、drop、truncate)では入力不要です。
-
-
[options]
オプション 説明 -i
ndbloaderを使用してデータのロード中にエラーが発生した場合、プログラムを終了せずにエラー・メッセージのみを出力して続行します。
-D
ndbloaderをデバッグ・モードで実行します。
-Y
ndbloaderの実行中にロードするレコードとセットに関する情報を表示します。
使用例
以下は、ndbloaderを使用してNDBにデータセットをロードする例です。
ロード順序 1. キーペア・テーブルの作成 $ ndbloader create TSTLOC01 NDBLOADER version 7.3.0(2) jaegu@:ofsrc/ndb(#1) 2024-03-20 19:06:55 NDB data importer - Import NDB data NDBLOADER: creating key pair table for schema TSTLOC01 NDBLOADER: key pair table for schema TSTLOC01 creation complete NDBLOADER: successfully finished the request for the schema TSTLOC01 2. レコード・データのインポート $ ndbloader record TSTLOC01 TSTSUB01 TESTDAT.REC.ASC NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: importing record data of schema TSTLOC01 NDBLOADER: now processing 1000 record data NDBLOADER: now processing 2000 record data NDBLOADER: imported 2743 record data in total NDBLOADER: successfully finished the request for the schema TSTLOC01 3. セット関係のインポート $ ndbloader set TSTLOC01 TSTSUB01 TESTDAT.SET.ASC NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: importing set relation of schema TSTLOC01 NDBLOADER: now processing 1000 set relation NDBLOADER: imported 1631 set relation in total NDBLOADER: successfully finished the request for the schema TSTLOC01 キーペア・テーブルの初期化(TRUNCATE)例 $ ndbloader truncate TSTLOC01 NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: truncating key pair table of schema TSTLOC01 NDBLOADER: key pair table for schema TSTLOC01 truncation complete NDBLOADER: successfully finished the request for the schema TSTLOC01 キーペア・テーブルの削除(DROP)例 $ ndbloader drop TSTLOC01 NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: dropping key pair table of schema TSTLOC01 NDBLOADER: key pair table for schema TSTLOC01 drop complete NDBLOADER: successfully finished the request for the schema TSTLOC01