• 検索結果がありません。

NetCOBOL for .NET 応用編

N/A
N/A
Protected

Academic year: 2021

シェア "NetCOBOL for .NET 応用編"

Copied!
64
0
0

読み込み中.... (全文を見る)

全文

(1)

第5章 データアクセス

5.1 NetCOBOL for .NETのデータアクセス

5.2 ADO.NETクラスライブラリでのデータアクセス

5.3 埋込みSQLでのデータアクセス

5.4 READ/WRITEインタフェース

5.5 データアクセスプログラムの作成

5.6 SQL CLRストアドプロシージャの作成

(2)

5.1 NetCOBOL for .NETのデータアクセス

5.1 NetCOBOL for .NETのデータアクセス

5.1.1 NetCOBOL for .NETでアクセスできるデータ

N e t C O B O L f o r . N E T に は 、 R E A D / W R I T E イ ン タ フ ェ ー ス と 埋 込 み S Q L と い う デ ー タ ア ク セ ス 方 法 が 用 意 さ れ て い ま す 。 さ ら に 、 . N E T F r a m e w o r k の ク ラ ス ラ イ ブ ラ リ で あ る 、 A D O . N E T を 利 用 す る こ と も 可 能 で す 。 し た が っ て 、 大 き く わ け て 3種類 のデ ータ アクセ ス方 法があ り ま す 。

た だ し 、 Windows版 Net COB O Lな ど でサポ ート されて いる プレコ ン パ イ ラ (Oracle Pro*COBOLな ど )は サ ポート され ていま せん ので、 注意 が 必 要 で す 。 埋め込みSQL(ODBC) ADO.NET READ/WRITEインタフェ−ス BtrievePervasive) Oracle Access SQL Server Symfoware PowerRDBconnector PowerRW+ ファイル XML ADO.NETクラスライブラリ 埋込みSQL 図 5 . 1 . 1 デ ー タ ア ク セ ス の 種 類 デ ー タ ベ ー ス に よ っ て は 、 複 数 の ア ク セ ス 方 法 を 選 択 で き る こ と に な る た め 、 シ ス テ ム を 設 計 す る 時 点 で 、 ア ク セ ス 方 法 ご と の 特 徴 や 機 能 を 把 握 し て お く 必 要 が あ り ま す 。

(3)

5.1 NetCOBOL for .NETのデータアクセス

5.1.2 データアクセスの概要

( 1 ) ADO.NETクラスライブラリ

A D O . N E T ク ラ ス ラ イ ブ ラ リ は 、 . N E T F r a m e w o r k で 提 供 さ れ る デ ー タ ア ク セ ス 機 能 を 提 供 し ま す 。 多 く の 種 類 の デ ー タ ベ ー ス や XMLフ ァイ ル に ア ク セ ス で き 、 機 能 も 豊 富 で す 。 NetCO BOL for . NETか ら

A D O . N E T の 各 ク ラ ス を 利 用 し て 、 プ ロ グ ラ ミ ン グ す る こ と が 可 能 で す 。 し か し 、 従 来 の COBOL資 産 との互 換性 はあり ませ ん。

( 2 ) 埋込みSQL

. N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ ( A D O . N E T ) 経 由 、 ま た は Wi n d o w s で 汎 用 的 な デ ー タ ベ ー ス ア ク セ ス ソ フ ト ウ ェ ア で あ る O D B C ド ラ イ バ を 経 由 し た 接 続 方 法 で す 。 Net COB O L for .NET 上 では 、 SQL文 を 利 用 し て 記 述 し ま す 。 ADO. NE Tプ ロ バイダ また は ODBCド ラ イ バが 提 供 さ れ て い る デ ー タ ベ ー ス で あ れ ば 、 原 則 と し て 接 続 す る こ と が で き ま す 。 埋 込 み SQLは 、Windows版 NetC O BOLで も サ ポー トされ てい る 形 式 で あ る た め 、 比 較 的 互 換 性 も あ り ま す 。

( 3 ) READ/WRITEインタフェース

も と も と COBO Lデ ー タ ファ イルに アク セスす るた めの READ/WR ITE イ ン タ フ ェ ー ス (入出力 文 )ですが 、 NetCO BOL for . NETか ら

R E A D / W R I T E イ ン タ フ ェ ー ス を そ の ま ま 利 用 で き る デ ー タ ベ ー ス と し て 、 PowerRW+(富 士 通 )と Btrieveが あ ります 。

ま た 、 PowerRDBconnectorを 利 用 する ことで 、 SQL Serverや Or a cle デ ー タ ベ ー ス に も ア ク セ ス す る こ と が で き ま す 。 従 来 の フ ァ イ ル ア ク セ ス と 同 様 の 記 述 で デ ー タ ベ ー ス ア ク セ ス が 可 能 な た め 、 資 産 の 互 換 性 が 高 い の が 特 徴 で す 。

(4)

5.2 ADO.NETクラスライブラリでのデータアクセス

5.2 ADO.NETクラスライブラリでの

データアクセス

5.2.1 ADO.NETの概要

A D O . N E T は 、 . N E T F r a m e w o r k で 提 供 さ れ る デ ー タ ア ク セ ス 機 能 を 提 供 し ま す 。 ADO. NE Tは 非 常に多 機能 で、様 々な 種類の デー タにア ク セ ス す る こ と が で き ま す 。 ま た 、 接 続 を 受 け 持 つ 部 分 と デ ー タ の 操 作 を 受 け 持 つ 部 分 が 分 離 さ れ て お り 、 デ ー タ の 種 類 に 依 存 し た プ ロ グ ラ ミ ン グ を 行 う 必 要 が ほ と ん ど あ り ま せ ん 。

ま た 、 ADO.NETは 、 Windowsア プ リケー ショ ンやWeb ア プ リケ ーシ ョ ン の コ ン ト ロ ー ル と 簡 単 に 連 携 す る こ と が 可 能 で 、 プ ロ グ ラ ミ ン グ の 量 を 減 ら す こ と が 可 能 で す 。

従 来 の デ ー タ 操 作 は 、 常 に 接 続 (セ ッシ ョン)を ベ ースに 行わ れてき ま し た 。 し か し 、 ク ラ イ ア ン ト と の 接 続 が ペ ー ジ 単 位 で 切 断 さ れ る の が 通 常 の Webシス テム や、Webサ ー ビス (SOAP) と よば れるコ ンポ ーネン ト 間 の 結 合 が 緩 や か な 処 理 方 式 な ど が 広 ま る に つ れ 、 接 続 を 維 持 す る 形 式 の デ ー タ ア ク セ ス 方 式 に 無 理 が 生 じ る よ う に な り ま し た 。 .NET Framework ADO.NET マネージコード .NET Framework データプロバイダ データソース DataAdapter XML文書 DataSet Command DataReader Connection 図 5 . 2 . 1 A D O . N E T の 2 つ の コ ン ポ ー ネ ン ト

(5)

5.2 ADO.NETクラスライブラリでのデータアクセス A D O . N E T は 、 . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ と い う デ ー タ ソ ー ス へ の 処 理 を 受 け 持 つ コ ン ポ ー ネ ン ト と 、 デ ー タ セ ッ ト (Dat aSet ) と い う デ ー タ ソ ー ス と の 接 続 に 依 存 し な い コ ン ポ ー ネ ン ト に 分 離 さ れ て お り 、 We b シ ス テ ム や We b サ ー ビ ス に 最 適 な デ ー タ ア ク セ ス の た め の 方 式 で す 。 „ .NET Frameworkデータプロバイダ . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ は 、 デ ー タ ソ ー ス と の 接 続 と 比 較 的 簡 単 な デ ー タ ア ク セ ス 機 能 お よ び DataS et と の橋 渡しの 役割 があり ま す 。 „ DataSet D a t a S e t は 、 デ ー タ を 格 納 す る い わ ば 箱 と 、 デ ー タ に ア ク セ ス す る た め の 豊 富 な 機 能 が 提 供 さ れ る コ ン ポ ー ネ ン ト で す 。 デ ー タ ベ ー ス と の 接 続 部 分 は 、 .NET Frameworkデ ー タ プロ バイダ の役 割であ り、 Dat aSet は デ ー タ ベ ー ス の 種 類 に 依 存 し ま せ ん 。

な お 、 ADO.NETは 、 デー タベー ス以 外にも 、 XMLフ ァイ ルやテ キス ト フ ァ イ ル な ど 、 さ ま ざ ま な デ ー タ に ア ク セ ス で き る た め 、 ア ク セ ス す る 対 象 の デ ー タ を デ ー タ ソ ー ス と 呼 ん で い ま す 。

5.2.2 NetCOBOL for .NETとADO.NET

N e t C O B O L f o r . N E T か ら A D O . N E T を 利 用 す る 場 合 、 埋 込 み S Q L を 利 用 す る 方 法 と ADO. NE Tク ラ スライ ブラ リを利 用す る方法 があ ります 。 埋 込 み SQLを 利用 する方 法は 、「5.3 埋込 みSQLで の デー タア クセス 」 を 参 照 し て く だ さ い 。 こ こ で は 、 AD O.NET ク ラス ライブ ラリ を利用 す る 方 法 に つ い て 説 明 し ま す 。 A D O . N E T ク ラ ス ラ イ ブ ラ リ を 利 用 す る 場 合 、 手 続 き 型 の C O B O L 文 法 で デ ー タ に ア ク セ ス す る 方 法 と は 異 な る た め 、 従 来 の COBO L資 産 と の デ ー タ ア ク セ ス に 関 す る 互 換 性 が 失 わ れ ま す 。 逆 に 、 Visual Studioの 他の 言語と の互 換性が 高く なりま す。 例えば 、 V B で 利 用 で き な い N e t C O B O L f o r . N E T の デ ー タ を 、 A D O . N E T の デ ー タ (DataS et )と し て作成 しな おし、 VBに 渡す など の処理 が可 能にな りま す 。 ま た 、 READ/WR ITEや 埋 込み SQLに ない 豊富 な ADO. NETの 機 能が 利 用 で き 、 接 続 で き る デ ー タ の 種 類 や 接 続 パ タ ー ン が 増 え る な ど 、 デ ー タ ア ク セ ス の 選 択 肢 が 増 え る の も 大 き な 利 点 で す 。

