COBOL ファイルアクセスルーチン使用手引書
|
|
|
- ふみな かいじ
- 7 years ago
- Views:
Transcription
1 J2S Z0(A) NetCOBOL V10.0 COBOL ファイルアクセスルーチン使用手引書
2
3 まえがき COBOLファイルアクセスルーチンは COBOLファイルを操作するためのC 言語用のAPI(Application Program Interface) 関数群です この関数群を利用して COBOLファイルをアクセスするアプリケーションの開発 / 運用を行うことができます 製品の呼び名について本書では 製品の名称を以下のように略記しています あらかじめご了承ください 正式名称 Solaris 10 オペレーティングシステム Solaris 略称 本書の目的本書は COBOLのファイル入出力機能の知識とC 言語を用いたプログラミングについての知識がある方を対象に書かれています 本書では COBOLファイルアクセスルーチンを利用したCソースプログラムの作成と プログラムのリンク 実行方法について説明しています COBOLのファイル入出力機能については 以下のマニュアルを参照してください COBOL 文法書 NetCOBOL 使用手引書 メッセージ説明書 登録商標について本書に記載している登録商標を 以下に示します Sun Sun Microsystems Sunロゴ SolarisおよびすべてのSolarisに関連する商標およびロゴは 米国およびその他の国における米国 Sun Microsystems, Inc. の商標または登録商標です 2008 年 11 月 Copyright FUJITSU LIMITED i
4 ii
5 目次 第 1 章 COBOLファイルアクセスルーチンを利用する前に COBOLファイルアクセスルーチンとは 準備するもの 環境設定... 4 第 2 章使い方 Cソースプログラムの作成 Cソースプログラムの翻訳 オブジェクトファイルのリンク プログラムの実行... 9 第 3 章 API 関数と構造体 ファイルのオープン cobfa_open() ファイルのクローズ cobfa_close() レコードの読込み cobfa_rdkey() cobfa_rdnext() cobfa_rdrec() cobfa_rdrec64() レコードの書出し cobfa_wrkey() cobfa_wrnext() cobfa_wrrec() cobfa_wrrec64() レコードの削除 cobfa_delcurr() cobfa_delkey() cobfa_delrec() cobfa_delrec64() レコードの書換え cobfa_rewcurr() cobfa_rewkey() cobfa_rewrec() cobfa_rewrec64() レコードの位置決め cobfa_stkey() cobfa_strec() cobfa_strec64() レコードロックの解除 cobfa_release() ファイル情報の取得 cobfa_indexinfo() エラー番号の取得 cobfa_errno() 入出力状態の取得 cobfa_stat() 読込みレコード長の取得 cobfa_reclen() 相対レコード番号の取得 cobfa_recnum() iii
6 cobfa_recnum64() マルチスレッド環境下での排他制御 LOCK_cobfa() UNLOCK_cobfa() 使用する構造体 struct fa_keydesc struct fa_keylist struct fa_dictinfo ファイルの機能 ダミーファイル ファイルの高速処理 第 4 章エラー番号と入出力状態 エラー番号 入出力状態 第 5 章サンプルプログラム 行順ファイルの読込み 行順ファイルの読込みと索引ファイルの書出し 索引ファイルの情報の取得 第 6 章注意事項 制限事項 留意事項 付録 A リファレンス A.1 API 関数 A.2 API 関数で使用する構造体 索引 iv
7 第 1 章 COBOL ファイルアクセスルーチンを利用する前に ここでは COBOLファイルアクセスルーチンの紹介と 準備するもの 環境設定について説明します 1.1 COBOLファイルアクセスルーチンとは 1.2 準備するもの 1.3 環境設定
8 第 1 章 COBOL ファイルアクセスルーチンを利用する前に 1.1 COBOL ファイルアクセスルーチンとは COBOLファイルアクセスルーチンは COBOLファイルを操作するためのC 言語用のAPI(Application Program Interface) 関数群です これらの関数は COBOLランタイムシステムを呼び出すことによって ファイルの操作を行います COBOLファイルアクセスルーチンを使用することにより 以下の操作が実現できます COBOLアプリケーションで作成したファイルの読込み / 書換えなどの既存資産への入出力 COBOLで扱う以下の編成のファイルの創成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル COBOLアプリケーションとのファイル / レコードの排他 / 共用 既存の索引ファイルのファイル属性 / レコードキー構成の解析 2
9 1.2 準備するもの 1.2 準備するもの COBOLファイルアクセスルーチンを用いてアプリケーションソフトを開発する場合 開発用言語としてCコンパイラを用意する必要があります 3
10 第 1 章 COBOL ファイルアクセスルーチンを利用する前に 1.3 環境設定 COBOLをインストールすると COBOLファイルアクセスルーチンはCOBOLと同じディレクトリにインストールされます COBOLをインストールした後 環境変数 LD_LIBRARY_PATHにCOBOLインストールディレクトリが設定されていることを確認してください 設定されていなければ この環境変数にCOBOLのインストールディレクトリ (/opt/fjsvcbl/lib) を追加してください 4
11 第 2 章使い方 ここでは Cソースプログラムの作成 翻訳 オブジェクトファイルのリンク プログラムの実行について説明します 2.1 Cソースプログラムの作成 2.2 Cソースプログラムの翻訳 2.3 オブジェクトファイルのリンク 2.4 プログラムの実行
12 第 2 章使い方 2.1 C ソースプログラムの作成 COBOLファイルアクセスルーチンを用いたCソースプログラムをテキストエディタなどで作成します 当アクセスルーチンを使う上での注意事項については 第 6 章注意事項 を参照してください Cソースプログラムには以下の記述を入れ ヘッダファイルをインクルードすることを明示します #include "cobfa.h" 6
13 2.2 C ソースプログラムの翻訳 2.2 C ソースプログラムの翻訳 Cソースプログラムを翻訳します Cコンパイラに インクルードファイルを検索するパスを指定する翻訳オプションを指定してください この翻訳オプションに cobfa.h が格納されたディレクトリ (/opt/fjsvcbl/include) を指定します I directory directoryには cobfa.h が格納されたディレクトリ (/opt/fjsvcbl/include) を指定します [ 例 ] I /opt/fjsvcbl/include なおマルチスレッド環境下で動作するCソースプログラムを翻訳する場合には マルチスレッド対応の翻訳オプションを指定する必要があります 詳細については Cコンパイラのマニュアルを参照してください 7
14 第 2 章使い方 2.3 オブジェクトファイルのリンク オブジェクトファイルをリンクし 実行可能プログラムを作成します オブジェクトファイルをリンクするときは COBOLをインストールしたディレクトリの中にある 以下のどちらかのファイルをリンクする必要があります libcobfa.so( シングルスレッド環境下でプログラムを動作させる場合 ) librcobfa.so( マルチスレッド環境下でプログラムを動作させる場合 ) 8
15 2.4 プログラムの実行 2.4 プログラムの実行 作成したアプリケーションプログラムを実行します このとき 特に考慮すべきことはありません プログラムは COBOLアプリケーションとファイル / レコードを排他 / 共用できます 9
16 第 2 章使い方 10
17 第 3 章 API 関数と構造体 ここでは 以下について説明します 3.1 ファイルのオープン 3.2 ファイルのクローズ 3.3 レコードの読込み 3.4 レコードの書出し 3.5 レコードの削除 3.6 レコードの書換え 3.7 レコードの位置決め 3.8 レコードロックの解除 3.9 ファイル情報の取得 3.10 エラー番号の取得 3.11 入出力状態の取得 3.12 読込みレコード長の取得 3.13 相対レコード番号の取得 3.14 マルチスレッド環境下での排他制御 3.15 使用する構造体 3.16 ファイルの機能
18 第 3 章 API 関数と構造体 3.1 ファイルのオープン ここでは入出力機能のAPI 関数のうち ファイルをオープンするAPI 関数について説明します cobfa_open() cobfa_open() ファイルをオープンします long cobfa_open ( const char *fname, /* ファイル名 */ long openflgs, /* オープン属性 */ const struct fa_keylist *keylist, /* レコードキーリスト */ long reclen /* レコード長 */ ); 説明 ファイル名 fnameが指すファイルを オープン属性 openflgs レコード長 reclen レコードキーリストkeylistの情報をもとにオープンします ファイル名 fnameの指定により 以下の機能を使用することができます ダミーファイル COBOLアプリケーションのダミーファイルと同等の機能を実現させたい場合 ファイル名の末尾に,DUMMY を付加するか またはファイル名として,DUMMY を指定します 詳細は ダミーファイル を参照してください 大容量ファイルラージファイル対応したシステムで作成したファイルをアクセスする場合 ファイル名の末尾には,LFS を付加します これをLFS 指定と呼びます ファイルの高速処理レコード順ファイルおよび行順ファイルについて 使用範囲を限定することでアクセス性能を高速化することができます ファイルの高速処理を使用する場合 ファイル名の末尾に,BSAM を付加します 大容量ファイルの高速処理を使用する場合は ファイル名の末尾に,LBSAM を付加します 詳細は ファイルの高速処理 を参照してください オープン属性 openflgsの指定値には以下のa. からg. までの7つのカテゴリがあり これらをビットの論理和で結合して指定します カテゴリb. からg. までは省略可能です (* は省略値 ) a. オープンモード 記号定数 意味 対応するCOBOL 構文 FA_INPUT INPUTモード OPEN INPUT FA_OUTPUT OUTPUTモード OPEN OUTPUT FA_INOUT IOモード OPEN IO FA_EXTEND EXTENDモード OPEN EXTEND ファイル編成が行順ファイル (FA_LSEQFILE) の場合 オープンモードにIOモード (FA_INOUT) を指定することはできません 指定した場合はエラーになります 12
19 3.1 ファイルのオープン b. ファイル編成 記号定数 意味 対応するCOBOL 構文 * FA_SEQFILE レコード順ファイル ORGANIZATION IS SEQUENTIAL FA_LSEQFILE 行順ファイル ORGANIZATION IS LINE SEQUENTIAL FA_RELFILE 相対ファイル ORGANIZATION IS RELATIVE FA_IDXFILE 索引ファイル ORGANIZATION IS INDEXED c. レコード形式 記号定数 意味 対応するCOBOL 構文 * FA_FIXLEN 固定長形式 RECORD CONTAINS integer CHARACTERS FA_VARLEN 可変長形式 RECORD IS VARYING IN SIZE d. 呼出し法 記号定数 意味 対応するCOBOL 構文 * FA_SEQACC 順呼出し ACCESS MODE IS SEQUENTIAL FA_RNDACC 乱呼出し ACCESS MODE IS RANDOM FA_DYNACC 動的呼出し ACCESS MODE IS DYNAMIC ファイル編成が以下のどちらかの場合 呼出し法に順呼出し (FA_SEQACC) 以外を指定することはできません 指定した場合はエラーになります 行順ファイル (FA_LSEQFILE) または レコード順ファイル (FA_SEQFILE) e. ロックモード 記号定数 意味 対応するCOBOL 構文 FA_AUTOLOCK 自動ロック LOCK MODE IS AUTOMATIC FA_MANULOCK 手動ロック LOCK MODE IS MANUAL FA_EXCLLOCK 排他ロック LOCK MODE IS EXCLUSIVE または OPEN WITH LOCK オープンモードがOUTPUTモード (FA_OUTPUT) の場合 ロックモードに排他ロック (FA_EXCLLOCK) を指定したものとして扱います オープンモードがINPUTモード (FA_INPUT) の場合 ロックモードに自動ロック (FA_AUTOLOCK) または手動ロック (FA_MANULOCK) を指定することはできません 指定した場合は無効になります オープンモードがINPUTモード (FA_INPUT) の場合 ロックモードのデフォルト値として 共用モードでファイルをオープンします 読込み時は レコードロックの指定が無効になります オープンモードがINPUTモード (FA_INPUT) 以外の場合 ロックモードのデフォルト値は排他ロック (FA_EXCLLOCK) になります ファイル編成が以下のどちらかの場合 ロックモードに手動ロック (FA_MANULOCK) を指定することはできません 指定した場合はエラーになります 行順ファイル (FA_LSEQFILE) または レコード順ファイル (FA_SEQFILE) 13
20 第 3 章 API 関数と構造体 f. 不定ファイル 記号定数 意味 対応するCOBOL 構文 * FA_NOTOPT 不定ファイルでない SELECT filename FA_OPTIONAL 不定ファイル SELECT OPTIONAL filename g. 動作コード系 記号定数 意味 * FA_ASCII ファイルはSJISまたはJIS8でエンコードした文字データを持つ FA_UCS2 ファイルはUCS2でエンコードした文字データを持つ ( 注 ) FA_UTF8 ファイルはUTF8でエンコードした文字データを持つ 注 : エンディアンはシステムに依存し ビッグエンディアンとなります 動作コード系は 行順ファイルが持つ文字データのエンコード種別を指定するものです 行順ファイルは ファイルの構造がエンコード種別により異なるため この指定が必要になります 動作コード系は ファイル編成が行順ファイル (FA_LSEQFILE) のときだけ指定することができます その他のファイル編成は ファイルの構造がエンコード種別に依存しないため 動作コード系を指定する必要はありません 動作モードがUnicodeのCOBOLアプリケーションで扱う行順ファイルには FA_UCS2 またはFA_UTF8のいずれかを指定します レコードのデータ項目が日本語項目の場合には前者を それ以外の場合は後者を指定します 動作モードがUnicodeでないCOBOLアプリケーションで扱う行順ファイルには FA_ASCIIを指定します レコード形式が固定長形式 (FA_FIXLEN) の場合 レコード長 reclenを固定レコード長として扱います レコード形式が可変長形式 (FA_VARLEN) の場合 レコード長 reclenを最大レコード長として扱います レコード長はFA_NRECSIZE(32760) を超えてはいけません レコードキーリストkeylistは ファイル編成が索引ファイル (FA_IDXFILE) である場合にだけ意味を持ちます この場合 keylistはオープンするファイルの主レコードキー 副レコードキーの構成として有効になります struct fa_keylist 型については struct fa_keylist を参照してください 索引ファイルのオープンで keylistにnullポインタを指定した場合 当関数は既存のファイルの索引構成とレコード形式 レコード長を認識してオープンします このとき レコード形式の指定とレコード長の指定は無効になります 14
21 3.1 ファイルのオープン 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 1 以上 成功 当関数の実行が成功しました 入出力状態が 状況を示すコードを保持していることがあります この復帰値は オープンに成功したファイルのファイルディスクリプタの値です ただし ファイルディスクリプタはファイルのオープン時にOSが返却したファイルハンドルの値ではありませんので 注意してください 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号 入出力状態 説明 FA_ENOERR 0 関数の実行は成功しました FA_ENOERR 5 不定ファイルが存在しなかったため 仮想的にファイルをオープンしました または オープンモードがINPUTモード (FA_INPUT) 以外であ る場合 ファイルを新規に創成しました 15
22 第 3 章 API 関数と構造体 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EBADACC 90 指定したファイル編成 呼出し法 オープンモードの組み合わせでは実行することができません FA_EFNAME 35 ファイルが存在しません FA_EFLOCKED 93 ファイルはすでに排他でオープンされています FA_EFNAME 90 ファイル名が正しくありませんでした または ファイルへのアクセスが失敗しました FA_EFNAME 91 ファイル名を指定していません FA_EBADFLAG 39 指定したファイル編成やレコード形式などの属性と 既存ファイルの構成が異なっています FA_EBADKEY 39 指定したレコードキーの情報と 既存の索引ファイルのキーの構成が異なっています FA_EBADKEY 90 指定したレコードキーの情報が正しくありません FA_EBADLENG 39 指定したレコード長と 既存ファイルのレコード長が異なっています FA_EBADFILE 90 指定した索引ファイルは 内部情報が破壊しています または ファイル編成が索引ファイルではありません 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください 16
23 3.2 ファイルのクローズ 3.2 ファイルのクローズ ここでは入出力機能のAPI 関数のうち ファイルをクローズするAPI 関数について説明します cobfa_close() cobfa_close() ファイルをクローズします long cobfa_close ( long fd /* ファイルディスクリプタ */ ); 説明 ファイルディスクリプタ fd が指すファイルをクローズします 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました 17
24 第 3 章 API 関数と構造体 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 42 不正なファイルディスクリプタを指定しています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください 18
25 3.3 レコードの読込み 3.3 レコードの読込み ここでは入出力機能のAPI 関数のうち ファイルが持つレコードを読み込むAPI 関数について説明します cobfa_rdkey() cobfa_rdnext() cobfa_rdrec() cobfa_rdrec64() cobfa_rdkey() 任意のレコードキーの値で示すレコードを読み込みます ( 乱読込み ) long cobfa_rdkey ( long fd, /* ファイルディスクリプタ */ long readflgs, /* 読込み属性 */ char *recarea, /* レコード域 */ const struct fa_keydesc *keydesc, /* レコードキー構成指定 */ long keynum /* レコードキー番号指定 */ ); 説明 ファイルディスクリプタfdが指すファイルに対して レコード域 recareaの任意のレコードキーの値でレコードを指定します 指定されたレコードを読み込み レコード域 recareaに格納します 読込み属性 readflgsの指定値には以下の2つのカテゴリがあり これらをビットの論理和で結合して指定します これらは省略可能です (* は省略値 ) a. 読込みモード 記号定数 意味 * FA_EQUAL 指定したレコードキーの値に該当するレコードを読み込む b. レコードロックフラグ 記号定数 意味 対応するCOBOL 構文 FA_LOCK ロックありで読み込む READ WITH LOCK FA_NOLOCK ロックなしで読み込む READ WITH NO LOCK レコードロックフラグのデフォルト値は オープン時のロックモードの指定により異なります ロックモードが自動ロック (FA_AUTOLOCK) である場合はデフォルト値がロックあり (FA_LOCK) となり それ以外の場合のデフォルト値はロックなし (FA_NOLOCK) となります 任意のレコードキーの指定は レコードキー構成指定 keydescで行います struct fa_keydesc 型については struct fa_keydesc を参照してください このレコードキー構成指定にNULLを指定した場合は 任意のレコードキーの指定としてレコードキー番号指定 keynumが有効になります 主レコードキーを指定するには レコードキー番号指定に1を指定します 副レコードキーを指定するには レコードキー番号指定に2 以上の値を指定し 19
26 第 3 章 API 関数と構造体 ます この値は索引ファイルを創成したときの副レコードキーを宣言したときの並びの順番に対応しています 最初の副レコードキーなら2を 2 番目の副レコードキーなら3を それ以降もこれらと同様に指定します 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は 下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 入出力状態が 状況を示すコードを保持していることがあります 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号 入出力状態 説明 FA_ENOERR 0 関数の実行は成功しました FA_ENOERR 2 読み込んだレコードの参照キーの値が 次に続くレコードの参照キー の値と同じです 20
27 3.3 レコードの読込み 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 47 指定したファイルは INPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または 呼出し法でファイルがオープンしてあります FA_EBADFLAG 90 当関数を実行することができない読込みモードを指定しています または その他のフラグの指定が正しくありません FA_ENOREC 23 任意のレコードキーの値が示すレコードが存在しません FA_EBADKEY 90 指定したレコードキー構成またはレコードキー番号は存在しません または 正しくありません FA_ELOCKED 99 主レコードキーの値で指定したレコードはロックされています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_rdnext() レコードを順に読み込みます ( 順読込み ) long cobfa_rdnext ( long fd, /* ファイルディスクリプタ */ long readflgs, /* 読込み属性 */ char *recarea /* レコード域 */ ); 説明 ファイルディスクリプタfdが示すファイルで 位置付けられているレコードの次 ( または前 ) のレコードを読み込み レコード域 recareaに格納します 読込み属性 readflgsの指定値には以下の2つのカテゴリがあり これらをビットの論理和で結合して指定します これらは省略可能です (* は省略値 ) a. 読込みモード 記号定数 意味 対応するCOBOL 構文 * FA_NEXT 次のレコードを読み込む READ NEXT RECORD FA_PREV 前のレコードを読み込む READ PREVIOUS RECORD ファイル編成が以下のどちらかの場合 読込みモードに前のレコード (FA_PREV) を指定することはできません 行順ファイル (FA_LSEQFILE) または レコード順ファイル (FA_SEQFILE) 21
28 第 3 章 API 関数と構造体 b. レコードロックフラグ 記号定数 意味 対応するCOBOL 構文 FA_LOCK ロックありで読み込む READ WITH LOCK FA_NOLOCK ロックなしで読み込む READ WITH NO LOCK レコードロックフラグのデフォルト値は オープン時のロックモードの指定により異なります ロックモードが自動ロック (FA_AUTOLOCK) の場合は デフォルト値がロックあり (FA_LOCK) となり それ以外の場合のデフォルト値はロックなし (FA_NOLOCK) となります 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です ただし ファイルの位置付けが不定でないことが必須条件となり ます : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 入出力状態が 状況を示すコードを保持していることがあります 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号 入出力状態 説明 FA_ENOERR 0 関数の実行は成功しました FA_ENOERR 2 読み込んだレコードの参照キーの値が 次に続くレコードの参照キー の値と同じです 22
29 3.3 レコードの読込み 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 47 指定したファイルは INPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができない呼出し法で ファイルがオープンしてあります FA_EENDFILE 10 ファイル終了条件が発生しました FA_EBADFLAG 90 当関数を実行することができない読込みモードを指定しています または その他のフラグの指定が正しくありません FA_ENOCURR 46 レコードへの位置付けが不定でした FA_ELOCKED 99 順読込みによって位置付けようとしたレコードはすでにロックされています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_rdrec() 相対レコード番号が示すレコードを読み込みます ( 乱読込み ) long cobfa_rdrec ( long fd, /* ファイルディスクリプタ */ long readflgs, /* 読込み属性 */ char *recarea, /* レコード域 */ unsigned long recnum /* 相対レコード番号 */ ); 説明 ファイルディスクリプタfdが示すファイルで 相対レコード番号 recnumが指すレコードを読み込み レコード域 recareaに格納します 読込み属性 readflgsの指定値には 以下の2つのカテゴリがあり これらをビットの論理和で結合して指定します これらは省略可能です (* は省略値 ) a. 読込みモード 記号定数 意味 * FA_EQUAL 指定した相対レコード番号のレコードを読み込む b. レコードロックフラグ 記号定数 意味 対応するCOBOL 構文 FA_LOCK ロックありで読み込む READ WITH LOCK FA_NOLOCK ロックなしで読み込む READ WITH NO LOCK レコードロックフラグのデフォルト値は オープン時のロックモードの指定により異なります ロックモードが自動ロック (FA_AUTOLOCK) の場合は デフォルト値がロックあり (FA_LOCK) となり それ以外の場合のデフォルト値はロックなし (FA_NOLOCK) となります 23
30 第 3 章 API 関数と構造体 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は 下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 47 指定したファイルは INPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または呼出し法で ファイルがオープンしてあります FA_EBADFLAG 90 当関数を実行することができない読込みモードを指定しています または その他のフラグの指定が正しくありません FA_ENOREC 23 相対レコード番号が示すレコードが存在しません FA_ELOCKED 99 相対レコード番号で指定したレコードはロックされています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください 24
31 3.3 レコードの読込み cobfa_rdrec64() 64 ビットの相対レコード番号が示すレコードを読み込みます ( 乱読込み ) long cobfa_rdrec64 ( long fd, /* ファイルディスクリプタ */ long readflgs, /* 読込み属性 */ char *recarea, /* レコード域 */ unsigned long long recnum /* 相対レコード番号 */ ); 説明 オープン時にLFS 指定した相対ファイルに対して cobfa_rdrec() と同等の動作を行います cobfa_rdrec() との相違点を以下に示します オープン時にLFS 指定したファイルだけで利用可能である 相対レコード番号が32ビットの整数型から64ビットの整数型に拡張してある 機能や動作については以下を参照してください cobfa_rdrec() 25
32 第 3 章 API 関数と構造体 3.4 レコードの書出し ここでは入出力機能のAPI 関数のうち ファイルにレコードを書き出すAPI 関数について説明します cobfa_wrkey() cobfa_wrnext() cobfa_wrrec() cobfa_wrrec64() cobfa_wrkey() 主レコードキーの値で指定したレコードを書き出します ( 乱書出し ) long cobfa_wrkey ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen /* 書出しレコード長 */ ); 説明 ファイルディスクリプタfdが示すファイルで レコード域 recareaが持つ主レコードキーの値が指すレコードを レコード域が持つ内容で書き出します ファイルが可変長形式であるときだけ 書出しレコード長 reclenが有効になります 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 26
33 3.4 レコードの書出し 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EDUPL 22 書出ししようとしたレコードの主レコードキーまたは副レコードキーの値が すでにファイル中に存在しています しかし 主レコードキーまたは副レコードキーは重複を許可していません FA_EBADLENG 44 指定した書出しレコード長の値が指定可能な範囲を超えています FA_ENOTOPEN 48 指定したファイルは OUTPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_wrnext() レコードを順に書き出します ( 順書出し ) long cobfa_wrnext ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen /* 書出しレコード長 */ ); 説明 ファイルディスクリプタfdが示すファイルで レコード域 recareaが持つ内容で レコードを順に書き出します ファイルが可変長形式の場合だけ 書出しレコード長 reclenが有効になります 27
34 第 3 章 API 関数と構造体 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EDUPL 22 書き出そうとしたレコードの主レコードキーまたは副レコードキーの値がすでにファイル中に存在しています しかし 主レコードキーまたは副レコードキーは重複を許可していません FA_EBADLENG 44 指定した書出しレコード長の値が指定可能な範囲を超えています FA_ENOTOPEN 48 指定したファイルは OUTPUTモード以外 かつ EXTENDモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください 28
35 3.4 レコードの書出し cobfa_wrrec() 相対レコード番号で指定したレコードを書き出します ( 乱書出し ) long cobfa_wrrec ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen, /* 書出しレコード長 */ unsigned long recnum /* 相対レコード番号 */ ); 説明 ファイルディスクリプタfdが示すファイルで 相対レコード番号 recnumが指すレコードを レコード域 recareaが持つ内容で書き出します ファイルが可変長形式の場合だけ 書出しレコード長 reclenが有効になります 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示 すコードを保持しています 29
36 第 3 章 API 関数と構造体 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EDUPL 22 すでに存在する相対レコード番号を使って書出しを行おうとしました FA_EBADLENG 44 指定した書出しレコード長の値が指定可能な範囲を超えています FA_ENOTOPEN 48 指定したファイルは OUTPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_wrrec64() 64 ビットの相対レコード番号で指定したレコードを書き出します ( 乱書出し ) long cobfa_wrrec64 ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen, /* 書出しレコード長 */ unsigned long long recnum /* 相対レコード番号 */ ); 説明 オープン時にLFS 指定した相対ファイルに対して cobfa_wrrec() と同等の動作を行います cobfa_wrrec() との相違点を以下に示します オープン時にLFS 指定したファイルだけで利用可能である 相対レコード番号が32ビットの整数型から64ビットの整数型に拡張してある 機能や動作については以下を参照してください cobfa_wrrec() 30
37 3.5 レコードの削除 3.5 レコードの削除 ここでは入出力機能のAPI 関数のうち ファイルが持つレコードを削除するAPI 関数について説明します cobfa_delcurr() cobfa_delkey() cobfa_delrec() cobfa_delrec64() cobfa_delcurr() 順読込みしたレコードを削除します ( 順削除 ) long cobfa_delcurr ( long fd /* ファイルディスクリプタ */ ); 説明 ファイルディスクリプタfdが示すファイルで 順読込みによって位置付けられているレコード ( カレントレコード ) を削除します 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です ただし レコードが順読込みによって位置付けられていることが 必須条件となります : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示 すコードを保持しています 31
38 第 3 章 API 関数と構造体 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 49 指定したファイルは IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または 呼出し法でファイルがオープンしてあります FA_ELOCKED 99 順読込みによって位置付けられているレコードはロックされています FA_ENOCURR 43 指定したファイルでの順読込みが成功していませんでした 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_delkey() 主レコードキーの値が示すレコードを削除します ( 乱削除 ) long cobfa_delkey ( long fd, /* ファイルディスクリプタ */ const char *recarea /* レコード域 */ ); 説明 ファイルディスクリプタfdが示すファイルで レコード域 recareaの内容が持つ主レコードキーの値が指すレコードを削除します 32
39 3.5 レコードの削除 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 49 指定したファイルは IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または 呼出し法でファイルがオープンしてあります FA_ELOCKED 99 主レコードキーの値で指定したレコードはロックされています FA_ENOREC 23 主レコードキーの値で指定したレコードは存在しません 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください 33
40 第 3 章 API 関数と構造体 cobfa_delrec() 相対レコード番号が示すレコードを削除します ( 乱削除 ) long cobfa_delrec ( long fd, /* ファイルディスクリプタ */ unsigned long recnum /* 相対レコード番号 */ ); 説明 ファイルディスクリプタfdが示すファイルで 相対レコード番号 recnumが指すレコードを削除します 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 34
41 3.5 レコードの削除 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 49 指定したファイルは IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または 呼出し法でファイルがオープンしてあります FA_ELOCKED 99 相対レコード番号で指定したレコードはロックされています FA_ENOREC 23 相対レコード番号で指定したレコードは存在しません 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_delrec64() 64 ビットの相対レコード番号が示すレコードを削除します ( 乱削除 ) long cobfa_delrec64 ( long fd, /* ファイルディスクリプタ */ unsigned long long recnum /* 相対レコード番号 */ ); 説明 オープン時にLFS 指定した相対ファイルに対して cobfa_delrec() と同等の動作を行います cobfa_delrec() との相違点を以下に示します オープン時にLFS 指定したファイルだけで利用可能である 相対レコード番号が32ビットの整数型から64ビットの整数型に拡張してある 機能や動作については以下を参照してください cobfa_delrec() 35
42 第 3 章 API 関数と構造体 3.6 レコードの書換え ここでは入出力機能のAPI 関数のうち ファイルが持つレコードを書き換えるAPI 関数について説明します cobfa_rewcurr() cobfa_rewkey() cobfa_rewrec() cobfa_rewrec64() cobfa_rewcurr() 順読込みしたレコードを書き換えます ( 順更新 ) long cobfa_rewcurr ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen /* 書換えレコード長 */ ); 説明 ファイルディスクリプタfdが示すファイルで 順読込みによって位置付けられているレコード ( カレントレコード ) を レコード域 recareaの内容で書き換えます ファイルが可変長形式であるときだけ 書換えレコード長 reclenの指定が有効になります ファイル編成がレコード順ファイル (FA_SEQFILE) のときは元のレコード長を変えることはできません 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です ただし レコードが順読込みによって位置付けられていることが 必須条件となります : 当関数の実行はできません 36
43 3.6 レコードの書換え 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EDUPL 22 書き換えようとしたレコードの主レコードキーまたは 副レコードキーの値がすでにファイル中に存在しています しかし 主レコードキーまたは副レコードキーは重複を許可していません FA_EBADLENG 44 指定した書換えレコード長の値が指定可能な範囲を超えています 注 : この表にあるステータス以外に発生するものは cobfa_delcurr() の発生するス テータスを参照してください cobfa_rewkey() 主レコードキーの値が示すレコードを書き換えます ( 乱更新 ) long cobfa_rewkey ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen /* 書換えレコード長 */ ); 説明 ファイルディスクリプタfdが示すファイルの レコード域 recareaの中に持つ主レコードキーの値が指すレコードを レコード域 recareaの内容で書き換えます ファイルが可変長形式であるときだけ 書換えレコード長 reclenの指定が有効になります 37
44 第 3 章 API 関数と構造体 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EDUPL 22 重複を許可していないレコードキーに対して すでに存在するレコードキーの値を持つレコード内容で書き換えようとしました FA_EBADLENG 44 指定した書換えレコード長の値が指定可能な範囲を超えています 注 : この表にあるステータス以外に発生するものは cobfa_delkey() の発生するステ ータスを参照してください 38
45 3.6 レコードの書換え cobfa_rewrec() 相対レコード番号が示すレコードを書き換えます ( 乱更新 ) long cobfa_rewrec ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen, /* 書換えレコード長 */ unsigned long recnum /* 相対レコード番号 */ ); 説明 ファイルディスクリプタfdが示すファイルの 相対レコード番号 recnumのレコードを レコード域 recareaの内容で書き換えます ファイルが可変長形式であるときだけ 書換えレコード長 reclenの指定が有効になります 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態 が 状況を示すコードを保持しています 39
46 第 3 章 API 関数と構造体 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号 入出力状態 説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_EBADLENG 44 指定した書換えレコード長の値が指定可能な範囲を超えています 注 : この表にあるステータス以外に発生するものは cobfa_delrec() の発生するステ ータスを参照してください cobfa_rewrec64() 64 ビットの相対レコード番号が示すレコードを書き換えます ( 乱更新 ) long cobfa_rewrec64 ( long fd, /* ファイルディスクリプタ */ const char *recarea, /* レコード域 */ long reclen, /* 書換えレコード長 */ unsigned long long recnum /* 相対レコード番号 */ ); 説明 オープン時にLFS 指定した相対ファイルに対して cobfa_rewrec() と同等の動作を行います cobfa_rewrec() との相違点を以下に示します オープン時にLFS 指定したファイルだけで利用可能である 相対レコード番号が32ビットの整数型から64ビットの整数型に拡張してある 機能や動作については以下を参照してください cobfa_rewrec() 40
47 3.7 レコードの位置決め 3.7 レコードの位置決め ここでは入出力機能のAPI 関数のうち ファイルが持つレコードをアクセスする位置を決めるAPI 関数について説明します cobfa_stkey() cobfa_strec() cobfa_strec64() cobfa_stkey() 任意のレコードキーの値が示すレコードに位置付けます long cobfa_stkey ( long fd, /* ファイルディスクリプタ */ long stflgs, /* 位置付け属性 */ const char *recarea, /* レコード域 */ const struct fa_keydesc *keydesc, /* レコードキー構成指定 */ long keynum, /* レコードキー番号指定 */ long keyleng /* 有効キー長 */ ); 説明 ファイルディスクリプタfdが示すファイルで レコード域 recareaの中に持つ任意のレコードキーの値に関連するレコードに位置付けを行います また 指定した任意のレコードキーを 以降の順読込みでの参照キーとして宣言します 位置付け属性 stflgsの指定値には以下の2つのカテゴリがあり これらをビットの論理和で結合して指定します これらは省略可能です (* は省略値 ) a. 位置付けモード 記号定数 意味 対応するCOBOL 構文 FA_FIRST 先頭レコード START FIRST RECORD * FA_EQUAL レコードキーの値と START KEY IS = 等しいレコード FA_GREAT レコードキーの値を START KEY IS > 超えるレコード FA_GTEQ レコードキーの値以 START KEY IS >= 上のレコード FA_LESS レコードキーの値よ START KEY IS < り小さいレコード FA_LTEQ レコードキーの値以下のレコード START KEY IS <= 41
48 第 3 章 API 関数と構造体 b. 逆順読込みフラグ 記号定数 意味 対応するCOBOL 構文 * なし 順読込み時に論理的 に順方向に読み込む FA_REVORD 順読込み時に論理的に逆方向に読み込む START WITH REVERSED ORDER 逆順読込みフラグのデフォルト値は 正順読込みになります 位置付けモードがレコードキーの値を超過 (FA_GREAT) またはレコードキーの値以上 (FA_GTEQ) の場合 逆順読込みフラグ (FA_REVORD) を指定することはできません 逆順読込みフラグの指定は 乱読込み 位置付け ファイルのクローズを行ったり ファイル終了条件が発生したりすることで無効になります 任意のレコードキーの指定は レコードキー構成指定 keydescで行います struct fa_keydesc 型については struct fa_keydesc を参照してください このレコードキー構成指定にNULLを指定した場合は 任意のレコードキーの指定としてレコードキー番号指定 keynumが有効になります 主レコードキーを指定するには レコードキー番号指定に1を指定します 副レコードキーを指定するには レコードキー番号指定に2 以上の値を指定します この値は索引ファイルを創成したときの副レコードキーを宣言したときの並びの順番に対応しています 最初の副レコードキーなら2を 2 番目の副レコードキーなら3を それ以上もこれらと同様に指定します 有効キー長 keylengは 有効な参照キーの長さを短くするために使います 有効な参照キーの長さを短くしない通常の場合は 0を指定します この場合 任意のレコードキーの全体が参照キーとなります 有効な参照キーの長さを短くする場合は 1 以上の値を指定します この値は キーパートの並びを連続した先頭からのキーの長さをバイト単位で指定します 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 42
49 3.7 レコードの位置決め 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 47 指定したファイルは INPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または 呼出し法でファイルがオープンしてあります FA_EBADFLAG 90 当関数を実行することができない位置付けモードを指定しています または その他のフラグの指定が正しくありません FA_ENOREC 23 指定した条件に該当するレコードが存在しませんでした FA_EBADKEY 90 指定したレコードキー構成またはレコードキー番号は存在しません または 正しくありません 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_strec() 相対レコード番号が示すレコードに位置付けます long cobfa_strec ( long fd, /* ファイルディスクリプタ */ long stflgs, /* 位置付け属性 */ unsigned long recnum /* 相対レコード番号 */ ); 43
50 第 3 章 API 関数と構造体 説明 ファイルディスクリプタfdが示すファイルで 相対レコード番号 recnumの値に関連するレコードに位置付けを行います 位置付け属性 stflgsの指定値には以下の1つのカテゴリがあります これは省略可能です (* は省略値 ) a. 位置付けモード 記号定数 意味 対応するCOBOL 構文 * FA_EQUAL recnumと等しいレコード START KEY IS = FA_GREAT recnumを超えるレコード START KEY IS > FA_GTEQ recnum 以上のレコード START KEY IS >= FA_LESS recnumより小さいレコード START KEY IS < FA_LTEQ recnum 以下のレコード START KEY IS <= 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 44
51 3.7 レコードの位置決め 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 47 指定したファイルは INPUTモード以外 かつ IOモード以外でオープンしてあります または 不正なファイルディスクリプタを指定しています FA_EBADACC 90 当関数を実行することができないファイル編成または 呼出し法でファイルがオープンしてあります FA_EBADFLAG 90 当関数を実行することができない位置付けモードを指定しています または その他のフラグの指定が正しくありません FA_ENOREC 23 指定した条件に該当するレコードが存在しませんでした 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください cobfa_strec64() 64 ビットの相対レコード番号が示すレコードに位置付けます long cobfa_strec64 ( long fd, /* ファイルディスクリプタ */ long stflgs, /* 位置付け属性 */ unsigned long long recnum /* 相対レコード番号 */ ); 説明 オープン時にLFS 指定した相対ファイルに対して cobfa_strec() と同等の動作を行います cobfa_strec() との相違点を以下に示します オープン時にLFS 指定したファイルだけで利用可能である 相対レコード番号が32ビットの整数型から64ビットの整数型に拡張してある 機能や動作については以下を参照してください cobfa_strec() 45
52 第 3 章 API 関数と構造体 3.8 レコードロックの解除 ここでは入出力機能のAPI 関数のうち ファイルが持つロック中のレコードをロック解除するAPI 関数について説明します cobfa_release() cobfa_release() 指定するファイルのすべてのレコードロックを解除します long cobfa_release ( long fd /* ファイルディスクリプタ */ ); 説明 ファイルディスクリプタ fd が示すファイルで すべてのレコードロックを解除します 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示 すコードを保持しています 46
53 3.8 レコードロックの解除 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 ( 注 ) エラー番号 入出力状態 説明 FA_ENOTOPEN 90 ファイルのオープン時に取得したものでない不正なファイルディスクリプタを指定しています 注 : これらは代表的なステータスです これ以外のステータスについては 4.1 エラー番号 と 4.2 入出力状態 を参照してください 47
54 第 3 章 API 関数と構造体 3.9 ファイル情報の取得 ここでは ファイルの情報を取得する機能を持つAPI 関数について説明します cobfa_indexinfo() cobfa_indexinfo() 索引ファイルの属性またはレコードキーの構成を取得します long cobfa_indexinfo ( long fd, /* ファイルディスクリプタ */ struct fa_keydesc *buffer, /* 取得結果の格納域 */ long funccode /* 機能コード */ ); 説明 ファイルディスクリプタfdが示す索引ファイルに関する情報を 取得結果の格納域 buffer 内に設定します 取得する情報の種類は機能コードfunccodeへの指定で選択します 機能コードに0を指定すると 取得結果の格納域にstruct fa_dictinfo 型でファイルの属性を格納します struct fa_dictinfo 型については struct fa_dictinfo を参照してください 機能コードに1 以上を指定すると 取得結果の格納域にstruct fa_keydesc 型で主レコードキーまたは副レコードキーの構成を格納します 機能コードの値に1を指定するとき主レコードキーの構成を取得し 2 以上では副レコードキーの構成を取得します この値は 索引ファイルを創成したときの副レコードキーを宣言したときの並びの順番に対応しています 最初の副レコードキーなら2を 2 番目の副レコードキーなら3を これ以降もこれらと同様に指定します struct fa_keydesc 型については struct fa_keydesc を参照してください 実行可能な条件当関数の機能を実行することができるファイル編成 オープンモードおよび呼出し法は それぞれ下表のとおりです オープン属性 種別 実行の可否 ファイル編成 行順ファイル レコード順ファイル 相対ファイル 索引ファイル オープンモード INPUTモード OUTPUTモード IOモード EXTENDモード 呼出し法 順呼出し 乱呼出し 動的呼出し : 当関数の実行が可能です : 当関数の実行はできません 48
55 3.9 ファイル情報の取得 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 当関数の実行が成功しました 1 失敗 当関数の実行が失敗しました エラー番号と入出力状態が 状況を示すコードを保持しています 発生するステータス当関数の呼出しによって発生するステータスは 下表のようになります 関数の実行の成功時 エラー番号入出力状態説明 FA_ENOERR 0 関数の実行は成功しました 関数の実行の失敗時 エラー番号 入出力状態 説明 FA_ENOTOPEN 90 不正なファイルディスクリプタを指定しています FA_EBADACC 90 指定したファイルは索引ファイルでありません 49
56 第 3 章 API 関数と構造体 3.10 エラー番号の取得 ここでは 入出力の状況を取得する機能のAPIのうち エラー番号の取得を行うAPI 関数について説明します cobfa_errno() cobfa_errno() エラー番号を返却します long cobfa_errno ( void /* 引数なし */ ); 説明 入出力のAPI 関数またはファイル情報取得のAPI 関数を実行した結果 起こったエラーを識別する番号を返却します 実行可能な条件つねに呼出し可能 復帰値当関数の復帰値は 下表のようになります 復帰値 状態 説明 FA_ENOERR 成功 入出力機能の実行またはファイル情報取得の実行が成功したことを意味します FA_ENOERR 以外 失敗 入出力機能の実行またはファイル情報取得の実行が失敗したことを意味します ( 注 ) 注 : 復帰値の詳細については 4.1 エラー番号 を参照してください 50
57 3.11 入出力状態の取得 3.11 入出力状態の取得 ここでは 入出力の状況を取得する機能のAPIのうち 入出力状態の取得を行うAPI 関数について説明します cobfa_stat() cobfa_stat() 入出力状態を返却します long cobfa_stat ( void /* 引数なし */ ); 説明 入出力の API 関数またはファイル情報取得の API 関数を実行した結果の入出力状態を返却します 実行可能な条件つねに呼出し可能 復帰値入出力状態を返却します 入出力状態の種類とその詳細については NetCOBOL 使用手引書 の 付録 B 入出力状態一覧 を参照してください 51
58 第 3 章 API 関数と構造体 3.12 読込みレコード長の取得 ここでは 入出力の状況を取得する機能のAPIのうち 読込みレコード長の取得を行うAPI 関数について説明します cobfa_reclen() cobfa_reclen() レコード長を返却します long cobfa_reclen ( void /* 引数なし */ ); 説明 レコード形式が可変長であるファイルを扱うとき 入出力のAPI 関数のうち 以下の関数の実行が成功したあと 読み込んだレコードの実際の長さを返却します 読込み失敗や他の入出力機能の実行後は 不定な値を返却します cobfa_rdnext() cobfa_rdrec() cobfa_rdkey() 実行可能な条件つねに呼出し可能 復帰値読み込んだレコードの長さ ( バイト数 ) 52
59 3.13 相対レコード番号の取得 3.13 相対レコード番号の取得 ここでは 入出力の状況を取得する機能のAPIのうち 相対レコード番号の取得を行うAPI 関数について説明します cobfa_recnum() cobfa_recnum64() cobfa_recnum() 相対レコード番号を返却します unsigned long cobfa_recnum ( void /* 引数なし */ ); 説明 相対ファイルで 入出力のAPI 関数のうち 以下の関数の実行が成功したあと 現在位置付けられているレコードの相対レコード番号を返却します cobfa_rdnext() cobfa_rdrec() 読込みが失敗した後や 相対ファイル以外のファイル編成での入出力機能の実行後には不定な値を返却します 実行可能な条件つねに呼出し可能 復帰値相対ファイルで 現在位置付けられている相対レコード番号 cobfa_recnum64() 64 ビットの相対レコード番号を返却します unsigned long long cobfa_recnum64 ( void /* 引数なし */ ); 説明 オープン時にLFS 指定した相対ファイルで 入出力のAPI 関数のうち 以下の関数の実行が成功したあと 現在位置付けられているレコードの相対レコード番号を返却します cobfa_rdnext() cobfa_rdrec64() 読込みが失敗した後や 相対ファイル以外のファイル編成での入出力機能の実行後には不定な値を返却します 53
60 第 3 章 API 関数と構造体 実行可能な条件つねに呼出し可能 復帰値相対ファイルで 現在位置付けられている相対レコード番号 54
61 3.14 マルチスレッド環境下での排他制御 3.14 マルチスレッド環境下での排他制御 マルチスレッド環境下では 複数のスレッドが同時にCOBOLランタイムシステムによるファイルアクセスを行わないように 排他制御する必要があります ここでは その排他制御を行うための以下の関数について説明します LOCK_cobfa() UNLOCK_cobfa() LOCK_cobfa() マルチスレッド環境下での COBOL ファイルアクセスに排他ロックをかけます long LOCK_cobfa ( const unsigned long *timeout, /* 待ち時間 */ unsigned long *errcode /* エラーコード */ ); 説明 他のスレッドが同時にCOBOLファイルへのアクセスを行わないように COBOLランタイムシステムが行うファイルアクセスに対して排他ロックをかけます マルチスレッド環境下でファイルへのアクセスを行う場合 競合による問題を発生させないために この関数を呼び出す必要があります 待ち時間 timeoutには秒単位の値を持つ長整数型へのポインタを指定します もし他のスレッドが先に排他ロックをかけているとき 当スレッドでの関数の呼出しからtimeoutまでの間に排他ロックが解除されないと 関数の実行は失敗します timeoutにnullを指定した場合 待ち時間は無制限となります 当関数の復帰値が1であるとき エラーコード *errcodeにシステムエラー番号(errno) を設定します ただし errcodeにnullを設定した場合には エラーコードを設定しません 当関数の復帰値が1でない場合の値は不定です 実行可能な条件つねに呼出し可能 復帰値関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 COBOLファイルアクセスの排他ロックが成功しました 1 失敗 システムエラーが発生しました この場合 エラーコード *errcodeに システムエラー番号 (errno) が設定されます 2 待ち時間 timeoutを超えました 排他ロックをかけませんでした 使い方当関数は 入出力機能を持つAPI 関数か ファイルの情報を取得するAPI 関数の前に呼びます API 関数呼出しに続けて 状況を取得する API 関数を必要に応じて呼んだ後 UNLOCK_cobfa() を呼びます 状況を取得する関数の呼出しは 入出力かファイル情報の取得のAPI 関数呼出しとともに 必ず一回の排他ロック中に行ってください 数回の排他制御に分けて状況を取得すると 状況を示す値が他のスレッドで上書きされ 正しくない可能性があります 以下に1つの入出力ごとに排他制御を行う例を示します 55
62 第 3 章 API 関数と構造体 long ret, fd, eno, stat, recnum; ret = LOCK_cobfa ( NULL, NULL ); /* ファイルアクセスを排他ロックする */ if ( ret < 0 ) {... /* エラー処理 */ } fd = cobfa_open ( "file.rel", FA_INPUT FA_RELFILE FA_FIXED, 10 ); stat = cobfa_stat ( ); eno = cobfa_errno ( ); UNLOCK_cobfa ( NULL ); /* ファイルアクセスの排他ロックを解除する */ if ( eno == FA_EFNAME ) { printf ( "errno: %d, stat: %d\n", eno, stat );... }... /* ファイル入出力に関係のないさまざまな処理を行う */ ret = LOCK_cobfa ( NULL, NULL ); /* ファイルアクセスを排他ロックする */ if ( ret < 0 ) {... /* エラー処理 */ } cobfa_rdnext ( fd, FA_NEXT, buff ); recnum = cobfa_recnum ( ); UNLOCK_cobfa ( NULL ); /* ファイルアクセスの排他ロックを解除する */ num = recnum;... /* ファイル入出力に関係のないさまざまな処理を行う */ ret = LOCK_cobfa ( NULL, NULL ); /* ファイルアクセスを排他ロックする */ if ( ret < 0 ) {... /* エラー処理 */ } cobfa_close ( fd ); UNLOCK_cobfa ( NULL ); /* ファイルアクセスの排他ロックを解除する */ また 最初にCOBOLファイルへのアクセスを始めてから最後にアクセスが終わるまでの間 排他制御をすることもできます このように 排他制御を行う範囲は任意に広げることができます 以下の図に まとめて排他制御を行う例を示します long ret, fd; ret = LOCK_cobfa ( NULL, NULL ); /* ファイルアクセスを排他ロックする */ if ( ret < 0 ) {... /* エラー処理 */ } fd = cobfa_open ( "file.seq", FA_OUTPUT FA_SEQFILE FA_FIXED, 10 ); cobfa_wrnext ( fd, buffer, 10 );... /* その他 ファイルに対する入出力を行う */ cobfa_close ( fd ); UNLOCK_cobfa ( NULL ); /* ファイルアクセスの排他ロックを解除する */ 56
63 3.14 マルチスレッド環境下での排他制御 UNLOCK_cobfa() マルチスレッド環境下でのファイルアクセスに排他ロックを解除します long UNLOCK_cobfa ( unsigned long *errcode /* エラーコード */ ); 説明 COBOLランタイムシステムのファイルアクセスにかけていた排他ロックを解除します 当関数の復帰値が1であるとき エラーコード *errcodeにシステムエラー番号(errno) を設定します ただし errcodeにnullを設定した場合 エラーコードを設定しません 当関数の復帰値が1でない場合の値は不定です 実行可能な条件つねに呼出し可能 復帰値関数の復帰値は 下表のようになります 復帰値 状態 説明 0 成功 COBOLファイルアクセスの排他ロックの解除が成功しました 1 失敗 システムエラーが発生しました この場合 エラーコード *errcodeにシステムエラー番号 (errno) が設定されます 57
64 第 3 章 API 関数と構造体 3.15 使用する構造体 ここでは API 関数が使用する構造体について説明します struct fa_keydesc struct fa_keylist struct fa_dictinfo struct fa_keydesc cobfa_rdkey() 関数とcobfa_stkey() 関数では 任意のレコードキーの選択をstruct fa_keydesc 型で指定できます cobfa_indexinfo() 関数は オープンしてある索引ファイルの任意のレコードキーの構成を知ることができます ここでは レコードキーの構成を与えるstruct fa_keydesc 型のメンバと 設定する / 格納される値について説明します #define FA_NPARTS 254u /* max number of key parts */ struct fa_keydesc { long k_flags; /* flags (duplicatable or not) */ long k_nparts; /* number of parts in key */ struct fa_keypart k_part [FA_NPARTS]; /* each key part */ }; レコードキーの属性を示すk_flagsには以下の値が入ります FA_DUPS : このレコードキーは重複可能 FA_NODUPS: このレコードキーは重複を許可しない k_npartsには レコードキーの中のパート ( キーパート ) の数が入ります キーパート数の最小値は1で 最大値はFA_NPARTS(254) です 個々のキーパートの情報を持つk_partは struct fa_keypart 型の配列で宣言しています 以下で説明します #define FA_NRECSIZE 32760u /* max number of bytes in a record */ #define FA_NKEYSIZE 254u /* max number of bytes in a key */ struct fa_keypart { short kp_start; /* starting byte of key part */ short kp_leng; /* length in bytes */ }; kp_startには レコードの先頭位置を0とするバイト単位の変位を設定します この変位の最大値はFA_NRECSIZE1(32759) です kp_lengには キーパートの長さを設定します この長さの最小値は1で 上位制限値は FA_NKEYSIZE(254) です 変位と長さの和がFA_NRECSIZE(32760) を超えてはいけません 58
65 3.15 使用する構造体 設定例具体的な設定例としてa. とb. の2つを挙げます a. 具体的な設定例 主レコードキーは重複可能 キーパートは2つ 最初のキーパートは先頭から5バイト目にあり 長さは3 次のキーパートは先頭から11バイト目にあり 長さは5 バイト目 変位 ============================================================ 最初のパート 次のパート part1 part2 COBOLで記述した場合の参考例 : ENVIRONMENT DIVISION CONFIGURATION SECTION INPUTOUTPUT SECTION FILECONTROL SELECT FILENAME1 ASSIGN TO SYS ORGANIZATION IS INDEXED RECORD KEY IS PART1 PART2 WITH DUPLICATES DATA DIVISION FILE SECTION FD FILENAME RECORD FILLER PIC X(4) PART1 PIC X(3) FILLER PIC X(3) PART2 PIC X(5). : Cソースプログラム例 #include "cobfa.h" struct fa_keydesc keydesc1; keydesc1.k_flags = FA_DUPS; keydesc1.k_nparts = 2; /* number of key parts: 2 */ keydesc1.k_part[0].kp_start = 4; /* part_1: 5 1 == 4 */ keydesc1.k_part[0].kp_leng = 3; keydesc1.k_part[1].kp_start = 10; /* part_2: 11 1 == 10 */ keydesc1.k_part[1].kp_leng = 5; 59
66 第 3 章 API 関数と構造体 b. 具体的な設定例 主レコードキーは重複を許可しない キーパートは3つ 1 番目のキーパートは先頭から1バイト目にあり 長さは3 2 番目のキーパートは先頭から9バイト目にあり 長さは2 3 番目のキーパートは先頭から5バイト目にあり 長さは4 バイト目 変位 ============================================================ 番目のパート 3 番目のパート 2 番目のパート part1 part3 part2 COBOLで記述した場合の参考例 : ENVIRONMENT DIVISION CONFIGURATION SECTION INPUTOUTPUT SECTION FILECONTROL SELECT FILENAME1 ASSIGN TO SYS ORGANIZATION IS INDEXED RECORD KEY IS PART1 PART2 PART DATA DIVISION FILE SECTION FD FILENAME RECORD PART1 PIC X(3) FILLER PIC X(1) PART3 PIC X(4) PART2 PIC X(2). : Cソースプログラム例 #include "cobfa.h" struct fa_keydesc keydesc2; keydesc2.k_flags = FA_NODUPS; keydesc2.k_nparts = 3; /* number of key parts: 3 */ keydesc2.k_part[0].kp_start = 0; /* part_1: 1 1 == 0 */ keydesc2.k_part[0].kp_leng = 3; keydesc2.k_part[1].kp_start = 8; /* part_2: 9 1 == 8 */ keydesc2.k_part[1].kp_leng = 2; keydesc2.k_part[2].kp_start = 4; /* part_3: 5 1 == 4 */ keydesc2.k_part[2].kp_leng = 4; 60
67 3.15 使用する構造体 struct fa_keylist cobfa_open() 関数では オープンする索引ファイルのすべてのレコードキーの構成をstruct fa_keylist 型で指定します ここでは レコードキー全体の構成を指定するstruct fa_keylist 型のメンバに設定する値について説明します #define FA_NKEYS 126u /* max number of all keys */ struct fa_keylist { long kl_nkeys; /* number of keydesc */ struct fa_keydesc *kl_key [FA_NKEYS]; /* keydesc address of each key */ }; レコードキーの総数を示すkl_nkeysには レコードキーの総数を設定します 索引ファイルは主レコードキーを必ず含むので レコードキーの総数は必ず1 以上になります なお レコードキーの総数の最大値は FA_NKEYS(126) です 個々のレコードキーの情報を持つkl_keyは struct fa_keydesc 型のポインタの配列で宣言しています struct fa_keydesc 型については struct fa_keydesc を参照してください なお すべてのレコードキーが持つキーパート数の合計は FA_NALLPARTS(255) を超えてはいけません また すべてのレコードキーが持つ各キーパートの長さの合計がFA_NALLKEYSIZE(255) を超えてはいけません 設定例具体的な設定例としてa. を挙げます a. 具体的な設定例 索引ファイルのレコードキーの構成は 主レコードキーと副レコードキーが1つずつ 合計 2 個ある 主レコードキーは重複を許可しない 主レコードキーのキーパートは2つ 最初のキーパートは先頭から1バイト目にあり 長さは4 次のキーパートは先頭から7バイト目にあり 長さは2 副レコードキーは重複可能 副レコードキーのキーパートは1つ キーパートは先頭から12バイト目にあり 長さは3 バイト目 変位 ============================================================ 主キーの最初のパート主キーの次のパート副キーのパート part1 part2 subpart 61
68 第 3 章 API 関数と構造体 COBOLで記述した場合の参考例 : ENVIRONMENT DIVISION CONFIGURATION SECTION INPUTOUTPUT SECTION FILECONTROL SELECT FILENAME1 ASSIGN TO SYS ORGANIZATION IS INDEXED RECORD KEY IS PART1 PART ALTERNATE RECORD KEY IS SUBPART WITH DUPLICATES DATA DIVISION FILE SECTION FD FILENAME RECORD PART1 PIC X(4) FILLER PIC X(2) PART2 PIC X(2) FILLER PIC X(3) SUBPART PIC X(3). : Cソースプログラム例 #include "cobfa.h" struct fa_keylist keylist; /* for all keys structure */ struct fa_keydesc keydesc1; /* for prime record key */ struct fa_keydesc keydesc2; /* for alternate record key */ keylist.kl_nkeys = 2; /* number of keys: 2 (prim & alt) */ keylist.kl_key[0] = &keydesc1; /* prime key address */ keylist.kl_key[1] = &keydesc2; /* alternate key address */ keydesc1.k_flags = FA_NODUPS; keydesc1.k_nparts = 2; /* number of key parts: 2 */ keydesc1.k_part[0].kp_start = 0; /* 1 1 == 0 */ keydesc1.k_part[0].kp_leng = 4; keydesc1.k_part[1].kp_start = 6; /* 7 1 == 6 */ keydesc1.k_part[1].kp_leng = 2; keydesc2.k_flags = FA_DUPS; keydesc2.k_nparts = 1; /* number of key parts: 1 */ keydesc2.k_part[0].kp_start = 11; /* 12 1 == 11 */ keydesc2.k_part[0].kp_leng = 3; 62
69 3.15 使用する構造体 struct fa_dictinfo cobfa_indexinfo() 関数は オープンしてある索引ファイルの情報をstruct fa_dictinfo 型で返却することができます ここでは 索引ファイルの情報を取得するstruct fa_dictinfo 型のメンバに格納される値について説明します struct fa_dictinfo { long di_nkeys; /* number of keys defined */ long di_recsize; /* max or fixed data record size */ long di_idxsize; /* size of indexes */ long di_flags; /* other flags (fixed or variable) */ }; di_nkeysには 索引ファイル中のレコードキーの総数が設定されます ファイルのレコード長を示すdi_recsizeには 固定レコード長または最大レコード長が設定されます なお 当アクセスルーチンでは 最小レコード長を取得することはできません すべてのレコードキーの長さの合計を示すdi_idxsizeには レコードキーの総長が設定されます ファイルの属性を示すdi_flagsは 以下の1つのカテゴリの情報を持ちます レコード形式 記号定数 FA_FIXLEN FA_VARLEN 説明レコード形式が固定長であることを示す レコード形式が可変長であることを示す 指定した索引ファイルが上記のどの属性に該当するかは di_flagsの値と上記のどちらかの値との論理積を求めることによって知ることができます Cソースプログラム例 #include "cobfa.h" struct fa_dictinfo di; long fd, ret; : ret = cobfa_indexinfo(fd, &di, 0); /* to get indexed file info */ if (di.di_flags & FA_FIXLEN) { /* process for fixed length record type */ : } 63
70 第 3 章 API 関数と構造体 3.16 ファイルの機能 ここでは ファイルの機能について説明します ダミーファイル ダミーファイルは 実体が存在しない架空のファイルです API 関数を実行する対象がダミーファイルの場合 物理的なファイル操作は行われません 例えば OUTPUTモードのcobfa_open 関数を実行した場合 通常はオープンが成功するとファイルが生成されて書き込み可能な状態になりますが ダミーファイルを指定した場合 オープンは成功しますが ファイルは生成されません ダミーファイルは 以下のような場合に使用すると便利です 出力ファイルが不要な場合トラブル発生時のログファイルは 通常の運用時は不要なファイルです 通常の運用時はダミーファイルとしてファイルの生成を抑止し トラブル発生時にダミーファイルとしての扱いを外して ログファイルを出力するという使い方があります プログラム開発中で 入力ファイルがない場合通常は 空のファイルを用意してテストを進めます この場合 入力ファイルをダミーファイルにすれば 空のファイルを用意する手間が省け 作業の効率を向上させることができます 使用方法 cobfa_open 関数に指定するファイル名に続いて,DUMMY を指定するか またはファイル名を省略して,DUMMY だけを指定します fname = "[ ファイル名 ],DUMMY"; 文字列 DUMMY の前にコンマ (,) が必要です コンマ (,) がない場合 文字列 DUMMY をファイル名としてみなして 通常のファイルと同じ動作をします エラーにはならないことに注意してください ファイル名の指定の有無による動作の違いはありません 指定したファイル名は意味を持ちません 指定したファイルが存在した場合も 既存ファイルに対する操作は行われません 64
71 3.16 ファイルの機能 ダミーファイルに対する動作 入出力機能の各 API 関数でダミーファイルを使用する場合 ダミーファイルに対する動作は以下 のとおりです 入出力機能 API 関数 復帰値 状態 エラー番号 入出力状態 ファイルのオープン cobfa_open() 1 以上 成功 FA_ENOERR 0 ファイルのクローズ cobfa_close() 0 成功 FA_ENOERR 0 レコードの書き出しレコードの位置決めレコードロックの解除 cobfa_wrnext() cobfa_wrrec() cobfa_wrrec64() cobfa_wrkey() cobfa_strec() cobfa_strec64() cobfa_stkey() cobfa_release() レコードの読込み cobfa_rdnext() 1 失敗 FA_EENDFILE 10 cobfa_rdrec() 1 失敗 FA_ENOREC 23 cobfa_rdrec64() cobfa_rdkey() レコードの削除 cobfa_delcurr() 1 失敗 FA_ENOCURR 43 レコードの書換え cobfa_rewcurr() cobfa_delrec() cobfa_delrec64() cobfa_delkey() cobfa_rewrec() cobfa_rewrec64() 1 失敗 FA_ENOREC 23 cobfa_rewkey() ファイルアクセスルーチンでは 索引ファイルのオープンでレコードキーの指定を省略することができます この場合 既存ファイルの索引構成とレコード形式 レコード長を認識してオープンします ダミーファイル機能を指定した場合も同様に レコードキーの指定を省略することができます ただし ファイル情報の取得を行うcobfa_indexinfo 関数は失敗します エラー番号はFA_EUNDEFKEY 入出力状態は90になります ファイルの高速処理 レコード順ファイルおよび行順ファイルについて 使用範囲を限定することでアクセス性能を高速化することができます 本機能は 以下のAPI 関数で有効となります cobfa_wrnext ( レコードの順書出し ) cobfa_rdnext ( レコードの順読込み ) 65
72 第 3 章 API 関数と構造体 使用方法 cobfa_open 関数に指定するファイル名に続いて,BSAM または,LBSAM を指定します fname = " ファイル名,BSAM"; fname = " ファイル名,LBSAM"; ファイル編成がレコード順ファイル (FA_SEQFILE) または行順ファイル (FA_LSEQFILE) の場合に有効となります これ以外のファイル編成を指定した場合 cobfa_open 関数の実行が失敗します レコードの更新はできません オープンモードにIOモード (FA_INOUT) を指定した場合 cobfa_open 関数の実行が失敗します ファイル共用する場合には 以下の注意が必要です 他プロセス間でのファイル共用は すべてのプロセスで そのファイルが共用モードでかつINPUTモード (FA_INPUT) でオープンされている必要があります INPUTモード以外でオープンしたファイルがある場合 動作は保証されません 同一プロセス内はファイル共用できません 同一プロセス内でファイル共用した場合 動作は保証されません ファイルの高速処理を指定した場合 行順ファイル (FA_LSEQFILE) の読み込んだレコードにタブが含まれていても そのタブを空白に置き換えません また 制御文字 (0x0C( 改頁 ) 0x0D( 復帰 ) 0x1A( データ終了記号 )) が含まれていても レコードの区切り文字やファイルの終端として扱いません 66
73 第 4 章エラー番号と入出力状態 ここでは エラー番号と入出力状態について説明します 4.1 エラー番号 4.2 入出力状態
74 第 4 章エラー番号と入出力状態 4.1 エラー番号 エラー番号はAPI 関数のエラーの種別を返却します これには入出力状態だけでは表現できない COBOLの翻訳エラーに相当する情報も含まれます 詳細については cobfa_errno() を参照してください 以下にエラー番号とその意味について説明します エラー番号 FA_ENOERR(0) FA_ENOSPC(28) FA_EOVERFLOW(79) FA_EDUPL(100) FA_ENOTOPEN(101) FA_EBADARG(102) FA_EBADKEY(103) FA_ETOOMANY(104) FA_EBADFILE(105) FA_ELOCKED(107) FA_EENDFILE(110) FA_ENOREC(111) FA_ENOCURR(112) FA_EFLOCKED(113) 説明入出力機能の実行またはファイル情報取得の実行が成功したことを意味します ディスク容量が不足しています ラージファイル対応システムまたはLFS 指定に関するエラーです 以下のどちらかの状態です 物理的なエラーが発生しました LFS 指定により作成した1ギガバイト ( 索引ファイルでは1.7ギガバイト ) を超えるファイルを LFS 指定なしオープンしようとしました キーの重複に関するエラーです 以下のどちらかの状態です レコードキーに指定した値を持つレコードが すでにファイルに存在します レコードキーは重複を許していません 相対レコード番号が既存のものと重複します ファイルのオープンに関するエラーです 以下のいずれかの状態です まだオープンしていないファイルです ファイルは この機能を実行することができないオープンモードでオープンしています LFS 指定なしでオープンしたファイルに対して LFS 対応関数 (cobfa_xxxx64()) を使用しようとしました 引数に関するエラーです 以下のいずれかの状態です レコード域引数がNULLポインタです ファイル情報の取得関数で 機能番号が範囲外です ファイル情報の取得関数で 構造体ポインタがNULLです 索引ファイルのレコードキー指定に関するエラーです 以下のいずれかの状態です 与えたレコードキー構成リストに矛盾があります 与えたレコードキー構成はファイルのキー構成と一致するものがありません 与えたレコードキー番号はファイルが持つキーの数を超えています OSまたは当アクセスルーチンの制限値を超える数のファイルのオープンを行おうとしました ファイルの内部構成に関するエラーです 以下のいずれかの状態です ファイルの内部情報が正しくないか 破壊されています 正しいファイル編成を指定していません 動作コード系の指定と 行順ファイルのエンコード形式 ( シフトJIS UCS2 UTF8) が一致していません レコードはすでにロックされています ファイル終了条件が発生しました 指定したレコードは存在しません レコードへの位置付けが不定です ファイルはすでに排他オープンされています 68
75 4.1 エラー番号 エラー番号説明 FA_EFNAME(114) オープン時に与えたファイル名に関するエラーです 以下のいずれかの状態です ファイルが存在しません ファイルにはアクセスすることができません ファイル名がNULLポインタまたは空文字列です ファイル名の構成が正しくありません 読み込み専用属性のファイルをINPUTモード以外のモードでオープンしようとしました FA_EBADMEM(116) 機能を実行するために必要なメモリの獲得が失敗しました FA_EKEYSEQ(117) キーの順序誤りまたは変更誤りです 以下のどちらかの状態です 順書出しで 主レコードキー値が昇順でありません 順書換えで 主レコードキー値を変更しようとしました FA_EBADACC(118) 実行不可能な組合せが発生しました 以下のいずれかの状態です 呼出し法に違反する機能の実行を要求しました このファイル編成では実行できない機能です オープン時のフラグの組合せが正しくありません FA_EBADFLAG(120) フラグの指定値が正しくありません 以下のどちらかの状態です オープンモード 読込みモード 位置付けモードに使用できないモードを指定しています その他 受け入れることができない値をフラグに指定しています FA_EBADLENG(121) 長さに関するエラーです 以下のどちらかの状態です レコード長がファイルの定量制限を超えています 6.2 留意事項 の ファイル機能全般 を参照してください 位置付け時の有効キー長が ファイルが持つキーパートの長さの合計を超えています FA_EUNDEFKEY(122) 索引ファイル情報を取得できません ダミーファイル機能を指定して ファイルのオープン時にレコードキーの指定を省略した場合 索引ファイル情報は取得できません 詳細については ダミーファイル を参照してください FA_EOTHER(999) 上記以外のエラーが発生しました この場合 cobfa_stat() 関数の復帰値を取得して状況を判断してください cobfa_stat() 関数については cobfa_stat() を参照してください 69
76 第 4 章エラー番号と入出力状態 4.2 入出力状態 当アクセスルーチンでは 入出力状態を取得するとき cobfa_stat() 関数を呼び出します cobfa_stat() 関数については cobfa_stat() を参照してください 入出力状態の種類とその詳細については NetCOBOL 使用手引書 の 付録 B 入出力状態一覧 を参照してください 70
77 第 5 章サンプルプログラム ここでは 提供する例題プログラムについて説明します 5.1 行順ファイルの読込み 5.2 行順ファイルの読込みと索引ファイルの書出し 5.3 索引ファイルの情報の取得
78 第 5 章サンプルプログラム 5.1 行順ファイルの読込み 概要このサンプルプログラムは 指定したファイルを行順ファイルとしてINPUTモードでオープンし 読み込んだレコードの内容を表示します 提供プログラム cobfa01.c (Cソースプログラム) cobfa01.mk (Makefile) 使用しているCOBOLファイルアクセスルーチンの関数 cobfa_open() 関数 cobfa_rdnext() 関数 cobfa_stat() 関数 cobfa_errno() 関数 cobfa_reclen() 関数 cobfa_close() 関数 プログラムの翻訳とリンク Makefileの CDIR = と書かれている行の右側の内容が Cコンパイラをインストールしたディレクトリ名となるように修正してください また COBDIR = と書かれている行の右側の内容が COBOLコンパイラをインストールしたディレクトリ名となるように修正してください Makefileを修正した後 以下のコマンドを入力します > make f cobfa01.mk プログラムの実行適当なテキストファイルをコマンドライン引数にしてプログラムを実行します ここでは cobfa01 自身のソースプログラムを入力します > cobfa01 cobfa01.c 格納ディレクトリ ロケール EUC シフトJIS 英語 Unicode 格納ディレクトリ /opt/fjsvcbl/samples/ja/cobfa01 /opt/fjsvcbl/samples/ja_jp.pck/cobfa01 /opt/fjsvcbl/samples/c/cobfa01 /opt/fjsvcbl/samples/ja_jp.utf8/cobfa01 72
79 5.2 行順ファイルの読込みと索引ファイルの書出し 5.2 行順ファイルの読込みと索引ファイルの書出し 概要このサンプルプログラムは 特定の行順ファイル (cobfa02.txt) をINPUTモードでオープンし そのレコードの内容を索引ファイル (cobfa02.idx) のレコードとして書き出します 最後に その索引ファイルをINPUTモードでオープンし 主キーの順で画面に表示します 提供プログラム cobfa02.c (Cソースプログラム) cobfa02.txt ( 入力用行順ファイル ) cobfa02.mk (Makefile) 使用しているCOBOLファイルアクセスルーチンの関数 cobfa_open() 関数 cobfa_rdnext() 関数 cobfa_wrkey() 関数 cobfa_stkey() 関数 cobfa_close() 関数 プログラムの翻訳とリンク Makefileの CDIR = と書かれている行の右側の内容が Cコンパイラをインストールしたディレクトリ名となるように修正してください また COBDIR = と書かれている行の右側の内容が COBOLコンパイラをインストールしたディレクトリ名となるように修正してください Makefileを修正した後 以下のコマンドを入力します > make f cobfa02.mk プログラムの実行コマンドライン引数を付けずに実行します > cobfa02 格納ディレクトリ ロケール EUC シフトJIS 英語 Unicode 格納ディレクトリ /opt/fjsvcbl/samples/ja/cobfa02 /opt/fjsvcbl/samples/ja_jp.pck/cobfa02 /opt/fjsvcbl/samples/c/cobfa02 /opt/fjsvcbl/samples/ja_jp.utf8/cobfa02 73
80 第 5 章サンプルプログラム 5.3 索引ファイルの情報の取得 概要このサンプルプログラムは 指定したファイルを索引ファイルとしてINPUTモードでオープンし ファイル自体の属性と レコードキーの各構成を表示します 提供プログラム cobfa03.c (Cソースプログラム) cobfa03.mk (Makefile) 使用しているCOBOLファイルアクセスルーチンの関数 cobfa_open() 関数 cobfa_indexinfo() 関数 cobfa_stat() 関数 cobfa_errno() 関数 cobfa_close() 関数 プログラムの翻訳とリンク Makefileの CDIR = と書かれている行の右側の内容が Cコンパイラをインストールしたディレクトリ名となるように修正してください また COBDIR = と書かれている行の右側の内容が COBOLコンパイラをインストールしたディレクトリ名となるように修正してください Makefileを修正した後 以下のコマンドを入力します > make f cobfa03.mk プログラムの実行適当な索引ファイルをコマンドライン引数にしてプログラムを実行します ここではcobfa02を実行して生成した索引ファイルを指定します > cobfa03../cobfa02/cobfa02.idx 格納ディレクトリ ロケール EUC シフトJIS 英語 Unicode 格納ディレクトリ /opt/fjsvcbl/samples/ja/cobfa03 /opt/fjsvcbl/samples/ja_jp.pck/cobfa03 /opt/fjsvcbl/samples/c/cobfa03 /opt/fjsvcbl/samples/ja_jp.utf8/cobfa03 74
81 第 6 章注意事項 ここでは COBOL ファイルアクセスルーチンの制限事項と留意事項について説明します
82 第 6 章注意事項 6.1 制限事項 索引ファイル 動的呼出し法 (FA_DYNACC) でオープンしたファイルが 以下のどちらかの条件のとき 順読込みで位置付けられているレコードに対して 順書換え / 順削除を実行する方法はありません cobfa_stkey() 関数で 逆順読込み (FA_REVORD) を指定した場合 主レコードキーの属性が重複可能 (FA_DUPS) である場合 76
83 6.2 留意事項 6.2 留意事項 ファイル機能全般 アプリケーションプログラムでオープンしたファイルは 必ず すべてをクローズしてから処理を終了してください この操作を行わないとファイルの内容の破壊 システムリソースのリークなどの問題が発生します 同一プロセス内で 同一ファイルをオープンしても二重オープンエラー ( 入出力状態 :41) は発生しません この場合 別のファイルディスクリプタが割り当てられます なお 同一プロセス内で同時にオープンできるファイルディスクリプタの最大数は1,024です API 関数の実行時にエラーが複数重なる場合には COBOLアプリケーションとは異なった入出力状態を返却する場合があります COBOLでは同じ入出力文を使っても異なる呼出し法を扱えますが APIによる入出力では 呼出し法によって使用する関数が異なります 適切な関数を使用してください 入出力の状況 (cobfa_errno() cobfa_stat() cobfa_reclen() cobfa_recnum() の各関数の復帰値 ) はファイルごとに情報を保持しません これらの値はプロセス単位で保持するので 実行した入出力機能の状況値が必要な場合は 次の入出力機能を実行する前までに値を変数などに保存してください 以前の入出力の状況の値は 次の入出力機能の実行によって上書きされます レコードの読込み / 書出し / 書換え / 位置付けを行う場合 データ受渡し用のレコード域は ファイルをオープンするときの最大 / 固定レコード長以上の大きさを持つ領域をあらかじめ確保しておく必要があります COBOLでは翻訳時にエラーが検出できる場合でも API 関数では実行時にしかエラーを検出できないので注意してください 具体的には 呼出し法の不一致や正しくない索引キー指定などがこれに該当します ファイルに関する定量制限は NetCOBOL 使用手引書 の ファイルの種類と特徴 表 69 各ファイルシステムの機能差 および COBOL 文法書 の 付録 B.4 順ファイル 付録 B.5 相対ファイル 付録 B.6 索引ファイル を参照してください COBOLのデータ型とC 言語のデータ型の対応については NetCOBOL 使用手引書 の データ型の対応 を参照してください 行順ファイル 0バイトの長さのレコードを書き出すことはできません 本製品では 0x0A( 改行 ) を改行文字として扱い レコードを書き出すときに付加します 読み込むレコードに制御文字が含まれている場合の動作は 以下の通りです 0x0C( 改頁 ): レコードの区切り文字として扱います 0x0D( 復帰 ): レコードの区切り文字として扱います 0x1A( データ終了記号 ): ファイルの終端として扱います () 内は 制御文字の意味を示します 読み込んだレコードにタブが存在した場合 そのタブコードを空白に置き換えます 詳細は NetCOBOL 使用手引書 の 行順ファイルの処理 を参照してください レコード順ファイル 印刷ファイルを扱えません したがって 以下の仕様となります COBOL 構文のLINAGE 句に相当するものはありません COBOL 構文のWRITE 文の改行制御 / ページ制御に相当するものはありません 77
84 第 6 章注意事項 相対ファイル 以下の関数では 相対レコード番号を引数で明に指定する必要があります cobfa_delrec() 関数 ( 乱削除 ) cobfa_rewrec() 関数 ( 乱書換え ) cobfa_rdrec() 関数 ( 乱読込み ) cobfa_strec() 関数 ( 位置決め ) LFS 指定でオープンした相対ファイルに対する以下の関数では 64ビットの相対レコード番号を引数で明に指定する必要があります cobfa_delrec64() 関数 ( 乱削除 ) cobfa_rewrec64() 関数 ( 乱書換え ) cobfa_rdrec64() 関数 ( 乱読込み ) cobfa_strec64() 関数 ( 位置決め ) 以下の関数でアクセスしたレコードの相対レコード番号は cobfa_recnum() 関数で取得することができます ただし ファイルのオープン時にLFS 指定を行った場合は cobfa_recnum64() 関数を使って取得してください cobfa_rdnext() 関数 ( 順読込み ) cobfa_wrnext() 関数 ( 順書出し ) 索引ファイル 既存ファイルのオープン時に レコードキー構成を指定しないでオープンすることができます この場合 ファイルアクセスルーチンは既存ファイル内部のレコードキー構成を調査してオープンします オープン中の索引ファイルの属性 ( レコード長 レコード形式 ) とレコードキー構成を調べる機能 (cobfa_indexinfo() 関数 ) があります マルチスレッド COBOLファイルアクセスの排他制御 ( 排他ロック / 排他ロック解除 ) には 必ず以下の関数を使ってください 詳細については 各 API 関数の説明を参照してください LOCK_cobfa() UNLOCK_cobfa() マルチスレッド環境下では 入出力機能を持つAPI 関数の呼出し前 またはファイルの情報を取得するAPI 関数の呼出し前に 必ず排他制御を行ってください 排他制御を行わないと 競合によって以下のような問題が発生する可能性があります ファイル入出力の不正な実行結果 スレッドの異常終了 ファイル内容の破壊排他制御のロック アンロックのタイミングについては LOCK_cobfa() の使い方の例を参照してください Unicode V7.0L10 以降では Unicodeを扱うために以下の追加 / 変更があります ファイルのオープン (cobfa_open() 関数 ) のオープン属性引数が次の1つのカテゴリを認識するようになりました 動作コード系 Unicodeを扱う場合の留意事項を以下にあげます 動作モードがUnicodeのCOBOLアプリケーションで扱う行順ファイルのレコード長には バイト数を指定してください 78
85 付録 A リファレンス A.1 API 関数 当アクセスルーチンは 以下のAPI 関数を持ちます これらは4つのカテゴリに分けることができます 入出力 関数名 機能の概要 * cobfa_close() ファイルをクローズする cobfa_delcurr() 順読込みしたレコードを削除する S cobfa_delkey() 主レコードキーの値によって示されるレコードを削除す RD る cobfa_delrec() 相対レコード番号によって示されるレコードを削除する RD cobfa_delrec64() 相対レコード番号によって示されるレコードを削除する RD (LFS 指定 ) cobfa_open() ファイルをオープンする cobfa_release() 指定したファイルのレコードロックをすべて解除する cobfa_rewcurr() 順読込みしたレコードを書き換える SD cobfa_rewkey() 主レコードキーの値によって示されるレコードを書き換 RD える cobfa_rewrec() 相対レコード番号によって示されるレコードを書き換え RD る cobfa_rewrec64() 相対レコード番号によって示されるレコードを書き換え RD る (LFS 指定 ) cobfa_rdkey() 任意のレコードキーの値によって示されるレコードを読 RD み込む cobfa_rdnext() レコードを順に読み込む S cobfa_rdrec() 相対レコード番号によって示されるレコードを読み込む RD cobfa_rdrec64() 相対レコード番号によって示されるレコードを読み込む RD (LFS 指定 ) cobfa_stkey() 任意のレコードキーの値によって示されるレコードに位 SD 置付ける cobfa_strec() 相対レコード番号によって示されるレコードに位置付け SD る cobfa_strec64() 相対レコード番号によって示されるレコードに位置付け SD る (LFS 指定 ) cobfa_wrkey() 指定した主レコードキーの値を持つレコードを書き出す RD cobfa_wrnext() レコードを順に書き出す S cobfa_wrrec() 指定した相対レコード番号を持つレコードを書き出す RD cobfa_wrrec64() 指定した相対レコード番号を持つレコードを書き出す (LFS 指定 ) RD *1: 関数の使用範囲を記号で示しています 各記号の意味は以下のとおりです RD: オープンモードが乱呼出し または動的呼出しで使用できる関数 SD: オープンモードが順呼出し または動的呼出しで使用できる関数 S : オープンモードが順呼出しのときにだけ使用できる関数
86 付録 A リファレンス ファイルの情報を取得 関数名機能の概要 cobfa_indexinfo() 索引ファイルが持つファイルの属性 またはレコードキーの構成を取得する入出力の状況を取得 関数名 機能の概要 cobfa_errno() エラー番号を取得する cobfa_reclen() 読み込んだレコードの長さを取得する cobfa_recnum() 位置付けられたレコードの相対レコード番号を取得する cobfa_recnum64() 位置付けられたレコードの相対レコード番号を取得する (LFS 指定 ) cobfa_stat() 入出力状態を取得する マルチスレッド環境下での排他制御 関数名機能の概要 LOCK_cobfa() 他のスレッドのCOBOLファイルへのアクセスに対して排他ロックをかける UNLOCK_cobfa() 他のスレッドのCOBOLファイルへのアクセスに対して排他ロックを解除する A.2 API 関数で使用する構造体 いくつかの API 関数は 以下に示す構造体型へのポインタ型を用います 構造体名 struct fa_dictinfo struct fa_keydesc struct fa_keylist 機能の概要索引ファイルの属性を取得するための構造体任意のレコードキーを指定するための構造体指定した任意のレコードキーの構造を取得するためにも使用するすべてのレコードキーを指定するための構造体 80
87 索引 A ACCESS MODE IS DYNAMIC...13 ACCESS MODE IS RANDOM...13 ACCESS MODE IS SEQUENTIAL...13 API 関数...79 API 関数で使用する構造体...80 API 関数と構造体...11 C cobfa_close()...17 cobfa_delcurr()...31 cobfa_delkey()...32 cobfa_delrec()...34 cobfa_delrec64()...35 cobfa_errno()...50 cobfa_indexinfo()...48 cobfa_open()...12 cobfa_rdkey()...19 cobfa_rdnext()...21 cobfa_rdrec()...23 cobfa_rdrec64()...25 cobfa_reclen()...52 cobfa_recnum()...53 cobfa_recnum64()...53 cobfa_release()...46 cobfa_rewcurr()...36 cobfa_rewkey()...37 cobfa_rewrec()...39 cobfa_rewrec64()...40 cobfa_stat()...51 cobfa_stkey()...41 cobfa_strec()...43 cobfa_strec64()...45 cobfa_wrkey()...26 cobfa_wrnext()...27 cobfa_wrrec()...29 cobfa_wrrec64()...30 COBOLファイルアクセスルーチンとは...2 COBOLファイルアクセスルーチンを利用する前に..1 Cソースプログラムの作成...6 Cソースプログラムの翻訳...7 E EXTENDモード...12 F FAOUTPUT...12 FA_ASCII...14 FA_AUTOLOCK...13 FA_DYNACC...13 FA_EQUAL...19, 23, 41, 44 FA_EXCLLOCK...13 FA_EXTEND...12 FA_FIRST FA_FIXLEN FA_GREAT... 41, 44 FA_GTEQ... 41, 44 FA_IDXFILE FA_INOUT FA_INPUT FA_LESS... 41, 44 FA_LOCK... 19, 22, 23 FA_LSEQFILE FA_LTEQ... 41, 44 FA_MANULOCK FA_NEXT FA_NOLOCK... 19, 22, 23 FA_NOTOPT FA_OPTIONAL FA_PREV FA_RELFILE FA_REVORD FA_RNDACC FA_SEQACC FA_SEQFILE FA_UCS FA_UTF FA_VARLEN I INPUTモード IOモード J JIS L LFS 指定... 25, 30, 35, 40, 45, 53 LOCK MODE IS EXCLUSIVE LOCK_cobfa() LOCK MODE IS AUTOMATIC LOCK MODE IS MANUAL O OPEN EXTEND OPEN INPUT OPEN IO OPEN OUTPUT OPEN WITH LOCK ORGANIZATION IS LINE SEQUENTIAL ORGANIZATION IS INDEXED ORGANIZATION IS RELATIVE ORGANIZATION IS SEQUENTIAL OUTPUTモード R READ NEXT RECORD READ PREVIOUS RECORD... 21
88 索引 READ WITH LOCK...19, 22, 23 READ WITH NO LOCK...19, 22, 23 RECORD CONTAINS integer CHARACTERS...13 RECORD IS VARYING IN SIZE...13 S SELECT filename...14 SELECT OPTIONAL filename...14 SJIS...14 START FIRST RECORD...41 START KEY IS <...41, 44 START KEY IS <=...41, 44 START KEY IS =...41, 44 START KEY IS >...41, 44 START KEY IS >=...41, 44 START WITH REVERSED...42 struct fa_dictinfo...63 struct fa_keydesc...58 struct fa_keylist...61 U UCS Unicode...14, 78 UNLOCK_cobfa()...57 UTF い位置付け属性...41, 43, 45 位置付けモード...41, 44 えエラーコード...55, 57 エラー番号...68 エラー番号と入出力状態...67 エラー番号の取得...50 エンコード種別...14 おオープン属性...12 オープンモード...12 オブジェクトファイルのリンク...8 か書換えレコード長...36, 37, 39, 40 書出しレコード長...26, 27, 29, 30 可変長形式...13 環境設定...4 き機能コード...48 逆順読込みフラグ...42 行順ファイル...13, 77 行順ファイルの読込み...72 行順ファイルの読込みと索引ファイルの書出し..73 こ固定長形式...13 さ索引ファイル...13, 76, 78 索引ファイルの情報の取得...74 サンプルプログラム し自動ロック 手動ロック 取得結果の格納域 準備するもの... 3 順呼出し 使用する構造体 せ制限事項 そ相対ファイル... 13, 78 相対レコード番号... 23, 25, 29, 30, 34, 35, 39, 40, 43, 45 相対レコード番号の取得 たダミーファイル ち注意事項 つ使い方... 5 と動作コード系 動的呼出し に入出力状態 入出力状態の取得 は排他ロック ふファイル機能全般 ファイル情報の取得 ファイルディスクリプタ... 15, 17, 19, 21, 23, 25, 26, 27, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 41, 43, 45, 46, 48 ファイルのオープン ファイルの機能 ファイルのクローズ ファイルの高速処理 ファイルハンドル ファイル編成 ファイル名 不定ファイル プログラムの実行... 9 ま待ち時間 マルチスレッド環境下での排他制御 ゆ有効キー長 よ呼出し法
89 索引 読込み属性...19, 21, 23, 25 読込みモード...19, 21, 23 読込みレコード長の取得...52 ら乱呼出し...13 りリファレンス...79 留意事項...77 れレコード域... 19, 21, 23, 25, 26, 27, 29, 30, 32, 36, 37, 39, 40, 41 レコードキー構成指定...19, 41 レコードキー番号指定...19, 41 レコードキーリスト...12 レコード形式 レコード順ファイル... 13, 77 レコード長 レコードの位置決め レコードの書換え レコードの書出し レコードの削除 レコードの読込み レコードロックの解除 レコードロックフラグ... 19, 22, 23 ろロックあり... 19, 22, 23 ロックなし... 19, 22, 23 ロックモード
NetCOBOL V10.1 COBOLファイルアクセスルーチン使用手引書
NetCOBOL V10.1 COBOL ファイルアクセスルーチン使用手引書 Linux(64) J2UL117401Z0(00) 2009 年 10 月 まえがき COBOL ファイルアクセスルーチンは COBOL ファイルを操作するための C 言語用の API(Application Program Interface) 関数群です この関数群を利用して COBOL ファイルをアクセスするアプリケーションの開発
NetCOBOL V10.2 COBOL ファイルアクセスルーチン 使用手引書
NetCOBOL V10.2 COBOL ファイルアクセスルーチン使用手引書 Linux(64) J2UL117402Z0(00) 2011 年 4 月 まえがき COBOL ファイルアクセスルーチンは COBOL ファイルを操作するための C 言語用の API(Application Program Interface) 関数群です この関数群を利用して COBOL ファイルをアクセスするアプリケーションの開発
COBOL ファイルアクセスルーチン使用手引書
Microsoft Windows Server 2003 Microsoft Windows Server 2008 B1WD133101Z0(00) NetCOBOL V10.0 COBOL ファイルアクセスルーチン 使 用 手 引 書 まえがき COBOLファイルアクセスルーチンは COBOLファイルを 操 作 するためのC 言 語 用 のAPI(Application Program Interface)
スクールCOBOL2002
3. 関連資料 - よく使われる機能の操作方法 - (a) ファイルの入出力処理 - 順ファイル等を使ったプログラムの実行 - - 目次 -. はじめに 2. コーディング上の指定 3. 順ファイルの使用方法 4. プリンタへの出力方法 5. 索引ファイルの使用方法 6. 終わりに 2 . はじめに 本説明書では 簡単なプログラム ( ファイル等を使わないプログラム ) の作成からコンパイル 実行までの使用方法は既に理解しているものとして
Microsoft Word - no15.docx
7. ファイルいままでは プログラムを実行したとき その結果を画面で確認していました 簡単なものならそれでもいいのですか 複雑な結果は画面で見るだけでなく ファイルに保存できればよいでしょう ここでは このファイルについて説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const char *filename, const char *mode); ファイルを読み書きできるようにする
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項
リリース情報
NetCOBOL JEF オプション V7.0L30 リリース情報 Windows B1WD-1131-02Z0(00) 2012 年 12 月 まえがき 本書は NetCOBOL JEF オプションのリリース情報について説明します NetCOBOL シリーズについて NetCOBOL シリーズの最新情報については 富士通のサイトをご覧ください http://software.fujitsu.com/jp/cobol/
PowerPoint Presentation
ファイルの入出力 芝浦工業大学情報工学科 青木義満 今回の講義内容 ファイル入出力 ファイルからのデータ読込み ファイルと配列 2 1 ファイルへのデータ書き込み ( 復習 ) ソースファイル名 :fileio1.c データをファイルに書き込み #include int main(void) { ファイルポインタ宣言 int student_id = 100; char name[
AquesTalk for WinCE プログラミングガイド
AquesTalk for WinCE プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk for WinCE ( 以下 AquesTalk) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと
Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt
開発編第 5 章補足 DB2 組み込み SQL 本書に含まれている情報は 正式な IBM のテストを受けていません また 明記にしろ 暗黙的にしろ なんらの保証もなしに配布されるものです この情報の使用またはこれらの技術の実施は いずれも 使用先の責任において行われるべきものであり それらを評価し 実際に使用する環境に統合する使用先の判断に依存しています それぞれの項目は
ファイル入出力
C プログラミング Ⅱ の基礎 とは ファイルへデータを書き込んだり ( 出力 ), ファイルからデータを読み込んだり ( 入力 ) する C 言語では キーボードからの入力 画面への出力と同じようなコードで 処理を実現できる プログラム 入力 出力 ファイル 出力 入力 2 入出力の基本 ストリーム プログラム上で様々な装置への入出力を行う機構様々な入出力装置を統一的な方法で扱うことができる ハードディスクなどではファイルデータによって入出力が行われる
第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ
第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイルの作成方法 コンパイル方法について説明します IDL ファイルの作成にあたっては INTERSTAGE
Linkexpress トラブル初期調査資料 採取コマンド使用手引書
FUJITSU Software Linkexpress Standard Edition V5.0L15 Linkexpress Enterprise Edition V5.0L15 Linkexpress トラブル初期調査資料採取コマンド使用手引書 Windows/Windows(64) J2X1-2740-14Z0(00) 2014 年 12 月 まえがき 本書の目的 本書は 下記製品でエラーが発生した場合の初期調査資料の採取方法を説明します
02: 変数と標準入出力
C プログラミング入門 基幹 7 ( 水 5) 1 10: ファイル入出力 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/teachers/w48369 2/CPR1/ 2016-06-15 今日の内容 2 標準ライブラリ関数によりファイルの出力を行う画像ファイルの生成を例題として 配列の作成を復習する 文字列の扱いを復習する
PowerPoint プレゼンテーション
プログラミング応用演習 第 3 回構造体, ファイル入出力 先週の出席確認へのコメント 暗号を破りたいが 平文の候補が多すぎる 人間の目で確認する代わりに どんなプログラムがあればよいか? 辞書を挙げた人が多かった 正しい着眼です 何億個もの平文候補が想定されるので 形態素解析や品詞判別を挙げた人もいます 辞書に近い回答で悪くはないのですが 平文候補ごとにあまり高機能なものを呼び出すと時間がかかる
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
Taro-ファイル処理(公開版).jtd
ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です
ACTIVE TOUCH 拡張部品取扱説明書 - 共有メモリアクセスコンポーネント - 1. はじめに 1 (1) 概要... 1 (2) INpMac のインストール... 1 2. Windows アプリケーションとの連携 2 (1) コントロール ( 部品 ) の登録... 2 (2) データの関連付け... 3 3. INtime アプリケーションとの連携 4 (1) 部品 ( コンポーネント
情報処理演習 B8クラス
予定スケジュール ( 全 15 回 ) 1 1. 終了 プログラミング言語の基礎 2. 終了 演算と型 3. 終了 プログラムの流れの分岐 (if 文,switch 文など ) 4. 終了 プログラムの流れの繰返し (do, while, for 文など ) 5. 終了 中間レポート1 6. 終了 配列 7. 終了 関数 8. 終了 文字列 ( 文字列の配列, 文字列の操作 ) 9. 終了 ポインタ
Microsoft Word - Cプログラミング演習(10)
第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,
AquesTalk プログラミングガイド
AquesTalk プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2 種類があります 使用するアプリケーションに応じて選択してください
UIOUSBCOM.DLLコマンドリファレンス
UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :[email protected] 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2
Taro-ポインタ変数Ⅰ(公開版).j
0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している
PowerPoint プレゼンテーション
プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/
AquesTalk Win Manual
AquesTalk Win マニュアル 株式会社アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2
レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管
レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管理情報の英小文字対応 ~ 管理ホスト情報の表示 グループ情報と詳細情報の表示 ~ 検索条件設定時の一覧画面の操作
Microsoft PowerPoint - CproNt02.ppt [互換モード]
第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント
PowerPoint Presentation
工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない
AquesTalk2 Win マニュアル
株式会社 AQUEST http://www.a-quest.com/ AquesTalk2 Win Manual 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk2 Win をアプリケーションに組み込んで使用するためのプログラミングに関しての方法および注意点を示したものです AquesTalk2 は 簡単に小型機器への組み込みが出来る音声合成ミドルウェアです このライブラリを用いることで
ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組
レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン HULFT BB クライアント for Windows Type BB1 6.3.0 HULFT BB クライアント for Windows Type BB2 6.3.0 < 対応 OS> Windows2000, WindowsXP, WindowsServer2003 < 追加機能一覧 > HULFT BB クライアント 管理番号 内容
ConMas Manager データ取り込みレイアウト Copyright 2012 CIMTOPS CORPORATION - All Rights Reserved.
ConMas Manager データ取り込みレイアウト グループ登録ファイルレイアウト group..* 部分更新の場合は 項目値に groupid グループID A: 新規追加の場合は空で良い groupname グループ名称 A: 新規追加の場合は必須 uppergroupid 親グループID rolemstread ロール ( マスター参照 ) 0: 権限なし : 権限あり rolemstupdate
マニュアル訂正連絡票
< マニュアル訂正連絡票 > ASP レプリケーションサービス説明書 V25 [J2K 0-1056-01] 2015 年 12 月 22 日発行 4.7. 2ASP と PC 間のレプリケーション ~( 中略 )~ (3) オフライン同期 (CSVLink の利用 ) ASP の CNVDF コマンドでレプリケーション対象ファイルのデータを移出した CSV ファイルを PC に転送し 各 DBMS
スクールCOBOL2002
(h) 登録集原文の指定方法 . 登録集原文の指定方法 複数の COBOL プログラムに共通の記述を別のソースファイルとしておき COPY 文で取り込むことができます 登録集原文の概念図を下欄に示します このようにすると コーディング量を削減でき 記述ミスもなくなるため 開発効率を高めることができます ここでは 第 章で実習した reidai.cbl というソースファイルの DATA0 と YYMMDD
問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =
問 1 配列の宣言整数型配列 data1 にデータが初期設定されている この配列 data1 のデータを下図のように 整数型配列 data2 に代入しなさい また data2 の内容を printf( "data2[0] = %d\n", data2[0] ); printf( "data2[5] = %d\n", data2[5] ); を用いて出力しなさい 実行結果 data2[0] = 76
◎phpapi.indd
PHP や HTML の知識がなくても大丈夫 PHP や HTML の基本も学べる FileMaker データベースを Web に公開したい FileMaker を使って動的な Web サイトを作りたい FileMaker しか知らない人が Web アプリケーションを作れるようになる! はじめに まず 本書を手に取ってくださりありがとうございます 本書はある程度 FileMaker Pro の扱いに慣れ
VB6互換のファイルの処理
Visual Basic のランタイム関数を使用したファイルアクセス FileOpen 関数 ファイルを開いて入出力を行う FileOpen(FileNumber, FileName, Mode[, Access[, Share[, RecorLength]]]) 引数 FileNumber は必ず指定する 有効なファイル番号を指定する FreeFile 関数を使用して 使用可能な次のファイル番号を取得する事が出来る
プログラミング基礎
C プログラミング Ⅰ 授業ガイダンス C 言語の概要プログラム作成 実行方法 授業内容について 授業目的 C 言語によるプログラミングの基礎を学ぶこと 学習内容 C 言語の基礎的な文法 入出力, 変数, 演算, 条件分岐, 繰り返し, 配列,( 関数 ) C 言語による簡単な計算処理プログラムの開発 到達目標 C 言語の基礎的な文法を理解する 簡単な計算処理プログラムを作成できるようにする 授業ガイダンス
サイボウズ Office 10「リンク集」
サイボウズ Office 10 バージョン 10.6 リンク集 Copyright (C) 2013-2016 Cybozu 商標について 記載された商品名 各製品名は各社の登録商標または商標です また 当社製品には他社の著作物が含まれていることがあります 個別の商標 著作物に関する注記については 弊社の Web サイトを参照してください http://cybozu.co.jp/company/copyright/other_companies_trademark.html
Microsoft PowerPoint - prog06.ppt
プログラミング言語 2 第 06 回 (2007 年 06 月 11 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 06 月 11 日分と書いてある部分が 本日の教材です 本日の内容
模擬試験問題(第1章~第3章)
基本情報技術者試験の練習問題 - 第 8 回 この問題は平成 19 年度秋期の問題から抜粋しています 問 1 次のプログラムの説明及びプログラムを読んで, 設問 1,2 に答えよ プログラムの説明 スタックを使って, 実数値を 10 進数字列 ( 文字列 ) に変換する副プログラム FloatFormat である (1) FloatFormat は, 実数 Float の値を 10 進数字列に変換し,
サイボウズ Office「リンク集」
サイボウズ Office Cybozu 商標について 記載された商品名 各製品名は各社の登録商標または商標です また 当社製品には他社の著作物が含まれていることがあります 個別の商標 著作物に関する注記については 弊社のWebサイトを参照してください https://cybozu.co.jp/logotypes/other-trademark/ なお 本文および図表中では (TM) マーク (R)
プログラミング実習I
プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 [email protected] 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,
SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C
SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 COM ポート : 非同期シリアル通信 ) を使用して SD カードのアクセスを試験することができます
プログラミングI第10回
プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造
第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部
はじめに コース概要と目的 Oracle 独自の手続き型言語である PL/SQL について説明します PL/SQL の基本構文 ストアド サブプログラム トリガーの作成方法 またストアド サブプログラムの管理について習得することを目的としています 受講対象者 これから PL/SQL を使用してアプリケーション開発をされる方 前提条件 SQL トレーニング コースを受講された方 もしくは 同等の知識をお持ちの方
AquesTalk10 Win マニュアル
AquesTalk10 Win マニュアル 株式会社アクエスト www.a-quest.com 概要 本文書は 音声合成ライブラリ AquesTalk10 Win をアプリケーションに組み込んで使用するためのプログラミングの方法 注意点を示したものです AquesTalk10 は かな表記の音声記号列から WAV 音声データを生成するライブラリです AquesTalk10 は 声質パラメータを指定することで様々な声質の音声を生成できる特徴があります
MeFt V10.1 メッセージ集
MeFt V10.1 メッセージ集 Linux(64) J2UL-1184-01Z0(00) 2009 年 10 月 まえがき マニュアルの概要本書は Message editing Facile tool( 以降では "MeFt" と略します ) ソフトウェアのメッセージ集です MeFtの帳票出力時に通知されるエラーメッセージと その対処方法について説明しています 本書では 次のシステムのもとで動作するMeFtを対象としています
セットアップカード
NEC COBOL SQL アクセス Client Runtime Ver1.0 COBOL SQL アクセス Client Runtime Ver1.0 (1 年間保守付 ) COBOL SQL アクセス Client Runtime Ver1.0 (1 年間時間延長保守付 ) セットアップカード ごあいさつ このたびは COBOL SQL アクセス Client Runtime Ver1.0 (
PowerPoint プレゼンテーション
プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体
構造体
構造体 Byte 配列 構造体とコピーする方法 構造体とバイト配列の変換を行うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; 下記の 3 種類の構造体にバイト配列の値を格納した場合に付いて検証する
PowerPoint プレゼンテーション
講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる
Microsoft Word - Cプログラミング演習(12)
第 12 回 (7/9) 4. いくつかのトピック (5)main 関数の引数を利用したファイル処理 main 関数は, 起動する環境から引数を受け取ることができる 例えば 次に示すように,main 関数に引数を用いたプログラムを作成する 01 /* sample */ 02 /* main 関数の引数 */ 03 #include 04 05 main(int argc, char
データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編
手順 4 Excel データを活用する ( リスト / グラフ 色分け ) 外部の表データ (CSV 形式 ) を読み込み リスト表示やカード表示 その値によって簡単なグラフ ( 円 正方形 棒の 3 種類 ) や色分け表示することができます この機能を使って地図太郎の属性情報に無い項目も Excel で作成し CSV 形式で保存することにより 自由に作成することができます (Excel でデータを保存するとき
ネットワーク構成情報ファイル 作成ツール
ServerView Resource Orchestrator V3.1 ネットワーク構成情報ファイル作成ツール mknetdevconf-tool-0301-1 2012 年 7 月 まえがき 本書の目的 本書は ServerView Resource Orchestrator Cloud Edition( 以降 本製品 ) のネットワーク構成情報ファイル作成ツール (Excel 形式 )( 以降
C言語講座 ~ファイル入出力編~
C 言語講座 ~ ファイル入出力編 ~ ポインタ使います 例 2 練習問題 3 初めに プログラムを組む上での話と今回の演習について 例えばこの画面の場合 背景の動画の描写 ノーツを流れてくるようにする ボタンを押したら違反亭ライン近くのノーツは消えるようにする処理 曲の難易度ごとに判定を追加とか残りの処理 完成 演習 1 クリア 演習 2 クリア 過程は各自で考えてください 演習 3 クリア ファイルの出入力でこれからやること
次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1
4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる
テスト 1/5 ページ プレポスト OSIV/MSP JCL とユーティリティ 受講日程受講番号氏名 1 ジョブ制御文で指定する情報として間違っているものを選びなさい 1. 実行プログラム名 2. 入出力データセット名 3. コンピュータの機種名 4. 実行プログラムの処理順序 解答 2 ジョブ制御
1/5 ページ プレポスト OSIV/MSP JCL とユーティリティ 受講日程受講番号氏名 1 ジョブ制御文で指定する情報として間違っているものを選びなさい 1. 実行プログラム名 2. 入出力データセット名 3. コンピュータの機種名 4. 実行プログラムの処理順序 2 ジョブ制御文の種類として間違っているものを選びなさい 1. DD 文 2. PARM 文 3. EXEC 文 4. 空文 3
SP-H6-KC Saison Information Systems CO.,LTD
SP-H6-KC-01-03 - 1 - Saison Information Systems CO.,LTD HULFT for K Ver.2.1 移行説明書 1. 概要当説明書では 既にご使用になっている HULFT for K を旧製品からVer.2.1 に移行 ( バージョンアップ レベルアップ リビジョンアップ ) するための手順 注意事項を説明しています また バージョンアップ レベルアップ時は
Microsoft PowerPoint - lec10.ppt
今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ
プログラミング実習I
プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 [email protected] 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.
