ヘッダーをスキップ
Pro*COBOL®プログラマーズ・ガイド
11
g
リリース2(11.2)
E50141-01
ライブラリ
製品
索引
次
目次
タイトルおよび著作権情報
はじめに
対象読者
ドキュメントのアクセシビリティについて
関連ドキュメント
表記規則
Pro*COBOLの新機能
Oracle 11gリリース2(11.2)でのPro*COBOLの新機能
Oracle 11gリリース1(11.1)でのPro*COBOLの新機能
第I部 概要および概念
1
概要
Pro*COBOLの概要
Pro*COBOLプリコンパイラ
代替言語
Pro*COBOLプリコンパイラを使用する利点
SQL言語
PL/SQL言語
Pro*COBOLの機能および利点
ディレクトリ構造
ヘッダー・ファイル
ライブラリ・ファイル
既知の問題、制限事項および対処方法
互換性、アップグレードおよび移行
2
プリコンパイラの概念
埋込みSQLプログラミングの基本概念
埋込みSQLアプリケーションの開発ステップ
埋込みSQL文
実行文および宣言部
埋込みSQLの構文
静的SQL文と動的SQL文
埋込みPL/SQLブロック
ホスト変数および標識変数
Oracleデータ型
表
エラーおよび警告
SQLCODE/SQLSTATE状態変数
SQLCA状態変数
WHENEVER文
ORACA
プリコンパイラ・オプションおよびエラー処理
SQL99構文のサポート
プログラミング・ガイドライン
略称
大/小文字の区別なし
COBOLのバージョンのサポート
コーディング領域
カンマ
コメント
行の継続
Copy文
DECIMAL-POINT IS COMMA句
デリミタ
オプションの分割ヘッダー
埋込みSQLの構文
表意定数
ファイルの長さ
FILLERの使用
ホスト変数名
ハイフン付きの名前
レベル番号
MAXLITERALのデフォルト
マルチバイト・データ型
SQLのNULL
段落およびセクションの名前
REDEFINES句
関係演算子
文終了記号
宣言部
宣言部の内容
例
プリコンパイラ・オプションDECLARE_SECTION
INCLUDE文の使用
ファイルの拡張子
検索パス
ネストされたプログラム
ネストされたプログラムのサポート
SQLCAの宣言
ネストされたプログラムの例
条件付きプリコンパイル
例
シンボルの定義
分割プリコンパイル
ガイドライン
カーソルの参照
MAXOPENCURSORSの指定
単一のSQLCAの使用
単一のDATE_FORMATの使用
制限
コンパイルおよびリンク
DEPT表およびEMP表のサンプル
DEPTデータおよびEMPデータのサンプル
サンプルEMPプログラム: SAMPLE1.PCO
3
データベースの概念
Oracleへの接続
デフォルトのデータベースおよび接続
同時ログイン
ユーザー名/パスワードの使用方法
名前指定データベース接続
自動ログイン
AUTO_CONNECTプリコンパイラ・オプション
実行時のパスワード変更
ALTER AUTHORIZATIONを使用しない接続
標準のCONNECT
SYSDBA権限またはSYSOPER権限
リンクの使用方法
基本用語
トランザクションによるデータベースの保護
トランザクションの開始および終了
COMMIT文の使用
DECLARE CURSOR文でのWITH HOLD句の使用
CLOSE_ON_COMMITプリコンパイラ・オプション
ROLLBACK文の使用
文レベルのロールバック
SAVEPOINT文の使用
RELEASEオプションの使用方法
SET TRANSACTION文の使用
デフォルトのロックのオーバーライド
FOR UPDATE OF句の使用
制限
コミット時のフェッチ
LOCK TABLE文の使用方法
分散トランザクションの処理
トランザクション処理のガイドライン
アプリケーションの設計
ロックの取得
PL/SQLの使用方法
X/Openアプリケーション
4
データ型とホスト変数
Oracle Database 11gのデータ型
内部データ型
外部データ型
CHAR
CHARF
CHARZ
DATE
DECIMAL
DISPLAY
FLOAT
INTEGER
LONG
LONG RAW
LONG VARCHAR
LONG VARRAW
NUMBER
OVER-PUNCH
RAW
ROWID
STRING
UNSIGNED
VARCHAR
VARCHAR2
VARNUM
VARRAW
SQL疑似列および関数
日時および時間隔のデータ型記述子
ホスト変数
ホスト変数の宣言
宣言の例
初期化
制限
ホスト変数の参照
ホスト変数としてのグループ項目
制限
標識変数
標識変数の使用方法
入力時
出力時
標識変数の宣言
標識変数の参照
WHERE句での使用
エラー・メッセージの回避
ANSIの要件
マルチバイトNCHAR変数の標識変数
ホスト・グループ項目の標識変数
VARCHAR変数
VARCHAR変数の宣言
暗黙的なVARCHARグループ項目
VARCHAR変数の参照
文字データの処理
PIC Xのデフォルト
PICXオプションの効果
固定長文字変数
入力時
出力時
可変長変数
入力時
出力時
ユニバーサルROWID
サブプログラムSQLROWIDGET
グローバリゼーション・サポート
Pro*COBOLのUnicodeサポート
NLS_LOCAL=YESの制限事項
埋込みSQL内の文字列
埋込みDDL
空白埋込み
標識変数
PIC X/PIC N変数とNCHAR/CHAR列の様々な組合せ
PIC XとNCHAR列
PIC NとCHAR列
新しいオプションの使用方法
データ型変換
DATE文字列フォーマットの明示的な制御
データ型の同値化
同値化の有用性
ホスト変数の同値化
VAR文のCONVBUFSZ句
例
CHARFデータ型指定子の使用方法
ガイドライン
RAWおよびLONG RAWの値
プラットフォームのエンディアン形式のサポート
サンプル・プログラム4: データ型の同値化
5
埋込みSQL
ホスト変数の使用方法
出力ホスト変数および入力ホスト変数
標識変数の使用方法
入力変数
出力変数
NULLの挿入
戻されたNULLの処理
NULLのフェッチ
NULLのテスト
切り捨てられた値のフェッチ
基本的なSQL文
行の選択
使用可能な句
行の挿入
DML RETURNING句
副問合せの使用方法
行の更新
行の削除
WHERE句の使用
カーソル
カーソルの宣言
カーソルのオープン
カーソルからのフェッチ
カーソルのクローズ
CURRENT OF句の使用方法
制限
一般的な文の順序
位置付け更新
PREFETCHプリコンパイラ・オプション
スクロール可能カーソル
スクロール可能カーソルの使用方法
DECLARE SCROLL CURSOR
OPEN
FETCH
CLOSE
CLOSE_ON_COMMITプリコンパイラ・オプション
PREFETCHプリコンパイラ・オプション
B領域の長さの柔軟性
固定実行計画
SQLファイル
例
LOGファイル
サンプル・プログラム2: カーソル操作
6
埋込みPL/SQL
PL/SQLの埋込み
ホスト変数
VARCHAR変数
標識変数
NULLの処理
切り捨てられた値の処理
SQLCHECK
PL/SQLの利点
パフォーマンスの向上
Oracleとの統合
カーソルFORループ
サブプログラム
パラメータ・モード
パッケージ
PL/SQL表
ユーザー定義レコード
PL/SQLブロックの埋込み
ホスト変数およびPL/SQL
PL/SQLの例
PL/SQLの複雑な例
VARCHAR疑似型
標識変数およびPL/SQL
NULLの処理
切り捨てられた値の処理
ホスト表およびPL/SQL
ARRAYLEN文
ARRAYLEN文のEXECUTEオプション・キーワード
埋込みPL/SQLでのカーソルの使用
ストアドPL/SQLおよびJavaサブプログラム
ストアド・サブプログラムの作成
ストアドPL/SQLまたはJavaサブプログラムのコール
無名PL/SQLブロック
CALL文
CALLの例
動的PL/SQLの使用
サブプログラムの制限事項
サンプル・プログラム9: ストアド・プロシージャのコール
リモート・アクセス
カーソル変数
カーソル変数の宣言
カーソル変数の割当て
カーソル変数のオープン
PL/SQLストアド・プロシージャによる間接的なオープン
Pro*COBOLアプリケーションからの直接的なオープン
カーソル変数からのフェッチ
カーソル変数のクローズ
カーソル変数の解放
カーソル変数の制限
サンプル・プログラム11: カーソル変数
SAMPLE11.SQL
SAMPLE11.PCO
7
ホスト表
ホスト表
ホスト表の利点
DML文の表
ホスト表の宣言
制限
ホスト表の参照
インジケータ表の使用方法
表を含んでいるホスト・グループ項目
Oracleでの制限
ANSIでの制限および要件
表に対する選択
バッチ・フェッチ
SQLERRD(3)の使用方法
フェッチされる行数
ホスト表の使用制限
NULLのフェッチ
切り捨てられた値のフェッチ
サンプル・プログラム3: バッチでのフェッチ
表に対する挿入
ホスト表の使用制限
表に対する更新
UPDATEでの制限
表に対する削除
DELETEでの制限
インジケータ表の使用方法
FOR句
制限
SELECT文での使用
CURRENT OF句との併用
WHERE句
CURRENT OF句の疑似実行
ホスト変数としてのグループ項目の表
サンプル・プログラム14: グループ項目の表
配列INSERTおよび配列SELECT構文の追加
暗黙的なバッファ済INSERTの使用
8
エラー処理および診断
エラー処理が必要な理由
エラー処理の代替手段
SQLCA
ORACA
ANSI SQLSTATE変数
SQLSTATEの宣言
SQLSTATE値
SQLコミュニケーション領域の使用
SQLCAの内容
SQLCAの宣言
エラー・レポートの基本コンポーネント
ステータス・コード
警告フラグ
処理済行数
解析エラー・オフセット
エラー・メッセージ・テキスト
SQLCAの構造
SQLCAID
SQLCABC
SQLCODE
SQLERRM
SQLERRD
SQLWARN
SQLEXT
PL/SQLに関する考慮事項
エラー・メッセージのテキスト全体の取得
DSNTIAR
WHENEVERディレクティブ
状態
SQLWARNING
SQLERROR
NOT FOUNDまたはNOTFOUND
アクション
CONTINUE
DO CALL
DO PERFORM
GOTOまたはGO TO
STOP
WHENEVER文のコーディング
DO PERFORM
DO CALL
スコープ
不注意な使用: 例
SQL文のテキストの取得
Oracle通信領域の使用
ORACAの内容
ORACAの宣言
ORACAを使用可能に設定
ランタイム・オプションの選択
ORACAの構造
ORACAID
ORACABC
ORACCHF
ORADBGF
ORAHCHF
ORASTXTF
診断情報
ORASTXT
ORASFNM
ORASLNR
カーソル・キャッシュ統計情報
ORAHOC
ORAMOC
ORACOC
ORANOR
ORANPR
ORANEX
ORACAのサンプル・プログラム
エラーとSQLSTATEコードの対応関係
状態変数の組合せ
9
Oracle動的SQL
動的SQL
動的SQLの長所および短所
動的SQLを使用する場合
動的SQL文の要件
動的SQL文の処理
動的SQLの使用方法
方法1
方法2
方法3
方法4
ガイドライン
一般的なエラーの回避
方法1の使用方法
EXECUTE IMMEDIATE文
例
サンプル・プログラム6: 動的SQL方法1
方法2の使用方法
USING句
サンプル・プログラム7: 動的SQL方法2
方法3の使用方法
PREPARE
DECLARE
OPEN
FETCH
CLOSE
サンプル・プログラム8: 動的SQL方法3
方法4の使用方法
SQLDAの必要性
DESCRIBE文
SQLDAの内容
方法4の実行
DECLARE STATEMENT文の使用方法
ホスト表の使用方法
PL/SQLの使用方法
方法1の場合
方法2の場合
方法3の場合
方法4の場合
注意
動的SQL文のキャッシング
第II部 アプリケーション
10
ANSI動的SQL
ANSI動的SQLの基礎
プリコンパイラのオプション
ANSI SQL文の概要
サンプル・コード
Oracle拡張機能
参照セマンティクス
バルク操作での表の使用方法
ANSI動的SQLのプリコンパイラ・オプション
動的SQL文の構文
ALLOCATE DESCRIPTOR
変数
例
DEALLOCATE DESCRIPTOR
GET DESCRIPTOR
SET DESCRIPTOR
例
PREPAREの使用
DESCRIBE INPUT
DESCRIBE OUTPUT
EXECUTE
EXECUTE IMMEDIATEの使用
DYNAMIC DECLARE CURSORの使用
カーソルのOPEN
FETCH
動的カーソルのCLOSE
Oracle動的方法4との違い
制限
サンプル・プログラム: SAMPLE12.PCO
11
Oracle動的SQL: 方法4
方法4の特殊要件
方法4の利点
データベースに必要な情報
情報の格納位置
情報の取得方法
SQL記述子領域(SQLDA)の理解
SQLDAの目的
複数のSQLDA
SQLDAの宣言
SQLDA変数
前提知識
SQLADRの使用
データの変換
データ型の強制変換
NULLまたはNOT NULLデータ型の処理
基本手順
各手順の詳細
ホスト文字列の宣言
SQLDAの宣言
DESCRIBEへの最大数の設定
記述子の初期化
ホスト文字列への問合せテキストの格納
ホスト文字列からの問合せのPREPARE
カーソルの宣言
バインド変数のDESCRIBE
プレースホルダの数の再設定
バインド変数の値の取得
カーソルのOPEN
選択リストのDESCRIBE
選択リスト項目の最大数の再設定
各選択リスト項目の長さおよびデータ型の再設定
アクティブ・セットからの行のFETCH
選択リストの値の取得および処理
カーソルのCLOSE
方法4でのホスト表の使用
サンプル・プログラム10: 動的SQL方法4
12
マルチスレッド・アプリケーション
スレッドの概要
Pro*COBOLのランタイム・コンテキスト
ランタイム・コンテキストの使用モデル
複数のスレッドで1つのランタイム・コンテキストを共有
複数のスレッドで複数のランタイム・コンテキストを共有
マルチスレッド・アプリケーションのユーザー・インタフェース機能
THREADSオプション
ランタイム・コンテキストの埋込みSQL文およびディレクティブ
SQL-CONTEXTのホスト表の使用禁止
EXEC SQL ENABLE THREADS
EXEC SQL CONTEXT ALLOCATE
EXEC SQL CONTEXT USE
EXEC SQL CONTEXT FREE
Pro*C/C++プログラムとの対話
マルチスレッド・プログラミングに関する注意事項
マルチスレッドの制限
複数のコンテキストの例
例1
例2
例3
例4
例5
マルチスレッドの例
13
ラージ・オブジェクト(LOB)
LOBの使用
内部LOB
外部LOB
BFILEのセキュリティ
LOBとLONGおよびLONG RAWの比較
LOBロケータ
一時LOB
LOBバッファリング・サブシステム
LOBの使用方法
アプリケーションでのLOBロケータ
LOBの初期化
内部LOB
外部LOB
一時LOB
LOBの解放
LOB文のルール
すべてのLOB文に適用されるルール
LOBバッファリング・サブシステムに適用されるルール
ホスト変数に適用されるルール
LOB文
APPEND
ASSIGN
CLOSE
COPY
CREATE TEMPORARY
DISABLE BUFFERING
ENABLE BUFFERING
ERASE
FILE CLOSE ALL
FILE SET
FLUSH BUFFER
FREE TEMPORARY
LOAD FROM FILE
OPEN
READ
TRIM
WRITE
DESCRIBE
ポーリング・メソッドを使用したREADおよびWRITE
LOBサンプル・プログラム: LOBDEMO1.PCO
14
プリコンパイラのオプション
procobコマンド
大/小文字区別
プリコンパイル時のアクション
オプションについて
オプション値の優先順位
マクロ・オプションおよびマイクロ・オプション
カレント値の決定
プリコンパイラ・オプションの入力
コマンドライン
インライン
長所
EXEC ORACLEのスコープ
構成ファイル
プリコンパイラ・オプションのスコープ
クイック・リファレンス
Pro*COBOLプリコンパイラ・オプションの使用
ASACC
ASSUME_SQLCODE
AUTO_CONNECT
CHARSET_PICX
CHARSET_PICN
CLOSE_ON_COMMIT
COMMON_PARSER
CONFIG
DATE_FORMAT
DB2_ARRAY
DBMS
DECLARE_SECTION
DEFINE
DYNAMIC
END_OF_FETCH
ERRORS
File_ID
FIPS
FORMAT
HOLD_CURSOR
HOST
IMPLICIT_SVPT
INAME
INCLUDE
IRECLEN
LITDELIM
LNAME
LRECLEN
LTYPE
MAX_ROW_INSERT
MAXLITERAL
MAXOPENCURSORS
MODE
NESTED
NLS_LOCAL
ONAME
ORACA
ORECLEN
OUTLINE
OUTLNPREFIX
PAGELEN
PICN_ENDIAN
PICX
PREFETCH
RELEASE_CURSOR
RUNOUTLINE
SELECT_ERROR
SQLCHECK
STMT_CACHE
TYPE_CODE
UNSAFE_NULL
USERID
VARCHAR
XREF
A
オペレーティング・システムの依存性
このマニュアルにあるシステム固有の参照情報
COBOLのバージョン
ホスト変数
宣言
ネーミング
INCLUDE文
MAXLITERALのデフォルト
マルチバイト・グローバリゼーション・サポート文字に対するPIC N句またはPIC G句
予測できないRETURN-CODE特殊レジスタ
バイナリ・データのバイト順序
B
予約語、キーワードおよびネームスペース
予約語およびキーワード
予約済ネームスペース
C
パフォーマンス・チューニング
パフォーマンスを低下させる原因
パフォーマンスの向上
ホスト表の使用方法
PL/SQLおよびJavaの使用
SQL文の最適化
オプティマイザ・ヒント
ヒントの渡し方
SQL文のキャッシング
索引の使用
行レベル・ロックの利用
不要な解析の排除
明示カーソルの操作
カーソルの制御
カーソル管理オプションの使用
プライベートSQL領域およびカーソル・キャッシュ
リソースの使用
実行回数の少ない場合
実行回数の多い場合
共有SQL領域への影響
埋込みPL/SQLに関する考慮事項
パラメータの相互作用
不要な再解析の回避
D
構文および意味検査
構文および意味検査の基礎
検査の種類および範囲の制御
SQLCHECK=SEMANTICSの指定
意味検査の使用許可
Oracleへの接続
DECLARE TABLEの使用
E
埋込みSQL文およびプリコンパイラ・ディレクティブ
プリコンパイラ・ディレクティブおよび埋込みSQL文の概要
文記述子
構文図の読み方
文の終了記号
必須のキーワードおよびパラメータ
オプションのキーワードおよびパラメータ
構文ループ
複数パーツの図
Oracleオブジェクト名
ALLOCATE (実行可能埋込みSQL拡張機能)
ALLOCATE DESCRIPTOR (実行可能埋込みSQL)
CALL (実行可能埋込みSQL)
CLOSE (実行可能埋込みSQL)
COMMIT (実行可能埋込みSQL)
CONNECT (実行可能埋込みSQL拡張機能)
CONTEXT ALLOCATE (実行可能埋込みSQL拡張機能)
CONTEXT FREE (実行可能埋込みSQL拡張機能)
CONTEXT USE (Oracle埋込みSQLディレクティブ)
DEALLOCATE DESCRIPTOR (埋込みSQL文)
DECLARE CURSOR (埋込みSQLディレクティブ)
DECLARE DATABASE (Oracle埋込みSQLディレクティブ)
DECLARE STATEMENT (埋込みSQLディレクティブ)
DECLARE TABLE (Oracle埋込みSQLディレクティブ)
DELETE (実行可能埋込みSQL)
DESCRIBE (実行可能埋込みSQL)
DESCRIBE DESCRIPTOR (実行可能埋込みSQL)
ENABLE THREADS (実行可能埋込みSQL拡張機能)
EXECUTE ...END-EXEC (実行可能埋込みSQL拡張機能)
EXECUTE (実行可能埋込みSQL)
EXECUTE DESCRIPTOR (実行可能埋込みSQL)
EXECUTE IMMEDIATE (実行可能埋込みSQL)
FETCH (実行可能埋込みSQL)
FETCH DESCRIPTOR (実行可能埋込みSQL)
FREE (実行可能埋込みSQL拡張機能)
GET DESCRIPTOR (実行可能埋込みSQL)
INSERT (実行可能埋込みSQL)
LOB APPEND (実行可能埋込みSQL拡張機能)
LOB ASSIGN (実行可能埋込みSQL拡張機能)
LOB CLOSE (実行可能埋込みSQL拡張機能)
LOB COPY (実行可能埋込みSQL拡張機能)
LOB CREATE TEMPORARY (実行可能埋込みSQL拡張機能)
LOB DESCRIBE (実行可能埋込みSQL拡張機能)
LOB DISABLE BUFFERING (実行可能埋込みSQL拡張機能)
LOB ENABLE BUFFERING (実行可能埋込みSQL拡張機能)
LOB ERASE (実行可能埋込みSQL拡張機能)
LOB FILE CLOSE ALL (実行可能埋込みSQL拡張機能)
LOB FILE SET (実行可能埋込みSQL拡張機能)
LOB FLUSH BUFFER (実行可能埋込みSQL拡張機能)
LOB FREE TEMPORARY (実行可能埋込みSQL拡張機能)
LOB LOAD (実行可能埋込みSQL拡張機能)
LOB OPEN (実行可能埋込みSQL拡張機能)
LOB READ (実行可能埋込みSQL拡張機能)
LOB TRIM (実行可能埋込みSQL拡張機能)
LOB WRITE (実行可能埋込みSQL拡張機能)
OPEN (実行可能埋込みSQL)
OPEN DESCRIPTOR (実行可能埋込みSQL)
PREPARE (実行可能埋込みSQL)
ROLLBACK (実行可能埋込みSQL)
SAVEPOINT (実行可能埋込みSQL)
SELECT (実行可能埋込みSQL)
SET DESCRIPTOR (実行可能埋込みSQL)
UPDATE (実行可能埋込みSQL)
VAR (Oracle埋込みSQLディレクティブ)
WHENEVER (埋込みSQLディレクティブ)
F
Pro*COBOL for Windows
Pro*COBOLアプリケーションのコンパイルおよびリンク
IDEの使用方法
Animatorの使用方法
COBOLおよびCBLLINKコマンド
COBSQLコマンド
サンプル・プログラム
デモ表の作成
サンプル・プログラムのビルド
サンプル・ファイル
索引