(6)

5.2 ADO.NETクラスライブラリでのデータアクセス

.NET Framework

VB.NET Webアプリケーション .NetCOBOL for .NET

クラスライブラリ ADO.NET DataSet COBOLファイル など READ/WRITE ADO.NET DataSet クラスのパラメーターとして DataSetを受け渡す 図 5 . 2 . 2 D a t a S e t を 使 用 し た デ ー タ 連 携 イ メ ー ジ 例 え ば 、 図 の 連 携 イ メ ー ジ で は 、 Web ア プ リケ ーシ ョンを VBで 作成 し 、 デ ー タ の COBOL フ ァイ ルはク ラス ライブ ラリ 化した NetC OB OL f o r . N E T で ア ク セ ス し て い ま す 。 We b ア プ リ ケ ー シ ョ ン と ク ラ ス ラ イ ブ ラ リ 間 の デ ー タ の 連 携 に DataS et を 使用 します 。 DataS etは Webア プ リケ ー シ ョ ン の コ ン ト ロ ー ル と も 簡 単 に 連 携 で き る た め 、 Webア プ リケー シ ョ ン 側 で 複 雑 な デ ー タ 処 理 を 行 う 必 要 は あ り ま せ ん 。

5.2.3 .NET Frameworkデータプロバイダの種類

. N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ は 、 プ ロ グ ラ ム と デ ー タ ソ ー ス を 結 ぶ 橋 渡 し を 行 い ま す 。 し た が っ て 、 デ ー タ ソ ー ス と の 接 続 方 法 や デ ー タ ソ ー ス の 種 類 ご と に 、 4種類 の .NET Fra mework デ ー タ プロ バイダ が用 意 さ れ て い ま す 。 ま た 、 Oracl e社 な どの データ ベー スベン ダが 、専用 の .NET Frameworkデ ー タプ ロバイ ダを 提供し てい る場合 もあ ります 。

(7)

5.2 ADO.NETクラスライブラリでのデータアクセス Windows .NET Framework ADO.NET .NET Framework Data Provider SQL Server OLE DB対応 データソース for SQL Server for OLE DB

for ODBC ODBC対応

データソース for Oracle Oracle ODBC ドライバ ネットワーク プログラム ネットワーク プログラム OLE DB プロバイダ ODP.NET Oracle Client 図 5 . 2 . 3 . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ と デ ー タ ソ ー ス

( 1 ) .NET Framework Data Provider for SQL Server

M i c r o s o f t S Q L S e r v e r V 7 . 0 以 降 に 接 続 す る た め の 、 専 用 の デ ー タ プ ロ バ イ ダ で す 。 .NET Framework Data Providerと SQL Serverの 間 は独 自 の プ ロ ト コ ル で 接 続 さ れ る た め 、 高 速 な 処 理 が 期 待 で き ま す 。 S Q L S e r v e r へ の 接 続 は 、 . N E T F r a m e w o r k D a t a P r o v i d e r f o r O L E D B や . N E T F r a m e w o r k D a t a P r o v i d e r f o r O D B C を 利 用 す る こ と も 可 能 で す 。 し か し 、 こ れ ら の 接 続 方 法 は 、 OLE DBや OD B C Drive rと い った デ ー タ ア ク セ ス の た め の 層 (ミドル ウェ ア )が 必要 になる ため 、処理 速度 が 落 ち 、 メ モ リ 使 用 量 が 増 加 し ま す 。

( 2 ) .NET Framework Data Provider for OLE DB

C O M ベ ー ス の デ ー タ ベ ー ス ア ク セ ス 技 術 で あ る O L E D B の 機 能 を 利 用 す る た め の .NET Frameworkデ ー タ プロ バイダ です 。 ADO. NET 以 前 に は 、 ADO( Activ eX D ata Obje ct ) が デ ー タ ア ク セ ス 技 術 の 中 心 で し た が 、 A D O に よ る デ ー タ ア ク セ ス 技 術 で 中 核 と な っ て い る の が O L E D B で す 。 O L E D B は 、 O L E D B プ ロ バ イ ダ と よ ば れ る 、 デ ー タ ベ ー ス ご と の ミ ド ル ウ ェ ア を 介 し て デ ー タ ベ ー ス に 接 続 し ま す 。 し た が っ て 、 OLE DBプ ロ バ イ ダ が 提 供 さ れ て い る デ ー タ ソ ー ス で あ れ ば 、 .NET Framewo rk

(8)

5.2 ADO.NETクラスライブラリでのデータアクセス

D a t a P r o v i d e r f o r O L E D B を 使 用 す る こ と で 接 続 す る こ と が で き ま す 。 ま た 、 SQL Server 6.5 以 前の 場合、 .NET Framework Data Provider for S Q L S e r v e r が 未 サ ポ ー ト の た め 、 O L E D B に よ る 接 続 が 必 要 と な り ま す 。

( 3 ) .NET Framework Data Provider for ODBC

Wi n d o w s に お い て 、 最 も 汎 用 的 に 利 用 さ れ て い る デ ー タ ア ク セ ス 技 術 が ODBCで す 。ほ とんど のデ ータベ ース やデー タソ ースで ODBCド ラ イ バ が 提 供 さ れ て い ま す 。 し た が っ て 、 .NET Framework Data Provider f o r O D B C を 利 用 す る こ と で 、 ほ と ん ど の デ ー タ ソ ー ス に 接 続 す る こ と が で き ま す 。 た だ し 、 ODB Cは 古 い 技術 のため 、機 能やパ フォ ーマン ス で 期 待 通 り の 成 果 を 得 ら れ な い ケ ー ス も あ る の で 、 注 意 が 必 要 で す 。

( 4 ) .NET Framework Data Provider for Oracle

Wi n d o w s を 問 わ ず 、 S o l a r i s 、 L i n u x な ど で 広 く 利 用 さ れ て い る デ ー タ ベ ー ス で あ る Oracl eに 接 続す るため の専 用のデ ータ ソース です 。接続 の た め に は 、 Oracle Client(Oracl e Net)が 必 要 とな ります 。 Oracle Client R 8 . 1 . 7 以 降 が サ ポ ー ト さ れ て い ま す 。 し た が っ て 、 O r a c l e C l i e n t の バ ー ジ ョ ン が 古 い 場 合 は 、 ODBC な ど に よ る 接 続 を 検 討 す る 必 要 が あ り ま す 。

( 5 ) Oracle Data Provider for .NET

O r a c l e 社 が 提 供 す る . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ で す 。 O r a c l e 社 で は 、 ADO. NETで Ora cleに ア ク セス する場 合、 Oracle Data Provider f o r . N E T で の 接 続 を 推 奨 し て い ま す 。 な お 、 埋 込 み S Q L を 利 用 す る 場 合 は 、 こ の 接 続 方 法 は 選 択 で き ま せ ん 。

5.2.4 .NET Framework データプロバイダのクラス

. N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ の ク ラ ス は 、 使 用 す る . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ で 実 装 さ れ て お り 、 そ れ ぞ れ 接 頭 辞 が 異 な り ま す 。 し か し 、 ク ラ ス の 体 系 と 機 能 は ほ ぼ 同 じ で す の で 、 接 頭 辞 を 変 更 す る だ け で 互 換 が あ り ま す 。 た だ し 、 .NET Framewo rkデ ータ プロ バ イ ダ の 種 類 に よ り 、 サ ポ ー ト さ れ る メ ソ ッ ド や プ ロ パ テ ィ が 異 な る 場 合 も あ る の で 、 完 全 に は 互 換 し て い ま せ ん (実装 によ り異な りま す )。 . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ に は 、 C o n n e c t i o n 、 C o m m a n d 、 D a t a R e a d e r 、 D a t a A d a p t e r の 4 つ の 代 表 的 な ク ラ ス が あ り ま す 。 そ れ ぞ れ の ク ラ ス の 概 要 に つ い て 、 次 に 説 明 し ま す 。

(9)

5.2 ADO.NETクラスライブラリでのデータアクセス

( 1 ) Connectionクラス

デ ー タ ソ ー ス へ 接 続 す る た め の 機 能 を 提 供 す る ク ラ ス で す 。 デ ー タ ベ ー ス へ の 接 続 は 、 Connectionオ ブ ジェ クトと して 生成さ れま す。 C o n n e c t i o n オ ブ ジ ェ ク ト イ ン ス タ ン ス を 生 成 す る 際 に 、 デ ー タ ソ ー ス へ 接 続 す る た め の 文 字 列 (接 続 文字列 )を 指定し ます 。 Openメ ソ ッド で接 続 を 開 き 、 Closeメ ソ ッド や Disposeメ ソ ッ ドで 接続 を解放 しま す。

( 2 ) Commandクラス

デ ー タ ソ ー ス に 対 し て 、 SQLス テー トメ ント(Transact- SQLス テ ート メ ン ト )やス トア ドプロ シー ジャを 呼び 出すた めの クラス です 。行を 返 す SQL(SE LECT)を 発 行 する ExecuteR ead er メ ソッ ド、行 を返 さない S Q L ( I N S E RT 、 D E L E T E 、 U P D AT E な ど ) を 発 行 す る E x e c u t e N o n Q u e r y メ ソ ッ ド な ど が あ り ま す 。 E x e c u t e R e a d e r メ ソ ッ ド は 、 結 果 を D a t a R e a d e r オ ブ ジ ェ ク ト と し て 生 成 し ま す 。

( 3 ) DataReaderクラス

デ ー タ ソ ー ス か ら 前 方 向 に デ ー タ を 読 み 込 む た め の 機 能 を 提 供 し ま す 。 D a t a R e a d e r オ ブ ジ ェ ク ト を 作 成 す る に は 、 C o m m a n d ク ラ ス の E x e c u t e R e a d e r メ ソ ッ ド を 使 用 し ま す 。 レ コ ー ド を 次 の 行 に 位 置 づ け る Readメ ソ ッド 、カ レント 行の 指定し た 列 の デ ー タ を 取 得 す る メ ソ ッ ド は 、 Getの 後 に デー タの型 名が 付いた メ ソ ッ ド が 用 意 さ れ て い ま す (GetString、 GetInt32など )。 また 、実装 ごと に デ ー タ ソ ー ス の デ ー タ 型 に 応 じ た メ ソ ッ ド が 用 意 さ れ て い る ケ ー ス も あ り ま す (GetSQLInt32、 GetOr acl eNu mb e rな ど )。

