ページの先頭行へ戻る
NetCOBOL V11.1 入門ガイド
FUJITSU Software

6.12 データベース機能を使ったプログラム(応用編)(sample17)

ここでは、本製品で提供するサンプルプログラム-sample17-について説明します。sample17では、データベース(SQL)機能のより進んだ使い方として、データベースの複数の行を1つの埋込みSQL文で操作する例を示します。

データベースはサーバ上に存在し、クライアント側からこれにアクセスします。データベースのアクセスは、ODBCドライバを経由して行います。

ODBCドライバを使用するデータベースアクセスについては、“NetCOBOL ユーザーズガイド”の“リモートデータベースアクセス”を参照してください。

このプログラムを動作させるためには、以下の製品が必要です。

クライアント側
  • ODBCドライバマネージャ

  • ODBCドライバ

  • ODBCドライバの必要とする製品

サーバ側
  • データベース

  • データベースにODBCでアクセスするために必要な製品

sample17では、次に示すCOBOLの文を使っています。

sample17では、次に示す埋込みSQL文を使っています。

機能

sample16と同じデータベースにアクセスし、次の操作を行ってからデータベースとの接続を切断します。

プログラムを実行する前に

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とします。

実行方法

以下に、sample17の実行例を示します。

$ cobol  -M  -osample17 sample17.cob
最大重大度コードは I で,翻訳したプログラム数は 1 本です.
$ ODBC_INF= DBMSACS.INF; export ODBC_INF
$ ./sample17

以下の要求がACCEPT文によって、行われます。

ユーザID/パスワードを入力して下さい(ID/PASSWD):

要求に対し、ユーザIDとパスワードを斜線"/"で区切って入力してください。入力文字が

65バイト以下の場合、65バイトになるように空白を入力して下さい。

実行結果

表から取り出されるデータは、以下のように表示されます。

接続に成功しました

処理前のテーブルの内容

01件目のデータ:
      製品番号  =  +0110
      製品名    =  TELEVISION
      在庫数量  =  +000000085
      倉庫番号  =  +0002

                :

19件目のデータ:
      製品番号  =  +0390
      製品名    =  DRIER
      在庫数量  =  +000000540
      倉庫番号  =  +0003

全データ件数は19件です

製品名がTELEVISIONの行の製品番号を取り出します。
以下の製品の在庫数量を10ずつ減少させます。
  TELEVISION -> +0110
  TELEVISION -> +0110
  TELEVISION -> +0212
製品名が'RADIO'、'SHAVER'、'DRIER'の行を削除します
処理後のテーブルの内容

01件目のデータ:
      製品番号  =  +0110
      製品名    =  TELEVISION
      在庫数量  =  +000000065
      倉庫番号  =  +0002

                :

15件目のデータ:
      製品番号  =  +0351

      製品名    =  CASSETTE TAPE
      在庫数量  =  +000002500
      倉庫番号  =  +0002

全データ件数は15件です


終了します
$