z/OSでCOBOLを使用して作成するINMODルーチンは、次のようにしなければなりません。
- エントリ ポイント名BLKEXITを含める。
- z/OSロード ライブラリ ファイルとして格納する。
z/OSでCOBOLのINMODルーチンを作成し使用する手順
- INMODルーチンのソース ファイルを準備します。
- INMODルーチンをコンパイルします。
- INMODプログラムを指定のロード モジュールとリンク編集し、結果をz/OSロード ライブラリ ファイルとして格納します。
- Teradata FastLoadユーティリティを呼び出してINMODルーチンを実行します。
例
次の例のINMODは、入力データ ソースから80バイトのレコードを5つ読み取り、400バイトのレコード1つをTeradata FastLoadユーティリティに返します。BTEQ1はデータベース上で表を作成し、BTEQ2は表から行を選択して、データが正しくロードされたかを調べます。
//JLHFAST JOB 1,’FASTLOAD/INMOD’,MSGCLASS=A,CLASS=B,NOTIFY=JLH
//****************************************************************
//* Compile and link-edit the INMOD *
//****************************************************************
//COBCOMPL EXEC COBUCL
//****************************************************************
//* The INMOD starts here *
//****************************************************************
//COB.SYSIN DD *
<COBOL source goes here>
//****************************************************************
//* Link-edit the INMOD with the Teradata-supplied module *
//****************************************************************
/*
//LKED.SYSLIB DD DSN=SYS1.COBLIB,DISP=SHR
// DD DSN=TERADATA.APPLOAD,DISP=SHR
//LKED.SYSLMOD DD DSN=JLH.INMOD.LOAD,DISP=SHR
//LKED.SYSIN DD *
ENTRY BLKEXIT
NAME COBINMOD(R)
/*
//****************************************************************
//* Execute BTEQ to create a Teradata DBS table *
//* *
//* The BTEQ statement .run ddname=logon allows the user to *
//* place sensitive logon information in a secure data set (in *
//* this case, the ddname is logon). Logging on from a data *
//* set prevents this sensitive information from appearing in *
//* the SYSIN file. *
//****************************************************************
//BTEQ1 EXEC TDSBTEQ
//LOGON DD DSN=JLH.CNTL(JLHLOGON),DISP=SHR
//SYSIN DD DATA,DLM=##
.run ddname=logon
drop table cobol_example;
drop table example_error1;
drop table example_error2;
create table cobol_example (f1 char(10), f2 varchar(390))
primary index(f1);
.quit
##
//*
//FAST EXEC TDSFAST
//FASTLOAD.STEPLIB DD
// DD DSN=JLH.INMOD.LOAD,DISP=SHR
//FASTLOAD.SYSIN DD DSN=JLH.CNTL(JLHLOGON),DISP=SHR
// DD DATA,DLM=$$
BEGIN LOADING cobol_example,
ERRORFILES cobol_error1,cobol_error2;
DEFINE T1 (CHAR(10)) ,T2 (CHAR(390)) INMOD=COBINMOD;
INSERT cobol_example (:t1,:t2);
END LOADING;
LOGOFF;
$$
//FASTLOAD.INDATA DD DSN=JLH.COBXMPL.DATA,DISP=SHR
//*
//****************************************************************
//* Using BTEQ, select the rows loaded by FastLoad *
//****************************************************************
//*
//BTEQ2 EXEC TDSBTEQ
//LOGON DD DSN=JLH.CNTL(JLHLOGON),DISP=SHR
//SYSIN DD DATA,DLM=##
.run ddname=logon
select * from cobol_example order by 1;
.quit
##