( 4 ) DataAdapterクラス

D a t a S e t へ デ ー タ ソ ー ス の デ ー タ を 格 納 し た り 、 D a t a S e t の デ ー タ を デ ー タ ソ ー ス に 反 映 さ せ た り す る た め の 機 能 を 提 供 す る ク ラ ス で す 。

デ ー タ ソ ー ス の デ ー タ を DataS et に 反映 させる Fillメ ソッ ド、 Dat aSet の デ ー タ を デ ー タ ソ ー ス に 反 映 さ せ る Updateメ ソ ッドな どが 用意さ れて い ま す 。

(10)

5.2 ADO.NETクラスライブラリでのデータアクセス

5.2.5 .NET Frameworkデータプロバイダの使用例

次 の サ ン プ ル は 、 .NET Framewo rk Dat a Pr ovider for SQL S erverを 使 用 し 、 SQL Se rver の テー ブル(STOCK) の コピ ーをDat aSetに 作 成し て い ま す 。 他 の 種 類 の .NET Frameworkデ ー タ プロ バイダ を使 用する 場合 も 、 基 本 的 な 手 順 は 同 じ で す 。

.NET Framework Data provider for SQL Server Connection SQL Server テーブル DataSet 1.Connectionオブジェクトの生成 2.接続のオープン 4.DataSetオブジェクトの生成 5.データソースの内容をDataSetに反映

.NET Framework Data provider for SQL Server Connection

SQL Server

テーブル

.NET Framework Data provider for SQL Server

Connection DataAdapter

3.DataAdapterオブジェクトの生成

SQL Server

テーブル

6.接続の終了

.NET Framework Data provider for SQL Server

Connection DataAdapter

SQL Server

テーブル

.NET Framework Data provider for SQL Server

Connection DataAdapter

SQL Server

テーブル

DataSet

DataTable

.NET Framework Data provider for SQL Server

Connection DataAdapter SQL Server テーブル DataSet DataTable 図 5 . 2 . 4 サ ン プ ル の 動 作 イ メ ー ジ 1 . C o n n e c t i o n オ ブ ジ ェ ク ト の 生 成 C o n n e c t i o n ク ラ ス の N e w メ ソ ッ ド を 使 用 し て 、 C o n n e c t i o n オ ブ ジ ェ ク ト を 作 成 し ま す 。 接 続 文 字 列 を 指 定 す る こ と も で き ま す が 、 接 続 は オ ー プ ン さ れ ま せ ん 。 Connectionオ ブジ ェクト 生成 後、 C o n n e c t i o n St r i n g プ ロ パ テ ィ に 接 続 文 字 列 を 設 定 す る こ と も 可 能 で す 。 2 . 接 続 の オ ー プ ン C o n n e c t i o n オ ブ ジ ェ ク ト の O p e n メ ソ ッ ド を 使 用 し て 、 接 続 を オ ー プ ン し ま す 。 Open を 省 略 した 場合、 Data Ada pterの Fillメ ソッ ドの使 用 時 に 自 動 的 に 接 続 が オ ー プ ン さ れ ま す 。

(11)

5.2 ADO.NETクラスライブラリでのデータアクセス 3 . D a t a A d a p t e r オ ブ ジ ェ ク ト の 生 成 D a t a A d a p t e r ク ラ ス の N e w メ ソ ッ ド を 使 用 し て 、 D a t a A d a p t e r オ ブ ジ ェ ク ト を 生 成 し ま す 。 こ の 時 点 で 、 パ ラ メ ー タ ー と し て SQL 文 や C o n n e c t i o n オ ブ ジ ェ ク ト を 指 定 す る こ と が で き ま す 。 ま た は 、 D a t a A d a p t e r オ ブ ジ ェ ク ト 生 成 後 に 、 C o m m a n d ク ラ ス を 使 用 し て 、 S e l e c t C o m m a n d プ ロ パ テ ィ な ど で 値 を 設 定 す る こ と も 可 能 で す 。 4 . D a t a S e t オ ブ ジ ェ ク ト の 生 成 D a t a S e t ク ラ ス の N e w メ ソ ッ ド を 使 用 し て 、 D a t a S e t オ ブ ジ ェ ク ト を 生 成 し ま す 。 Dat aSetオ ブ ジェ クトを 生成 しただ けで は、デ ータ は格納 さ れ ま せ ん 。 5 . デ ー タ ソ ー ス の 内 容 を デ ー タ セ ッ ト に 反 映 D a t a A d a p t e r の F i l l メ ソ ッ ド を 使 用 し て 、 デ ー タ ソ ー ス で あ る S Q L S e r v e r の デ ー タ を D a t a S e t に 反 映 し ま す 。 接 続 が 開 か れ て い な い 場 合 は 、 自 動 的 に 接 続 を 開 き 、 処 理 を 行 っ た あ と に 自 動 的 に 接 続 を 終 了 し ま す 。 6 . 接 続 の 終 了 O p e n メ ソ ッ ド で 接 続 を 開 い て い る 場 合 、 C o n n e c t i o n オ ブ ジ ェ ク ト の C l o s e メ ソ ッ ド を 使 用 し て 、 接 続 を 終 了 し ま す 。 „ サンプルリスト * リ ポ ジ ト リ 段 落 R E P O S I T O R Y . ・ ・ ・ ・ C L A S S C L A S S - D A T A S E T A S " S y s t e m . D a t a . D a t a S e t " C L A S S C L A S S - D A T A T A B L E A S " S y s t e m . D a t a . D a t a T a b l e " C L A S S C L A S S - D A T A T A B L E S A S " S y s t e m . D a t a . D a t a T a b l e C o l l e c t i o n " ・ ・ ・ ・ ・ C L A S S C L A S S - C O N N E C T I O N A S " S y s t e m . D a t a . S q l C l i e n t . S q l C o n n e c t i o n " C L A S S C L A S S - D B A D A P T E R A S " S y s t e m . D a t a . S q l C l i e n t . S q l D a t a A d a p t e r "

(12)

5.2 ADO.NETクラスライブラリでのデータアクセス 0 1 t m p R o w s O B J E C T R E F E R E N C E C L A S S - D A T A R O W S . 0 1 t m p R o w O B J E C T R E F E R E N C E C L A S S - D A T A R O W . 0 1 c o n S t r O B J E C T R E F E R E N C E C L A S S - S T R I N G . 0 1 s q l S t r O B J E C T R E F E R E N C E C L A S S - S T R I N G . 0 1 t m p S t r O B J E C T R E F E R E N C E C L A S S - S T R I N G . * メ ソ ッ ド の 手 続 き 部 P R O C E D U R E D I V I S I O N U S I N G B Y V A L U E s e n d e r e . * 接 続 文 字 列 の 編 集 S E T c o n S t r T O " P e r s i s t S e c u r i t y I n f o = F a l s e ; I n t e g r a t e d S e c u r i t y = S S P I ; d a t a b a s e = s q l t m p ; s e r v e r = n e t s v " . * C o n n e c t i o n オ ブ ジ ェ ク ト の 作 成 ( 接 続 文 字 列 を 指 定 ) I N V O K E C L A S S - C O N N E C T I O N " N E W " U S I N G B Y V A L U E c o n S t r R E T U R N I N G C o n . * 接 続 を 開 く I N V O K E C o n " O p e n " . * S Q L の 編 集 S E T s q l S t r T O " S E L E C T * F R O M S T O C K " . * D a t a A d a p t e r オ ブ ジ ェ ク ト の 生 成 ( S Q L 文 と C o n n e c t i o n オ ブ ジ ェ ク ト * を 指 定 ) I N V O K E C L A S S - D B A D A P T E R " N E W " U S I N G B Y V A L U E s q l S t r C o n R E T U R N I N G A d p . * D a t a S e t オ ブ ジ ェ ク ト の 作 成 I N V O K E C L A S S - D A T A S E T " N E W " R E T U R N I N G t m p D S . * F i l l メ ソ ッ ド に よ り デ ー タ ソ ー ス の 内 容 を D a t a S e t に 反 映 I N V O K E A d p " F i l l " U S I N G t m p D S . * デ ー タ ソ ー ス と の 接 続 を 終 了 I N V O K E C o n " C l o s e " . * メ ソ ッ ド の デ ー タ 部 W O R K I N G - S T O R A G E S E C T I O N . 0 1 C o n O B J E C T R E F E R E N C E C L A S S - C O N N E C T I O N . 0 1 A d p O B J E C T R E F E R E N C E C L A S S - D B A D A P T E R . 0 1 t m p D S O B J E C T R E F E R E N C E C L A S S - D A T A S E T . 0 1 t m p T a b l e s O B J E C T R E F E R E N C E C L A S S - D A T A T A B L E S . 0 1 t m p T a b l e O B J E C T R E F E R E N C E C L A S S - D A T A T A B L E .

5.2.6 DataSet

D a t a S e t は 、 A D O . N E T で 非 接 続 型 の デ ー タ ア ク セ ス 機 能 を 提 供 す る 、 い わ ば 、 メ モ リ 上 の ミ ニ チ ュ ア デ ー タ ベ ー ス で す 。 .NET Framewo rkデ ー タ プ ロ バ イ ダ は 、 デ ー タ ソ ー ス の 種 類 に よ り 実 装 が 異 な り ま す が 、 D a t a S e t は デ ー タ ソ ー ス の 種 類 に 依 存 し な い 一 貫 し た プ ロ グ ラ ミ ン グ モ デ ル (プログ ラミ ングイ ンタ フェー ス )を提供 しま す。し たが って、 D a t a S e t に 対 す る 処 理 は 、 ど の よ う な デ ー タ ベ ー ス で も 同 じ 記 述 と な り ま す ( 図 5.2.5) 。

