ここでは、本製品で提供するサンプルプログラム-sample16-について説明します。sample16では、データベース(SQL)機能を使ってデータベースからデータを取り出しホスト変数に格納する例を示します。
データベースはサーバ上に存在し、クライアント側からこれにアクセスします。データベースのアクセスは、ODBCドライバを経由して行います。
ODBCドライバを使用するデータベースアクセスについては、“NetCOBOL ユーザーズガイド”の“リモートデータベースアクセス”を参照してください。
このプログラムを動作させるためには、以下の製品が必要です。
ODBCドライバマネージャ
ODBCドライバ
ODBCドライバの必要とする製品
データベース
データベースにODBCでアクセスするために必要な製品
sample16では、次に示すCOBOLの文を使っています。
DISPLAY文
GO TO文
IF文
PERFORM文
ACCEPT文
sample16では、次に示す埋込みSQL文を使っています。
埋込み例外宣言
CONNECT文
カーソル宣言
OPEN文
FETCH文
CLOSE文
ROLLBACK文
DISCONNECT文
機能
サーバのデータベースにアクセスし、データベース上の表“STOCK”に格納されている全データをディスプレイ装置に表示します。データをすべて参照し終わると、データベースとの接続を切断します。
プログラムを実行する前に
ODBCドライバを経由してサーバのデータベースへアクセスできる環境を構築しておいてください。SERVERNAME1というサーバ名で接続するサーバを設定し、そのサーバのデータベース上に“STOCK“という名前で表を作成しておいてください。STOCK表は、以下の形式で作成してください。
列の名前 | 列の属性 |
---|---|
GNO | 2進整数、4桁 |
GOODS | 固定長文字、20バイト |
QOH | 2進整数、9桁 |
WHNO | 2進整数、4桁 |
STOCK表に格納しておくデータは任意です。以下に例を示します。
GNO | GOODS | QOH | WHNO |
---|---|---|---|
110 111 123 124 137 138 140 141 200 201 212 215 226 227 240 243 351 380 390 | TELEVISION TELEVISION REFRIGERATOR REFRIGERATOR RADIO RADIO CASSETTE DECK CASSETTE DECK AIR CONDITIONER AIR CONDITIONER TELEVISION VIDEO REFRIGERATOR REFRIGERATOR CASSETTE DECK CASSETTE DECK CASSETTE TAPE SHAVER DRIER | 85 90 60 75 150 200 120 80 04 15 0 05 08 15 25 14 2500 870 540 | 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 3 3 |
ODBC情報テンプレート(/opt/FJSVcbl64/config/template/ja_JP.UTF-8/odbcinf)を利用してODBC情報ファイルを作成してください。ここではDBMSACS.INFとします。
実行方法
以下に、sample16の実行例を示します。
$ cobol -M -o sample16 sample16.cob 最大重大度コードは I で,翻訳したプログラム数は 1 本です. $ ODBC_INF= DBMSACS.INF; export ODBC_INF $ ./sample16 $
以下の要求がACCEPT文によって、行われます。
ユーザID/パスワードを入力して下さい(ID/PASSWD):
要求に対し、ユーザIDとパスワードを斜線"/"で区切って入力してください。入力文字が65バイト以下の場合、65バイトになるように空白を入力して下さい。
実行結果
表から取り出されるデータは、以下のように表示されます。
$ sample16 : 16件目のデータ: 製品番号 = +0243 製品名 = CASSETTE DECK 在庫数量 = +000000014 倉庫番号 = +0002 17件目のデータ: 製品番号 = +0351 製品名 = CASSETTE TAPE 在庫数量 = +000002500 倉庫番号 = +0002 18件目のデータ: 製品番号 = +0380 製品名 = SHAVER 在庫数量 = +000000870 倉庫番号 = +0003 19件目のデータ: 製品番号 = +0390 製品名 = DRIER 在庫数量 = +000000540 倉庫番号 = +0003 終了します $