(13)

5.2 ADO.NETクラスライブラリでのデータアクセス

SQL Server

OLE DB対応

データソース

.NET Framework Data provider for SQL Server

.NET Framework Data provider for OLE DB

.NET Framework Data provider

for ODBC データソースODBC対応

.NET Framework Data provider for Oracle

Oracle Oracle Data Provider for .NET

SqlDataAdapter OleDbDataAdapter OdbcDataAdapter OracleDataAdapter OracleDataAdapter DataSet Ne tC OBO L f o r .N E T アプ リ ケ ー シ ョ ン データソース依存 データソース無依存 図 5 . 2 . 5 D a t a S e t と . N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ の イ メ ー ジ D a t a S e t は 、 階 層 化 さ れ た ク ラ ス か ら 構 成 さ れ て お り 、 デ ー タ ベ ー ス や Microsoft Excelに よ く似 ていま す。 Dat aSetを 利 用 す るプ ログラ ムを 作 成 す る 場 合 、 こ の 階 層 化 さ れ た イ メ ー ジ を 理 解 し て お く 必 要 が あ り ま す ( 図 5.2.6) 。ま た、 オブ ジェク トは 常にコ レク ション で管 理され ます の で 、 コ レ ク シ ョ ン の 概 念 (「3.1.3 ク ラスの 階層 とコレ クシ ョン」 参 照 )を つかん でお くこと が必 要とな りま す。

(14)

5.2 ADO.NETクラスライブラリでのデータアクセス DataSet DataTableCollection DataTable DataRow DataColumn DataRow DataRow DataRow

DataColumn DataColumn DataColumn DataColumn

DataColumnCollection D a ta R o wColle ct ion 図 5 . 2 . 6 D a t a S e t の ク ラ ス 構 成 の イ メ ー ジ

5.2.7 DataSetのクラス

( 1 ) DataSetクラス

D a t a S e t の 最 上 位 の ク ラ ス で あ り 、 D a t a S e t そ の も の で す 。

( 2 ) DataTableCollectionクラス

D a t a S e t 内 の テ ー ブ ル の コ レ ク シ ョ ン を 表 す ク ラ ス で す 。 つ ま り 、 D a t a Ta b l e C o l l e c t i o n に は 、 D a t a S e t 内 の 全 て の D a t a Ta b l e オ ブ ジ ェ ク ト が 格 納 さ れ て い ま す 。 Dat aSet. Ta blesプ ロ パテ ィで DataTableCollection オ ブ ジ ェ ク ト へ の 参 照 が 返 さ れ ま す 。

( 3 ) DataTableクラス

D a t a Ta b l e は 、 メ モ リ 上 の テ ー ブ ル を 表 し ま す 。 D a t a Ta b l e オ ブ ジ ェ ク ト は 、 .NET Framewo rkデ ータ プロ バイ ダのDat aAdapt erク ラ ス を使 用 し て 作 成 す る こ と も で き ま す が 、 独 自 に 作 成 す る こ と も で き ま す 。

D a t a Ta b l e オ ブ ジ ェ ク ト の 中 で 、 D a t a C o l u m n オ ブ ジ ェ ク ト と D a t a R o w オ ブ ジ ェ ク ト が 最 も 重 要 な コ ン ポ ー ネ ン ト で す 。

(15)

5.2 ADO.NETクラスライブラリでのデータアクセス

( 4 ) DataColumnCollectionクラス、DataColumnクラス

D a t a C o l u m n は 、 D a t a Ta b l e の 列 を 表 し ま す 。 D a t a Ta b l e に デ ー タ を 格 納 す る た め の 箱 の よ う な も の を ス キ ー マ と よ び ま す が 、 ス キ ー マ を 作 成 す る に は DataColu mn Collect ion に DataColu mnオ ブ ジェ クト を追加 する 必 要 が あ り ま す 。 ま た 、 DataColu mnCollectionオ ブジェ クト の参照 は、 D a t a Ta b l e . C o l u m n s プ ロ パ テ ィ で 返 さ れ ま す 。

( 5 ) DataRowCollectionクラス、DataRowクラス

D a t a R o w は D a t a Ta b l e 内 の 行 を 表 し ま す 。 D a t a Ta b l e の デ ー タ の 操 作 は 、 D a t a R o w オ ブ ジ ェ ク ト を 利 用 し て 行 わ れ ま す 。

5.2.8 DataSetの使用例

「 5.2.5 .NET Frameworkデ ータ プロ バイダ の使 用例」 に引 き続く D a t a S e t の 使 用 例 で す 。 DataSet(tmpDS) DataTableCollection(tmpTables) DataTable(tmpTable = tmpTables(0)) DataRow (tmpRow = tmpRows(0)) PNO列 DataRow (tmpRow = tmpRows(1)) DataRow (tmpRow = tmpRows(2)) DataRow (tmpRow = tmpRows(3)) PNAME列 D a ta R o wColle ct ion (t m pRows ) Countプロパティ:DataTableの数 Countプロパティ:DataRowの数 図 5 . 2 . 7 D a t a S e t か ら デ ー タ を ア ク セ ス す る イ メ ー ジ こ の 例 で は 、 作 成 済 み の DataS et か ら、 DataTableCollection、 D a t a Ta b l e 、 D a t a R o w C o l l e c t i o n 、 D a t a R o w の 各 オ ブ ジ ェ ク ト を 使 用 し

(16)

5.2 ADO.NETクラスライブラリでのデータアクセス „ サンプルリスト 0 1 t m p T a b l e O B J E C T R E F E R E N C E C L A S S - D A T A T A B L E . 0 1 t m p R o w s O B J E C T R E F E R E N C E C L A S S - D A T A R O W S . 0 1 t m p R o w O B J E C T R E F E R E N C E C L A S S - D A T A R O W . 0 1 t m p S t r O B J E C T R E F E R E N C E C L A S S - S T R I N G . 0 1 t m p O b j O B J E C T R E F E R E N C E C L A S S - O B J E C T . ・ ・ ・ * メ ソ ッ ド の 手 続 き 部 ( 差 分 の み ) * デ ー タ セ ッ ト の T a b l e s プ ロ パ テ ィ か ら * D a t a T a b l e s C o l l e c t i o n オ ブ ジ ェ ク ト を 生 成 S E T t m p T a b l e s T O P R O P - T A B L E S O F t m p D S . * D a t a T a b l e C o l l e c t i o n オ ブ ジ ェ ク ト の C o u n t プ ロ パ テ ィ を 取 得 M O V E P R O P - C O U N T O F t m p T a b l e s T O i t e m C o u n t . * C o u n t プ ロ パ テ ィ が 0 で あ れ ば I F i t e m C o u n t = 0 T H E N S E T t m p S t r T O " デ ー タ が あ り ま せ ん " I N V O K E C L A S S - M E S S A G E B O X " S h o w " U S I N G B Y V A L U E t m p S t r E X I T M E T H O D E N D - I F . * D a t a T a b l e C o l l e c t i o n オ ブ ジ ェ ク ト の 最 初 ( 0 番 目 ) の * D a t a T a b l e オ ブ ジ ェ ク ト を 取 得 S E T t m p T a b l e T O t m p T a b l e s : : " g e t _ I t e m " ( 0 ) * D a t a T a b l e オ ブ ジ ェ ク ト の R o w s プ ロ パ テ ィ か ら * D a t a R o w C o l l e c t i o n オ ブ ジ ェ ク ト を 取 得 S E T t m p R o w s T O P R O P - R O W S O F t m p T a b l e . * D a t a R o w C o l l e c t i o n オ ブ ジ ェ ク ト の C o u n t プ ロ パ テ ィ を 取 得 M O V E P R O P - C O U N T O F t m p R o w s T O i t e m C o u n t . * リ ポ ジ ト リ 段 落 ( 差 分 の み ) R E P O S I T O R Y . ・ ・ ・ ・ C L A S S C L A S S - D A T A R O W A S " S y s t e m . D a t a . D a t a R o w " C L A S S C L A S S - D A T A R O W S A S " S y s t e m . D a t a . D a t a R o w C o l l e c t i o n " C L A S S C L A S S - D A T A S E T A S " S y s t e m . D a t a . D a t a S e t " C L A S S C L A S S - D A T A T A B L E A S " S y s t e m . D a t a . D a t a T a b l e " C L A S S C L A S S - D A T A T A B L E S A S " S y s t e m . D a t a . D a t a T a b l e C o l l e c t i o n " ・ ・ ・ ・ ・ P R O P E R T Y P R O P - C O L U M N S A S " C o l u m n s " P R O P E R T Y P R O P - C O U N T A S " C o u n t " P R O P E R T Y P R O P - R O W S A S " R o w s " P R O P E R T Y P R O P - T A B L E S A S " T a b l e s " * メ ソ ッ ド の デ ー タ 部 ( 差 分 の み ) W O R K I N G - S T O R A G E S E C T I O N . ・ ・ ・ ・ 0 1 t m p T a b l e s O B J E C T R E F E R E N C E C L A S S - D A T A T A B L E S .

(17)

5.2 ADO.NETクラスライブラリでのデータアクセス * 行 数 分 ( C o u n t プ ロ パ テ ィ n 値 ) ル ー プ P E R F O R M V A R Y I N G I F R O M 0 B Y 1 U N T I L I > = i t e m C o u n t * I 行 目 の 行 デ ー タ ( D a t a R o w オ ブ ジ ェ ク ト ) を 取 得 S E T t m p R o w T O t m p R o w s : : " g e t _ I t e m " ( I ) * D a t a R o w オ ブ ジ ェ ク ト か ら 列 名 か ら 、 " P N O " の デ ー タ ( オ ブ ジ ェ ク ト ) を 取 得 S E T t m p O b j T O t m p R o w : : " g e t _ I t e m " ( " P N O " ) * D a t a R o w オ ブ ジ ェ ク ト か ら 列 名 か ら 、 " P N A M E " の デ ー タ ( オ ブ ジ ェ ク ト ) を 取 得 S E T t m p O b j T O t m p R o w : : " g e t _ I t e m " ( " P N A M E " ) ・ ・ ・ ・

(18)

5.3 埋込みSQLでのデータアクセス

5.3 埋込みSQLでのデータアクセス

5.3.1 埋込みSQLのイメージ

.NET Framework SQL Server COBOLソースプログラム (埋込みSQL) NetCOBOL for .NET

でビルド ADO.NET .NET Frameworkデータプロバイダ アプリケーション構成ファイル Oracle OLE DB対応 データソース ODBC対応 データソース

NetCOBOL for .NETプログラム

ODBCドライバ OLEDBプロバイダ ① ② 図 5 . 3 . 1 埋 込 み S Q L の イ メ ー ジ 図 埋 込 み SQLで のデ ータベ ース 接続で は、 .NET Framewo rkデ ータ プロ バ イ ダ を 利 用 し て 接 続 す る 方 法 ( 図 5.3.1 ①) と、 ODBCド ラ イバ を利 用 し て 接 続 す る 方 法 ( 図 5.3.1 ②) があ ります 。 .NET Frameworkで は 、 .NET Frameworkデ ータ プロバ イダ を利用 して 接続す る方 法が一 般 的 で す 。 こ こ で は 、 .NET Frameworkデ ー タ プロ バイダ を利 用して 接続 す る 方 法 に つ い て 説 明 し ま す 。 デ ー タ ベ ー ス に 接 続 す る た め の 定 義 に つ い て は 、 ア プ リ ケ ー シ ョ ン 構 成 フ ァ イ ル に 記 述 し ま す 。 プ ロ グ ラ ム は 、 実 行 時 に ア プ リ ケ ー シ ョ ン 構 成 フ ァ イ ル を 優 先 し ま す 。 し た が っ て 、 デ ー タ ベ ー ス の 接 続 先 に 依 存 し な い COBOLソ ー スプロ グラ ムを作 成す ること が可 能です 。 デ ー タ ベ ー ス の 処 理 手 続 き は 、 COBO Lソ ー ス プロ グラム の中 に SQL 先 頭 子 (EXEC SQL) と SQL終 了子 (END-E XEC)で 囲 ん で記 述しま す。

(19)

5.3 埋込みSQLでのデータアクセス

5.3.2 埋込みSQLプログラム作成手順

(2)設定ファイルの作成 (3)プログラムの作成 (4)プログラムのビルド (5)プログラムの実行とデバッグ (1)データベース接続環境の作成 図 5 . 3 . 2 プ ロ グ ラ ム 作 成 手 順

( 1 ) データベース接続環境の作成

埋 込 み SQLの プロ グラム は、 実行時 に初 めて.NET Frameworkデ ー タ プ ロ バ イ ダ を 利 用 し て 、 デ ー タ ベ ー ス に 接 続 し ま す 。 し た が っ て 、 デ ー タ ベ ー ス 接 続 環 境 の 作 成 や 設 定 な ど は 、 い つ 行 っ て も か ま い ま せ ん 。 し か し 、 環 境 設 定 で 作 成 し た 接 続 名 を プ ロ グ ラ ム 内 で 使 用 す る ケ ー ス も あ る た め 、 で き れ ば デ ー タ ベ ー ス 接 続 の 環 境 設 定 か ら 順 に 行 っ た ほ う が 確 実 で す 。

( 2 ) 設定ファイルの作成

ア プ リ ケ ー シ ョ ン 構 成 フ ァ イ ル に 、 プ ロ グ ラ ム が 利 用 す る デ ー タ ソ ー ス や ユ ー ザ な ど の 情 報 を 登 録 し ま す 。

(20)

5.3 埋込みSQLでのデータアクセス

( 3 ) プログラムの作成

C O B O L ソ ー ス プ ロ グ ラ ム の S Q L 先 頭 子 と S Q L 終 了 子 の 間 に 、 埋 込 み S Q L に よ る デ ー タ ベ ー ス 処 理 手 続 き を 記 述 し ま す 。 大 き く 分 け て 次 の 処 理 が 可 能 で す 。 „ コネクションの管理 (接続、変更、切断) コ ネ ク シ ョ ン と は 、 デ ー タ ベ ー ス に ア ク セ ス す る た め に 、 ク ラ イ ア ン ト と サ ー バ の 間 を 結 ん だ 接 続 関 係 の こ と で す 。 こ の 接 続 関 係 を 結 ぶ こ と に よ り 、 ク ラ イ ア ン ト か ら サ ー バ の デ ー タ ベ ー ス を ア ク セ ス す る S Q L 文 を 実 行 す る こ と が で き ま す 。 コ ネ ク シ ョ ン を 接 続 す る に は CONNE CT文 、 コネ クショ ンを 変更す る に は SET CONNECTION文 、 コネ クシ ョンを 切断 するに は D I S C O N N E C T 文 を 使 用 し ま す 。 „ データ操作(参照、更新、変更、削除など )

デ ー タ を 操 作 す る た め に は 、 SELECT文 、 INSERT文 、 UPDATE 文 お よ び DELETE文 な どの SQL文 を利 用し ます。 カー ソルを 定義 し、 F E T C H 文 に よ っ て デ ー タ を 取 り 出 す こ と も で き ま す 。 こ れ ら の SQL文 を 動的 に生 成する こと も可能 です (動的 SQL)。 動 的 S Q L 文 で は 、 N e t C O B O L f o r . N E T に よ る S Q L 文 法 の チ ェ ッ ク は 行 い ま せ ん 。 し た が っ て 、 デ ー タ ベ ー ス に 依 存 す る SQL文 を使 用す ること も 可 能 と な り ま す 。 た だ し 、 使 用 す る SQL文が デー タベー スに 依存す る 場 合 、 NetCOBOL for .NETで は 動作 保証し てい ません ので 、利用 者 側 の 責 任 に お い て 利 用 す る こ と と な り ま す 。 „ ストアドプロシージャの呼出し ス ト ア ド プ ロ シ ー ジ ャ と は 、 デ ー タ ベ ー ス に 登 録 さ れ た 処 理 手 続 き の こ と で す 。 通 常 ス ト ア ド プ ロ シ ー ジ ャ は 、 デ ー タ ベ ー ス 依 存 の SQL文 で 記 述 し ま す 。 一 般 的 に は 、 ス ト ア ド プ ロ シ ー ジ ャ を 利 用 す る こ と で 、 「 処 理 手 続 き の 実 行 速 度 の 向 上 」 、 「 ク ラ イ ア ン ト − サ ー バ 間 の 通 信 負 荷 の 減 少 」 、 「 開発 /保守 の生 産性 の向上 」、 「セ キュ リティ の向 上 」 な ど の 効 果 が あ り ま す 。 N e t C O B O L f o r . N E T で は 、 C A L L 文 で ス ト ア ド プ ロ シ ー ジ ャ を 呼 び 出 す こ と が で き ま す 。

な お 、 SQL Server 20 05で はスト アド プロシ ージ ャをCOB OLで 記 述す る こ と が で き ま す 。 詳 細 は 、 「 5.6 SQL CLRス ト アドプ ロシ ージャ の 作 成 」 で 説 明 し ま す 。

(21)

5.3 埋込みSQLでのデータアクセス „ トランザクション処理 ト ラ ン ザ ク シ ョ ン は 、 デ ー タ ベ ー ス に 対 す る デ ー タ 操 作 の 一 貫 性 を 保 証 す る 単 位 で す 。 トラ ンザ クショ ンは 、最初 の SQL文を 実行 したと き に 開 始 さ れ 、 COMMIT文 ま たは ROLLBACK文 を 実 行し たとき に終 了 し ま す 。

な お 、 Net COB OL fo r .NETの 埋 込み SQLで は、 SQL情 報の

@ S Q L _ C O M M I T _ M O D E を M A N U A L ( デ フ ォ ル ト ) に 設 定 す る こ と に よ り 、 接 続 と 同 時 に ト ラ ン ザ ク シ ョ ン が 開 始 さ れ ま す 。

( 4 ) プログラムのビルド

ビ ル ド 時 に 、 埋 込 み SQL用 の 特別 な翻 訳オプ ショ ンやリ ンク オプシ ョ ン は 必 要 あ り ま せ ん 。 な お 、 動 的 SQL で な い SQL 文 は 、 ビ ル ド ( 翻 訳 ) 時 に チ ェ ッ ク さ れ ま す 。 し か し 、 動 的 SQLは チェ ック が行わ れま せんの で、 ビルド 時に 文法エ ラ ー を 検 出 す る こ と が で き ま せ ん 。

( 5 ) プログラムの実行とデバッグ

埋 込 み SQLを 使用 したプ ログ ラムを 実行 する場 合は 、アプ リケ ーショ ン 構 成 フ ァ イ ル に 記 述 さ れ た 接 続 情 報 に 従 っ て 、 デ ー タ ベ ー ス に 接 続 し ま す 。 そ の た め 、 デ ー タ ベ ー ス が 参 照 で き な い 場 合 、 プ ロ グ ラ ム の ソ ー ス と と も に 、 設 定 フ ァ イ ル の 内 容 を 確 認 す る 必 要 が あ り ま す 。 ま た 、 動 的 SQLは 、 プロ グラ ムが実 行さ れる場 合に 初めて 利用 されま す 。 動 的 SQLは 、 翻訳 され ずその まま データ ベー スに渡 され るため 、動 的 SQLに 誤り があ る場合 、デ ータベ ース のエラ ーか らエラ ーの 原因を 確 認 す る 必 要 が あ り ま す 。

(22)

5.4 READ/WRITEインタフェース

5.4 READ/WRITEインタフェース

5.4.1 アクセスするデータを切り替える仕組み

R E A D / W R I T E イ ン タ フ ェ ー ス を 利 用 し た プ ロ グ ラ ム で は 、 フ ァ イ ル や デ ー タ ベ ー ス の 種 類 が 異 な っ て も 、 プ ロ グ ラ ム の 手 続 き は ほ ぼ 同 一 で す 。 し た が っ て 、 環 境 (COB OL 初 期 化 フ ァ イ ル な ど ) を 変 更 す る だ け で 、 ア ク セ ス す る フ ァ イ ル や デ ー タ ベ ー ス を 切 り 替 え る こ と が で き ま す 。 ほ と ん ど の 場 合 、 プ ロ グ ラ ム 修 正 は 不 要 で す 。 COBOL初期化ファイル

NetCOBOL for .NET

プログラム ファイル識別子=・・・・,BTRV ファイル識別子=・・・・,RDM BtrievePervasive) Oracle SQL Server PowerRW+ COBOLファイルなど ファイル識別子=ファイル名 PowerRW+ インストール環境 PowerRDBconnector SQL Server版 インストール環境 PowerRDBconnector Oracle版 インストール環境 ファイル管理段落 SELECT ∼ ASSIGN ファイル識別子 図 5 . 4 . 1 デ ー タ を 切 り 替 え る 仕 組 み R E A D / W R I T E イ ン タ フ ェ ー ス に よ る C O B O L フ ァ イ ル へ の ア ク セ ス で は 、 フ ァ イ ル 管 理 段 落 (FILE-CONTROL段 落 )の SELECT句 の ASSIGN句 で フ ァ イ ル 識 別 子 を 指 定 し 、 COBOL初 期 化 ファ イルで ファ イル識 別子 と 実 フ ァ イ ル 名 を 対 応 付 け る の が 一 般 的 で す 。

R E A D / W R I T E イ ン タ フ ェ ー ス を 使 用 し た デ ー タ ベ ー ス へ の ア ク セ ス で は 、 フ ァ イ ル 識 別 子 に 指 定 す る フ ァ イ ル 名 の 後 に キ ー ワ ー ド を 指 定 す る こ と で 、 接 続 先 を 切 り 替 え ま す 。

(23)

5.4 READ/WRITEインタフェース

5.4.2 データごとのアクセス方法

( 1 ) Btrieveファイルの場合

フ ァ イ ル 名 の 後 に 「 ,BTRV」 を 付 け 加え ると、 Btrieve フ ァイ ルへア ク セ ス し ま す 。 プ ロ グ ラ ム の 記 述 は ほ と ん ど 変 更 す る 必 要 は あ り ま せ ん が 、 SEPARATE指 定 の ない 符号付 き外 部 10進 項目 を88コ ンソー シア ム 形 式 で 扱 う 際 に 、 型 変 換 の 処 理 が 必 要 に な る 場 合 が あ り ま す (データ の 変 換 機 能 が 用 意 さ れ て い ま す )。

( 2 ) PowerRW+の場合

P o w e r RW + が イ ン ス ト ー ル さ れ て い る 環 境 で 、 フ ァ イ ル 名 に ア ク セ ス す る RDMフ ァイ ルのフ ァイ ル定義 体を 指定し 、そ の後に 「 ,RDM」 を付 け 加 え る と 、 PowerRW+を 利 用し たデ ータア クセ スを行 いま す。 P o w e r RW + は 、 も と も と C O B O L か ら R E A D / W R I T E イ ン タ フ ェ ー ス に よ る 接 続 を 想 定 し た デ ー タ ベ ー ス で す の で 、 ほ と ん ど の COB OL デ ー タ 型 に 対 応 し て い ま す 。 し た が っ て 、 フ ァ イ ル に ア ク セ ス す る プ ロ グ ラ ム を ほ ぼ 無 修 正 で 利 用 す る こ と が 可 能 で す 。 複 数 の ア プ リ ケ ー シ ョ ン か ら 一 つ の フ ァ イ ル に ア ク セ ス す る ケ ー ス が 想 定 さ れ る た め 、 ト ラ ン ザ ク シ ョ ン 機 能 が 用 意 さ れ て い ま す 。 ト ラ ン ザ ク シ ョ ン 機 能 を 組 み 込 む 場 合 は 、 フ ァ イ ル ア ク セ ス の 前 後 に ト ラ ン ザ ク シ ョ ン サ ブ ル ー チ ン の 呼 び 出 し 処 理 を 追 加 す る 修 正 が 必 要 で す 。 な お 、 PowerRW +は マ ルチ スレッ ドの 動作に 対応 してい ない ため、 A S P. N E T ( We b ア プ リ ケ ー シ ョ ン ) で 利 用 す る こ と は で き ま せ ん 。

( 3 ) PowerRDBconnector(SQL Server/Oracle)の場合

P o w e r R D B c o n n e c t o r が イ ン ス ト ー ル さ れ て い る 環 境 で 、 フ ァ イ ル 名 の 後 に 「 ,RDM」 を 付け 加え ると、 SQL Serverか Ora cl eに ア クセス する こ と が で き ま す (PowerRDBconnectorの イ ン スト ールオ プシ ョンで 、 S Q L S e r v e r と O r a c l e の ど ち ら を 使 用 す る か 選 択 し ま す ) 。 接 続 す る デ ー タ ベ ー ス サ ー バ の 情 報 は 、 PowerRDBconnectorの 動 作 環 境 フ ァ イ ル で あ る DBIO_E NV フ ァイ ルに記 述し ます。 デ ー タ ベ ー ス の デ ー タ 型 と COBOLの デ ータ型 は、 一度 P o w e r R D B c o n n e c t o r の デ ー タ に 置 き 換 え ら れ 、 対 応 付 け ら れ ま す 。 し た が っ て 、 ほ と ん ど の 場 合 、 フ ァ イ ル を ア ク セ ス す る プ ロ グ ラ ム を ほ ぼ 無 修 正 で 利 用 す る こ と が 可 能 で す 。

(24)

5.4 READ/WRITEインタフェース

想 定 さ れ る た め 、 ト ラ ン ザ ク シ ョ ン 機 能 が 用 意 さ れ て い ま す 。 ト ラ ン ザ ク シ ョ ン 機 能 を 組 み 込 む 場 合 は 、 フ ァ イ ル ア ク セ ス の 前 後 に 、 ト ラ ン ザ ク シ ョ ン サ ブ ル ー チ ン の 呼 び 出 し 処 理 を 追 加 す る 修 正 が 必 要 で す 。

(25)

5.5 データアクセスプログラムの作成

5.5 データアクセスプログラムの作成

5.5.1 プログラムの概要

( 1 ) プログラムの実行イメージ

デ ー タ ア ク セ ス プ ロ グ ラ ム の 作 成 例 と し て 、 5.5 節 では、 埋込 み SQL を 使 用 し た プ ロ グ ラ ム を 紹 介 し ま す 。 こ の 例 で は 、 デ ー タ ベ ー ス に 格 納 さ れ た 「 商 品 テ ー ブ ル 」 「 在 庫 テ ー ブ ル 」 「 社 員 テ ー ブ ル 」 に ア ク セ ス す る サ ブ プ ロ グ ラ ム を 作 成 し ま す 。 ま た 、 各 ク ラ ス の 動 作 を 確 認 す る た め の コ ン ソ ー ル ア プ リ ケ ー シ ョ ン も 合 わ せ て 作 成 し ま す 。 こ こ で は 、 デ ー タ ベ ー ス と し て SQL Se rver を 利用 してい ます が、 A D O . N E T に 対 応 し て い る デ ー タ ベ ー ス で あ れ ば 、 S Q L S e r v e r 以 外 の デ ー タ ベ ー ス で も 利 用 で き 、 プ ロ グ ラ ム の 修 正 も 必 要 あ り ま せ ん ( ア プ リ ケ ー シ ョ ン 構 成 フ ァ イ ル の 設 定 変 更 の み 必 要 ) 。 た だ し 、 次 節 「 5.6 S Q L C L R ス ト ア ド プ ロ シ ー ジ ャ の 作 成 」 で 説 明 す る ス ト ア ド プ ロ シ ー ジ ャ に 関 し て は 、 SQL Serverで し か利 用でき ませ ん。 Windows .NET Framework NetCOBOL for .NET (運用パッケージ)

データベース (SQL Serverなど) コンソール アプリケーション (テスト用) サブプログラム型 クラスライブラリ 商品テーブル用(埋込みSQL) 在庫テーブル用(埋込みSQL) 従業員テーブル用(埋込みSQL) 従業員 テーブル 商品 テーブル 在庫 テーブル

NetCOBOL for .NETで作成 スクリプトを実行して設定

ADO .N E T 図 5 . 5 . 1 ( 1 ) プ ロ グ ラ ム の 運 用 イ メ ー ジ な お 、 こ こ で 作 成 し た ク ラ ス ラ イ ブ ラ リ は 、 7 章 で Webア プリ ケーシ ョ ン を 使 用 す る と き に 再 利 用 し ま す 。

(26)

5.5 データアクセスプログラムの作成

( 2 ) プログラムの構成

StockLibrary.cobproj SYAIN.COB SYOHIN.COB ZAIKO.COB IODETAIL.CBL MSGTBL.CBL COBOLソースファイル COBOL登録集ファイル StockLibrary.sln ソリューションファイル COBOLプロジェクトファイル 従業員テーブル用COBOLソースファイル 商品テーブル用COBOLソースファイル 在庫テーブル用COBOLソースファイル 画面出力用レコード用登録集 出力メッセージ用登録集 TestSYAIN.COB SYAIN.COBテスト用ソースファイル TestSYAIN..cobproj TestSYAIN.sln TestSYIHIN..cobproj TestSYOHINN.sln TestZAIKO..cobproj TestZAIKO.sln COBOLソースファイル TestSYOHIN.COB SYAIN.COBテスト用ソースファイル COBOLソースファイル TestSYAIN.exe.config TestSYOHIN.exe.config TestZAIKO.COB SYAIN.COBテスト用ソースファイル COBOLソースファイル TestSZAIKO.exe.config COBOL登録集ファイル IODETAIL.CBL 実行環境設定ファイル 実行環境設定ファイル 実行環境設定ファイル 画面出力用レコード用登録集 図 5 . 5 . 1 ( 2 ) サ ン プ ル プ ロ グ ラ ム の 構 成 フ ァ イ ル デ ー タ ベ ー ス ア ク セ ス を 行 う た め の 、 サ ブ プ ロ グ ラ ム を 集 め た ク ラ ス ラ イ ブ ラ リ は 、 同 じ プ ロ ジ ェ ク ト に 作 成 し ま す 。 ま た 、 プ ロ グ ラ ム の 実 行 に 必 要 な 登 録 集 も プ ロ ジ ェ ク ト に 登 録 し ま す 。 ま た 、 作 成 し た サ ブ プ ロ グ ラ ム を 検 証 す る た め 、 サ ブ プ ロ グ ラ ム ご と に 簡 単 な コ ン ソ ー ル ア プ リ ケ ー シ ョ ン を 作 成 し ま す 。 各 プ ロ グ ラ ム は 、 独 自 の コ ン ソ ー ル ア プ リ ケ ー シ ョ ン と し て 作 成 す る た め 、 ソ ー ス フ ァ イ ル と と も に 、 実 行 時 に 必 要 な 設 定 を 格 納 し た 実 行 環 境 設 定 フ ァ イ ル を 作 成 し ま す 。 実 行 環 境 設 定 フ ァ イ ル に は 、 埋 込 み SQLで 使用 する 接続文 字 列 設 定 な ど の 情 報 を 格 納 し ま す 。

( 3 ) サブプログラムの仕様

3 種 類 の サ ブ プ ロ グ ラ ム の 仕 様 に つ い て 説 明 し ま す 。

(27)

5.5 データアクセスプログラムの作成 „ SYAIN.COBサブプログラム 社 員 コ ー ド と パ ス ワ ー ド を 受 け 取 り 、 社 員 テ ー ブ ル を 読 み 込 ん で 認 証 処 理 を 行 い ま す 。 認 証 の 結 果 は 、 戻 り 値 で 返 し ま す 。 ま た 、 エ ラ ー 発 生 時 の メ ッ セ ー ジ も パ ラ メ ー タ ー と し て 返 し ま す 。 ( パ ラ メ ー タ ー と 戻 り 値 ) パ ラ メ ー タ ー I N / O U T 型 意 味 P - E m p l o y e e C o d e I N N ( 6 ) 社 員 コ ー ド P - P a s s w o r d I N N ( 6 ) パ ス ワ ー ド P - M s g O U T N ( 2 0 ) 例 外 メ ッ セ ー ジ 戻 り 値 I N / O U T 意 味 R - R e t u r n C o d e O U T B I N A R Y - L O N G 認 証 O K : 0 社 員 コ ー ド 誤 り : 2 パ ス ワ ー ド 誤 り : 3 „ SYOHIN.COBサブプログラム 商 品 コ ー ド の み 格 納 さ れ た 商 品 レ コ ー ド を 受 け 取 り 、 商 品 テ ー ブ ル を 検 索 し て 、 該 当 す る 商 品 コ ー ド の レ コ ー ド を 読 み 込 み 、 商 品 レ コ ー ド と し て 呼 出 し 元 に 返 し ま す 。 ( パ ラ メ ー タ ー と 戻 り 値 ) パ ラ メ ー タ ー I N / O U T 型 意 味 P - S Y O H I N R E C I N / O U T 集 団 項 目 商 品 レ コ ー ド P - S Y O C D I N / O U T P I C 9 ( 5 ) 商 品 コ ー ド P - S Y O N A O U T P I C N ( 2 0 ) 商 品 名 P - B A I K A O U T P I C 9 ( 8 ) 売 価 P - G E N K A O U T P I C 9 ( 8 ) 原 価 P - M s g O U T N ( 2 0 ) 例 外 メ ッ セ ー ジ 戻 り 値 I N / O U T 型 意 味 R - R e t u r n C o d e O U T B I N A R Y - L O N G 正 常 終 了 : 0 商 品 コ ー ド な し : 5 „ ZAIKO.COBサブプログラム 指 定 さ れ た 商 品 コ ー ド の 在 庫 状 況 に つ い て 、 在 庫 テ ー ブ ル を 読 み 込 み 、 画 面 出 力 用 の 1 ペー ジ分 (10行 )のレ コー ドを生 成し 、呼出 し元 に返し ま す 。

(28)

5.5 データアクセスプログラムの作成 ( パ ラ メ ー タ ー と 戻 り 値 ) パ ラ メ ー タ ー I N / O U T 型 意 味 M - A R E A I N / O U T I O D E T A I L . C B L パ ラ メ ー タ ー 用 レ コ ー ド P - S t a r t I N / O U T B I N A R Y - L O N G 開 始 行 P - C n t O U T P I C 9 ( 3 ) 件 数 P - N e x t O U T P I C 9 ( 1 ) 次 レ コ ー ド 有 無 P - M s g O U T N ( 2 0 ) 例 外 メ ッ セ ー ジ 戻 り 値 I N / O U T 型 意 味 R - R e t u r n C o d e O U T B I N A R Y - L O N G 正 常 終 了 : 0 商 品 コ ー ド な し : 5

5.5.2 プログラム作成手順

( 1 ) データベース環境設定

利 用 す る デ ー タ ベ ー ス を 構 築 し ま す 。 今 回 は 、 デ ー タ ベ ー ス 構 築 の た め の ス ク リ プ ト (cobdb.sql)を 提供 して います 。 Sampl eDataフ ォ ル ダ内 の setupcobdb.batを コマ ンド ライン から 実行す ると 、 SQL Se rver 上 に構 築 さ れ ま す 。 setupcobdb.batで は、 SQL Server 2005/2008 Expressを 想 定 し て い ま す 。

( 2 ) プロジェクトの作成とファイルの追加

サ ブ プ ロ グ ラ ム が 格 納 さ れ る ク ラ ス ラ イ ブ ラ リ 用 の プ ロ ジ ェ ク ト を 作 成 し 、 サ ブ プ ロ グ ラ ム 用 の COBOLソ ー スファ イル などを 追加 します 。

( 3 ) COBOL手続きの編集

埋 込 み SQLを 使用 して、 デー タベー スに アクセ スす る COBO L手 続 き を 編 集 し ま す 。

( 4 ) プログラムの実行とデバッグ

プ ロ グ ラ ミ ン グ が 完 了 し た ら 、 通 常 は 、 ビ ル ド 後 に 実 行 / デ バッ グを 行 い ま す 。 し か し 、 今 回 作 成 す る の は ク ラ ス ラ イ ブ ラ リ の た め 、 そ の ま ま で は 実 行 お よ び デ バ ッ グ が で き ま せ ん 。 し た が っ て 、 ク ラ ス ラ イ ブ ラ リ を 呼 び 出 す た め の 簡 単 な コ ン ソ ー ル ア プ リ ケ ー シ ョ ン を 作 成 し な が ら 、 ク ラ ス ラ イ ブ ラ リ の 動 作 確 認 を 行 い ま す 。

(29)

5.5 データアクセスプログラムの作成

5.5.3 プロジェクトの作成とファイルの追加

は じ め に 、 デ ー タ ベ ー ス に ア ク セ ス す る サ ブ プ ロ グ ラ ム を 管 理 す る プ ロ ジ ェ ク ト を 作 成 し ま す 。 ¾ 手 順 1 N e t C O B O L f o r . N E T を 起 動 し 、 [ フ ァ イ ル ] メ ニ ュ ー よ り [ 新 規 作 成 ] -[ プ ロ ジ ェ ク ト ] を 選 択 し ま す 。 ¾ 手 順 2 [ 新 し い プ ロ ジ ェ ク ト ] ダ イ ア ロ グ ボ ッ ク ス が 表 示 さ れ ま す 。 [ プ ロ ジ ェ ク ト の 種 類 ]よ り [COBOLプ ロ ジェ クト ]を 選 択し 、 [テ ンプ レート ]よ り [ク ラ スラ イブ ラリ]を 選 択 しま す。 プロジ ェク ト名に 「 StockLibrary 」と入 力し 、 [OK ]ボ タ ン を 押し ます。 作 成 し た プ ロ ジ ェ ク ト の ソ ー ス フ ァ イ ル に は Clas s1.cob が 自動 生成さ れ ま す が 、 今 回 は 使 用 し ま せ ん 。 ソ リ ュ ー シ ョ ン エ ク ス プ ロ ー ラ か ら C l a s s 1 . c o b を 右 ク リ ッ ク し 、 削 除 を 選 ん で 削 除 し て く だ さ い 。 ¾ 手 順 3 作 成 し た [StockLibrar y ]プ ロ ジ ェク トに ソース プロ グラム を追 加しま す 。 [ソ リュ ーシ ョンエ クス プロー ラ ]の [St ockLibrary ]プ ロ ジ ェク ト よ り [ソ ース ファ イル]フ ォ ル ダを 右ク リック しま す。[追 加 ]- [新 し い

(30)

5.5 データアクセスプログラムの作成 ( S YA I N . C O B 、 S Y O H I N . C O B 、 Z A I K O . C O B ) を 新 規 に 追 加 し て く だ さ い 。 1 2 3 「StockLibrary」プロジェ クト内の[ソースファイル] フォルダを右クリックし[追 加]-[新しい項目の追加] をクリック [テンプレート]より[プログラム] を選択し、ファイル名を入力 「SYAIN.cob」 1、2の処理を繰り返し、「ソー スファイル」フォルダに次のプ ログラムファイルを作成 ・SYAIN.cob ・SYOHIN.cob ・ZAIKO.cob 図 5 . 5 . 3 ソ ー ス プ ロ グ ラ ム 追 加 手 順

5.5.4 COBOL手続きの編集

次 に 、 追 加 し た プ ロ グ ラ ム を コ ー テ ィ ン グ し ま す 。 作 成 す る プ ロ グ ラ ム は 次 の 3本 です 。 9 SYAIN.COB 9 SYOHIN.COB 9 ZAIKO.COB

(31)

5.5 データアクセスプログラムの作成 „ SYAIN.COB ( 社 員 テ ー ブ ル に ア ク セ ス し 、 認 証 を 行 う ) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * プ ロ グ ラ ム 名 : S Y A I N * 概 要 : 社 員 テ ー ブ ル に ア ク セ ス し 認 証 を 行 う 。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I D E N T I F I C A T I O N D I V I S I O N . P R O G R A M - I D . S Y A I N . E N V I R O N M E N T D I V I S I O N . C O N F I G U R A T I O N S E C T I O N . S P E C I A L - N A M E S . R E P O S I T O R Y . D A T A D I V I S I O N . F I L E S E C T I O N . W O R K I N G - S T O R A G E S E C T I O N . * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = * ホ ス ト 変 数 宣 言 * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = E X E C S Q L B E G I N D E C L A R E S E C T I O N E N D - E X E C . 0 1 S Q L S T A T E P I C X ( 5 ) . 0 1 S Q L M S G P I C X ( 1 2 8 ) . 0 1 S Y A P F - R E C . 0 2 S Y A C D P I C S 9 ( 9 ) C O M P - 5 . 0 2 S Y A N A P I C N ( 2 0 ) . 0 2 P A S S P I C N ( 6 ) . 0 2 B U S Y O P I C S 9 ( 9 ) C O M P - 5 . 0 2 S D A T E P I C S 9 ( 9 ) C O M P - 5 . 0 2 S N A M E P I C N ( 2 0 ) . 0 1 S - S Y A C D P I C S 9 ( 9 ) C O M P - 5 . E X E C S Q L E N D D E C L A R E S E C T I O N E N D - E X E C . C O P Y M S G T B L . L I N K A G E S E C T I O N . 0 1 P - E m p l o y e e C o d e P I C N ( 0 6 ) . 0 1 P - P a s s w o r d P I C N ( 0 6 ) . 0 1 P - M s g P I C N ( 2 0 ) . 0 1 R - R e t u r n C o d e B I N A R Y - L O N G . P R O C E D U R E D I V I S I O N U S I N G P - E m p l o y e e C o d e * > 社 員 コ ー ド P - P a s s w o r d * > パ ス ワ ー ド P - M s g * > メ ッ セ ー ジ R E T U R N I N G R - R e t u r n C o d e . * > 戻 り 値 ( エ ラ ー コ ー ド ) P E R F O R M M A I N - S E C . P E R F O R M E N D - S E C . E X I T P R O G R A M . M A I N - S E C S E C T I O N . * レ コ ー ド が な か っ た 場 合 の 動 作 E X E C S Q L W H E N E V E R N O T F O U N D G O T O : P - N O T F O U N D E N D - E X E C . * D B 接 続 E X E C S Q L C O N N E C T T O D E F A U L T E N D - E X E C .

(32)

5.5 データアクセスプログラムの作成 * S Q L 実 行 E X E C S Q L S E L E C T S Y A C D , P A S S I N T O : S Y A C D , : P A S S F R O M S Y A P F W H E R E S Y A C D = : S - S Y A C D E N D - E X E C * パ ス ワ ー ド 比 較 I F S Q L S T A T E = " 0 0 0 0 0 " A N D P A S S = P - P a s s w o r d T H E N M O V E 0 T O R - R e t u r n C o d e E L S E M O V E 3 T O R - R e t u r n C o d e E N D - I F E N D - I F . E N D - S E C S E C T I O N . * D B ク ロ ー ズ E X E C S Q L D I S C O N N E C T D E F A U L T E N D - E X E C . * メ ッ セ ー ジ 設 定 I F R - R e t u r n C o d e > 1 T H E N M O V E M S G - D S P ( R - R e t u r n C o d e ) T O P - M s g E N D - I F . N O T F O U N D - S E C S E C T I O N . P - N O T F O U N D . * 社 員 コ ー ド が 見 つ か ら な か っ た 場 合 の 処 理 M O V E 2 T O R - R e t u r n C o d e . P E R F O R M E N D - S E C . E N D P R O G R A M S Y A I N . * 接 続 確 認 I F S Q L S T A T E = " 0 0 0 0 0 " O R S Q L S T A T E = " 0 1 0 0 0 " T H E N M O V E F U N C T I O N D I S P L A Y - O F ( P - E m p l o y e e C o d e ) T O S - S Y A C D

(33)

5.5 データアクセスプログラムの作成 „ SYOHIN.COB ( 商 品 テ ー ブ ル に ア ク セ ス し 、 商 品 レ コ ー ド の 取 得 を 行 う ) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * プ ロ グ ラ ム 名 : S Y O H I N * 概 要 : 商 品 テ ー ブ ル に ア ク セ ス し 、 * 商 品 レ コ ー ド の 取 得 を 行 う 。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I D E N T I F I C A T I O N D I V I S I O N . P R O G R A M - I D . S Y O H I N . E N V I R O N M E N T D I V I S I O N . C O N F I G U R A T I O N S E C T I O N . S P E C I A L - N A M E S . R E P O S I T O R Y . I N P U T - O U T P U T S E C T I O N . D A T A D I V I S I O N . W O R K I N G - S T O R A G E S E C T I O N . * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = * ホ ス ト 変 数 宣 言 * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = E X E C S Q L B E G I N D E C L A R E S E C T I O N E N D - E X E C . 0 1 S Q L S T A T E P I C X ( 5 ) . 0 1 S Q L M S G P I C X ( 1 2 8 ) . 0 1 S Y O P F - R E C . 0 2 S Y O C D P I C S 9 ( 9 ) C O M P - 5 . 0 2 S Y O N A P I C N ( 2 0 ) . 0 2 B A I K A P I C S 9 ( 9 ) C O M P - 5 . 0 2 G E N K A P I C S 9 ( 9 ) C O M P - 5 . 0 1 S - S Y O C D P I C S 9 ( 9 ) C O M P - 5 . E X E C S Q L E N D D E C L A R E S E C T I O N E N D - E X E C . C O P Y M S G T B L . L I N K A G E S E C T I O N . 0 1 P - S Y O H I N R E C . 0 2 P - S Y O C D P I C 9 ( 5 ) . 0 2 P - S Y O N A P I C N ( 2 0 ) . 0 2 P - B A I K A P I C 9 ( 8 ) . 0 2 P - G E N K A P I C 9 ( 8 ) . 0 1 P - M s g P I C N ( 2 0 ) . 0 1 R - R e t u r n C o d e B I N A R Y - L O N G . P R O C E D U R E D I V I S I O N U S I N G P - S Y O H I N R E C * > 商 品 レ コ ー ド P - M s g * > メ ッ セ ー ジ R E T U R N I N G R - R e t u r n C o d e . * > 戻 り 値 ( エ ラ ー コ ー ド ) P E R F O R M M A I N - S E C . P E R F O R M E N D - S E C . E X I T P R O G R A M . M A I N - S E C S E C T I O N . * レ コ ー ド が な か っ た 場 合 の 動 作 E X E C S Q L W H E N E V E R N O T F O U N D G O T O : P - N O T F O U N D E N D - E X E C . * D B 接 続 E X E C S Q L C O N N E C T T O D E F A U L T E N D - E X E C .

(34)

5.5 データアクセスプログラムの作成 * 接 続 確 認 I F S Q L S T A T E = " 0 0 0 0 0 " O R S Q L S T A T E = " 0 1 0 0 0 " T H E N M O V E P - S Y O C D O F P - S Y O H I N R E C T O S - S Y O C D * S Q L 実 行 E X E C S Q L S E L E C T S Y O C D , S Y O N A , B A I K A , G E N K A I N T O : S Y O C D , : S Y O N A , : B A I K A , : G E N K A F R O M S Y O P F W H E R E S Y O C D = : S - S Y O C D E N D - E X E C * 取 得 デ ー タ の 転 記 I F S Q L S T A T E = " 0 0 0 0 0 " T H E N M O V E S Y O C D T O P - S Y O C D M O V E S Y O N A T O P - S Y O N A M O V E B A I K A T O P - B A I K A M O V E G E N K A T O P - G E N K A E N D - I F E N D - I F . E N D - S E C S E C T I O N . * D B ク ロ ー ズ E X E C S Q L D I S C O N N E C T D E F A U L T E N D - E X E C . * メ ッ セ ー ジ 設 定 I F R - R e t u r n C o d e > 1 T H E N M O V E M S G - D S P ( R - R e t u r n C o d e ) T O P - M s g E N D - I F . N O T F O U N D - S E C S E C T I O N . P - N O T F O U N D . * 商 品 コ ー ド が 見 つ か ら な か っ た 場 合 の 処 理 M O V E 5 T O R - R e t u r n C o d e . P E R F O R M E N D - S E C . E N D P R O G R A M S Y O H I N . „ ZAIKO.COB ( 入 出 庫 テ ー ブ ル か ら 入 出 庫 明 細 を 取 得 す る ) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * プ ロ グ ラ ム 名 : Z A I K O * 概 要 : 入 出 庫 テ ー ブ ル か ら 入 出 庫 明 細 を 取 得 す る 。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I D E N T I F I C A T I O N D I V I S I O N . P R O G R A M - I D . Z A I K O . E N V I R O N M E N T D I V I S I O N . C O N F I G U R A T I O N S E C T I O N . S P E C I A L - N A M E S . R E P O S I T O R Y . I N P U T - O U T P U T S E C T I O N . D A T A D I V I S I O N . F I L E S E C T I O N . W O R K I N G - S T O R A G E S E C T I O N .

参照

関連したドキュメント

まずフォンノイマン環は,普通とは異なる「長さ」を持っています. (知っている人に向け て書けば, B

活用することとともに,デメリットを克服することが不可欠となるが,メ

• Apply VARSITY WDG, at 2 - 3 oz./A, between 7 - 30 days prior to planting field corn, for the pre-emergence control of the weeds listed in Table 1, Broadleaf Weeds Controlled

日本への輸入 作成日から 12 か月 作成日から 12 か月 英国への輸出 作成日から2年 作成日から 12 か月.

日本への輸入 作成日から 12 か月 作成日から 12 か月 英国への輸出 作成日から2年 作成日から 12 か月.

2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月.  過去の災害をもとにした福 島第一の作業安全に関する

1号機原子炉建屋への入力地震動は,「福島第一原子力発電所  『発電用原子炉施設に関す る耐震設計審査指針』の改訂に伴う耐震安全性評価結果  中間報告書」(原管発官19第60 3号  平成

 その後、 『 「10 年後の東京」への実行プログラム 2008』の策定及び平成 20 年度 予算編成を経て、今般、 「緑の東京