ここでは、メインフレームと PC 間でのファイルの移動に役立つ Visual COBOL の次のユーティリティについて説明します。
ファイル変換ユーティリティ | 用途 |
---|---|
DFCONV | ダウンロードしたデータファイルを、PC で必要な形式に変換します。 |
VRECGEN | メインフレームファイルを、メインフレームから PC にダウンロードするために必要な形式に変換します。 |
VRECGEN2 | PC からアップロードされたファイルをメインフレームで必要な形式に変換します。 |
DFCONV ユーティリティは、データファイルコンバータとも呼ばれ、データファイルを変換します。 このユーティリティは、ファイル形式、編成、データ形式の変換、およびデータファイル変換プロファイルを使用した索引ファイルの再編成を実行するためのバッチおよび呼び出しプログラムインターフェイスを提供します。
データファイルコンバータでは、次の処理を実行できます。
注:
以後の項では、データファイルコンバータの 2 つの操作について説明します。
コマンド ラインは、次のとおりです。
dfconv profile-fname [input-fname] [output-fname] [-d]
パラメーターの内容は、次のとおりです。
profile-fname | 実行する必要のある作業の詳細を含むプロファイルファイルの名前 (『プロファイルファイルでのファイル変換の定義』の項を参照) |
input-fname | 入力ファイルの名前 (オプション) |
output-fname | 出力ファイルの名前 (オプション) |
入力ファイル名と出力ファイル名はプロファイルファイルから抽出できるため省略できます。 プロファイルファイルのみではなく、コマンド ラインでもファイル名を指定した場合は、コマンド ラインで指定した名前が優先されます。
変換中にエラーが発生した場合は、変換後にオペレーティング システムのエラーレベル (ERRORLEVEL) は 0 以外に設定されます。 バッチファイルから変換を実行している場合は、このエラーレベルを調べ、変換後に実行するアクションを決めることができます。
変換のプロファイルが存在する場合は、変換を行うために、次のインターフェイスを使用してデータファイルコンバータを呼び出せます。
call dfconv using dfconv-params
この場合の dfconv-params は、次のように定義します。
01 dfconv-params. 03 profile-filename PIC X(65). 03 input-filename PIC X(65). 03 output-filename PIC X(65).
パラメーターの内容は、次のとおりです。
profile-filename | データファイル変換の詳細を含むプロファイルファイルの名前 (『プロファイルファイルでのファイル変換の定義』の項を参照) |
input-filename | 入力ファイルの名前 |
output-filename | 出力ファイルの名前 |
パラメーターフィールドのみではなく、プロファイルファイルでファイル名を指定した場合は、パラメーターフィールドで指定した名前が優先されます。
エラーが発生した場合は、データファイルコンバータから戻ったときに、RETURN-CODE にゼロ以外が設定されます。このエラー番号は、profile-filename フィールドに返されます。
以後の項では、データファイルコンバータを使用して、データファイルを変換し、ファイル索引をリビルドする方法について説明します。
ファイルをある形式から別の形式へ変換すると、データをある形式から別の形式へ再構築できます。 たとえば、ファイル順編成から索引編成へ変換できます。 また、アプリケーションの変更の必要性に応じて、二次索引を追加することもできます。 データファイルコンバータを使用する場合は、作成済みのデータを再作成したり、特別な変換プログラムを作成する必要はありません。
多くのファイル転送パッケージではある形式から別の形式へファイルを変換しても、ファイル全体が別のデータ形式に変換されるのみです。 一般的な COBOL データファイルとデータベースレコードは、さまざまなテキストとバイナリ データで構成される複雑なレコード構造になっており、それらも変換する必要があります。 データファイルコンバータの GUI バージョンでは、レコードレイアウトの記述を使用してデータを簡単に変換できます。レコードレイアウトファイルの作成方法の詳細については、『データ ファイルの操作』の『データファイル ツールの使用』の章にある『レコード レイアウトの操作』の項を参照してください。
データファイルコンバータでは、内部浮動小数点形式を、IEEE 形式と S/370 形式間で変換できます。
メインフレームのファイルは、PC に転送するときにバイナリ形式にする必要があります。最初に、このファイルが可変長の索引ファイルである場合は、メインフレームプログラム VRECGEN を使用して、メインフレームでそのファイルの初期再フォーマットを実行してください。 再フォーマット後に、データファイルコンバータで、そのファイルをダウンロードして処理できます。
メインフレームのレポート形式ファイルは、メインフレームから PC へダウンロードされたファイル、または、アプリケーションで作成され PC にダウンロードされ PC で実行されるファイルのどちらかです。
メインフレームレポート形式には、データファイルコンバータによって PC で印刷可能な形式に変換されるキャリッジ制御文字が含まれます。 メインフレームレポートファイルを定義する場合は、レコード長にキャリッジ制御文字を含め、レコードは固定長にする必要があります。 PC 印刷ファイルでは、レコード長はデータ長のみになります。
PC 印刷形式ファイルは、1 行あたり 132 文字の印刷が可能な標準の ANSI プリンターで印刷できます。 1 行あたり 80 文字しか印刷できない ANSI プリンターを使用する場合は、ファイルを圧縮モードで印刷する必要があります。
ダウンロードされたメインフレームアプリケーションを使用して PC で作成された入力ファイルをメインフレームレポート形式ファイルとして指定した場合には、エラー メッセージ 139(「入力ファイルは、"本物の" メインフレームレポート形式ではありません。」) が表示されます。 このエラーは、プリンター出力をメインフレームレポート形式ではなく、PC 形式で作成すると発生する場合があります。 プログラムのコンパイルと実行を制御するために使用する指令をチェックしてください。
データファイルコンバータでは、メインフレームレポートファイルと PC 印刷ファイル間の変換を特別にサポートします。 これらの形式と他の形式間の変換はサポートされません。
レコードを追加、削除および変更して索引ファイルを更新すると、索引構造体とデータ構造体は切り離され、処理効率が悪くなります。 さらに、削除されたレコードに残された領域は常に再使用されるわけではないので、ファイルが必要以上に大きくなってしまいます。 多数の変更を行った後は、索引ファイルを再編成することをお奨めします。 入力ファイルと出力ファイルの設定を一致させるために、データと索引を順番にリビルドして、空き領域を再利用し、ファイルのパフォーマンスとデータの完全性を最適化できます 。
ここでは、プロファイルファイルでファイルの変換、またはファイルをある編成から別の編成へ再構築するために必要なエントリについて説明します。 たとえば、次のいずれか 1 つを実行しなければならないとします。
DFS Profile File Version V09.B01.07 Batch-Process: Convert-file *************************************************** * (Twin) (Single) * * オプション: Convert-File Rebuild-index * * Rebuild-index-and-data None * *************************************************** Strt-file: drive:\path\filename.STR Edit-Mode: Quick * オプション: Quick/Full * -------------------------------------------------------------------------------- Input-File drive:\path\inputfile.dat Format: Micro-Focus * オプション: Micro-Focus IDXFORMAT(4) * * Btrieve C-ISAM * * LEVEL-II ESDS * Organization: VRECGEN * オプション: Sequential Line-Sequential * * Indexed Mainframe-Report-ANSI * * Relative Mainframe-Report-mach * * VRECGEN PC-Print * Record-Format: Variable * オプション: Fixed/Variable * Character-Set: EBCDIC * オプション: ASCII/EBCDIC * Floating-Point: 370 * オプション: IEEE/370 * Compression: Off * オプション: On/Off * Min-Rec-Length: 352 Max-Rec-Length: 633 -------------------------------------------------------------------------------- Output-File drive:\path\outputfile.dat Format: Micro-Focus Organization: Indexed * オプション: Sequential Line-Sequential * * Indexed Mainframe-Report-ANSI * * Relative PC-Print * * VRECGEN2 * Record-Format: Variable Character-Set: EBCDIC Floating-Point: 370 Compression: Off Min-Rec-Length: 352 Max-Rec-Length: 633 * キー設定 * * d= 重複を許可 * * s= スパース文字集合 * * 圧縮 * * cd= 重複 * * cl= 先頭余白 * * ct= 後部余白 * Prime-key : 1:1, 2:6 Alt-Key 1: 8:1 d,cl Alt-Key 2: 9:1 d,cd,ct Alt-Key 3: 10:5
このファイル内の最初のレコードは、プロファイルファイルの形式を示しています。 DFCONV で使用されるプロファイルは、以前の Workbench で使用されているものと同じ形式です。
実行する操作は、Batch-Process オプションのパラメーターとして選択します。
Batch-Process | 定義されたファイルで実行される操作。
Convert-file Rebuild-index Rebuild-index-and-data |
Input-File はすべての操作に対して定義され、Output-File は Convert-file および Rebuild-index-and-data で定義されます。 Rebuild-index 操作では入力データファイルのファイル索引を再作成するため、Output-File の記述は不要です。
Strt-file | 入力ファイルのレコードレイアウト記述を含むファイル。
No-structure location\filename.str |
データファイルを EBCDIC と ANSI 間で変換するときに、レコードにテキスト以外のデータ項目が含まれる場合は、変換が必要なデータ項目と変換しない項目 (バイナリ値など) とを定義するためにレコードレイアウトの記述が必要です。 レコードレイアウトは、レコードレイアウトエディタで作成し、.str ファイル拡張子の付いたファイルに保存します。レコードレイアウトファイルの作成方法の詳細については、『データ ファイルの操作』の『クラシック データファイル ツール』の章にある『データ ファイルの操作』の項を参照してください。
Edit-Mode | このプロファイルをデータファイルエディタで読み取る場合の編集モード。
Quick Full |
このパラメーターは DFCONV では使用されません。
最初に、入力ファイルを選択します。
Input-File | 定義された操作に対する入力ファイル名。 |
次に、パラメーターを使用して入力ファイルの説明を記述します。
作成されているファイルが索引ファイルである場合は、次のレコードを使用してキーを定義します。
最初に、出力ファイルを選択します。
Output-File | 定義された操作に対する出力ファイル名。 |
次に、パラメーターを使用して出力ファイルの説明を記述します。
パラメーター | 説明 |
---|---|
Format | 出力ファイルのファイル形式。
デフォルトの形式は Micro Focus です。これは通常 PC 上で作成されたファイルに使用されます。 ファイルがメインフレームの VSAM エントリ順データセットのエミュレーションである場合は、ESDS を選択して、PC に VSAM ESDS のエミュレーションを提供します。 VSAM KSDS と RRDS の場合は、Micro Focus 形式を選択します。 |
Organization | 出力ファイルのファイル編成。
|
Record-Format | 出力ファイルのレコード形式。
注:可変長メインフレームレポートファイルはサポートされません。 |
Character-Set | 出力ファイルで使用される文字符号化方式。
注:Visual COBOL で使用される文字符号化方式は、EBCDIC と ANSI です。ASCII は、以前 Workbench で使用されていますが、このユーティリティでは ANSI を表します。 |
Floating-Point | 出力ファイルで使用される浮動小数点形式のタイプ。
|
Compression | データ圧縮を出力ファイルで使用するかどうかを示します。
|
Min-Rec-Length | 出力ファイルの最小レコード長。
ファイルが固定長である場合は、最大レコード長と同じ値に設定する必要があります。 |
Max-Rec-Length | 出力ファイルの最大レコード長。 |
作成されているファイルが索引ファイルである場合は、次のレコードを使用してキーを定義します。
Prime-key | 主キーの開始位置 (カラム) と長さ。 開始位置 (オフセット) は 1 から開始します。データファイルコンバータの GUI バージョンの「キー情報」ダイアログボックスでは、キーオフセットは 0 から開始します。
位置:長さ (1:12 など)。位置フィールドと長さフィールドの区切りにコロンを使用します。 プロファイルファイルの 2 つ目のレコードでは、作成されている索引ファイルに必要なキーフラグが設定されます。フラグはカンマで区切ります (d,cd など)。
|
副キーは、主キーの後に定義し、最初の副キーには「Alt-Key 1:」というキーワードを使用し、2 つ目の副キーには「Alt-Key 2:」というキーワードを使用します。 主キーでは、副キーを定義しているプロファイルファイル内で 2 つのレコードの形式が定義されます。
副レコードキーは最大 63 個まで定義できます。それぞれのキーについて、レコード内の位置と長さ、および重複値が許可されるかどうかを指定します。 各キーは分割可能で、重複キーを定義できます。
分割キーは、キー定義レコード内で複数の位置と長さの定義を、カンマと空白で区切って指定します (1:12, 20:5 など)。
入力ファイルと出力ファイルを定義する場合は、次の点に注意する必要があります。
レコード長情報はファイル ヘッダーから抽出され、プロファイルファイル内の入力ファイルで定義されたレコード長情報を置き換えます。
入力レコード長と出力レコード長を設定し、メインフレーム印刷形式ファイルのレコード長が、キャリッジ制御文字を保持できる 1 文字以上の長さになるようにする必要があります。
データファイルコンバータではプロファイルを解釈できません。ファイルコンバータは DOS および ANSI に基づいたプログラムにのみ適用されます。 適切な処理を行うためには、ANSI に基づくプログラムを使用してデータファイルコンバータを呼び出します。
出力ファイルタイプとして、行順は指定できません。 バイトに X'1B' 以下の値が含まれる場合は常に追加バイト (X'00') が ANSI 行順レコードに挿入されるため、必要以上に大きいファイルになってしまう場合があります。 追加のバイトを含めて行順編成ファイルに保持されているデータにヌル保護を提供しないと、これらのバイトは、このタイプのファイルで使用される制御文字として解釈されます。
データファイルからリビルドへのインターフェイスは、破損した索引のリビルドをサポートします。
DFS Profile File Version V08.U04.01 Batch-Process: Rebuild-index *************************************************** * (Twin) (Single) * * オプション: Convert-File Rebuild-index * * Rebuild-index-and-data None * *************************************************** Strt-file: No-structure Edit-Mode: Quick * オプション: Quick/Full * -------------------------------------------------------------------------------- Input-File e:\test\testidx.dat Format: Micro-Focus * オプション: Micro-Focus IDXFORMAT(4) * * Btrieve C-ISAM * * LEVEL-II ESDS * Organization: Indexed * オプション: Sequential Line-Sequential * * Indexed Mainframe-Report-ANSI * * Relative Mainframe-Report-mach * * VRECGEN PC-Print * Record-Format: Variable * オプション: Fixed/Variable * Character-Set: ASCII * オプション: ASCII/EBCDIC * Floating-Point: IEEE * オプション: IEEE/370 * Compression: Off * オプション: On/Off * Min-Rec-Length: 352 Max-Rec-Length: 633 * キー設定 * * d= 重複を許可 * * s= スパース文字集合 * * 圧縮 * * cd= 重複 * * cl= 先頭余白 * * ct= 後部余白 * Prime-key : 1:1, 2:6 Alt-Key 1: 8:1 d Alt-Key 2: 9:1 d
リビルド機能は、索引順編成ファイルをリビルドする場合にのみ使用できます。 他のファイル形式をリビルドするには、入力ファイルと出力ファイルに同一の設定を使用するファイル変換機能を使用します。
注:上記で説明したプロファイルファイルを使用している場合は、Prime-key フィールドで定義したオフセットは 1 から開始します。ただし、データファイルコンバータの GUI バージョンを使用する場合は、キーのオフセットは「キー情報」ダイアログボックスで 0 から開始します。データファイルコンバータの詳細については、『データファイルの変換』の章を参照してください。
破損した索引のある索引ファイルは、このオプションを使用して回復できます。 索引が破損するのは、プログラムによって索引ファイルを開いて変更したが、ファイルを閉じていない状態で電源が切断された場合などです。 索引が破損したことを示すフラグがファイル内で検出されると、そのファイルに次にアクセスするときにレポートされます。 データの完全性が回復されるまでは、そのファイルではそれ以上の操作は実行できません。
リビルドでは、回復に必要な索引のみをリビルドします。 索引がすでに存在する場合は、リビルドはそのファイル内の情報を使用して索引を回復しようとします。
リビルドを使用する場合は、次の点に注意する必要があります。
エラー メッセージについては、Net Express オンラインヘルプに記載されています。([ヘルプ] メニューの [ヘルプトピック] をクリックします。[目次] タブで、[リファレンス]、[エラー メッセージ]、[データファイルコンバータのメッセージ] をダブルクリックします。)
VRECGEN は、メインフレームユーティリティです。 VRECGEN を使用して、可変長のメインフレームファイルのコピーを作成します。 作成されたコピーでは、メインフレームから PC へダウンロードするためにデータレコードにレコード長情報を埋め込みます。Micro Focus は、VRECGEN ユーティリティのソースコード (vrecgen.cbl) を提供しています。ただし、使用前にソースコードを変更し、提供されているバージョンの vrecgen.cbl で指定されていないオプションを指定する必要があります。
VRECGEN で作成されるファイルには、各可変長データレコードの前に 2 バイトのレコード長フィールドがあります。 レコード長フィールドには、2 バイトのレコード長フィールドに可変長データレコードの長さを加えた値が含まれます。 多くのファイル転送ソフトウェア (IBM SEND/RECEIVE など) では論理レコードを処理し、各レコードの長さを含む「レコード記述ワード」を削除するため、このフィールドが必要になります。 この情報がない場合は、レコードを区切って、PC 上でデータセットをリビルドすることはできません。
VRECGEN で作成されたファイルは、特別なダウンロード形式で表されます。 このファイルをバイナリ形式で転送するには、標準の転送ユーティリティを使用する必要があります。 このファイルは、データファイルコンバータで処理できます。
注:VRECGEN のソースコード (vrecgen.cbl) は、Micro Focus がモデルとして用意しているもので、最終的なユーティリティというわけではなく、変更しないですべてのサイトのニーズを満たすものではありません。アプリケーションやサイトの要件を満たす特定の値を含めるためには vrecgen.cbl を編集する必要があります。一般的に、vrecgen.cbl を編集するのは、最大レコード長を 32,000 バイトよりも大きくするためです。
可変長テストファイルをダウンロードする場合は、まずメインフレーム環境に VRECGEN プログラムをアップロードし、コンパイルする必要があります。 このプログラムは、メインフレームの可変長形式のファイルを変換するためのサンプル COBOL プログラムとして提供されます。
注:各サイトは提供されたソースコードを見直し、可変長ファイルの最大長と最小長を決定する必要があります。 これらの値に MVS 「レコード記述ワード」用の 4 を加えた値を、サンプル FD のレコード記述の OCCURS DEPENDING ON 句で使用する必要があります。
VRECGEN のインストール方法
注:VS COBOL II のリリース 3 以降を使用しているときに、ファイルステータス 39 が発生した場合は、CMPR2 コンパイルオプションを使用して VRECGEN を再コンパイルします。
メインフレームで VRECGEN を実行する前に、適切な JCL 情報を指定する必要があります。 正しい STEPLIB、入力データセット、および出力データセットをポイントする、次の JCL スケルトンを入力します。
//MYJOB JOB (ACCOUNTING INFORMATION) //STP1 EXEC PGM=VRECGEN //STEPLIB DD DSN=STEPLIB,DISP=SHR //SYSOUT DD SYSOUT=* //INPDD DD DSN=INPUT.OS.DATA.SET.DISP=SHR //OUTDD DD DSN=OUTPUT.OS.DATA.SET, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=VB,LRECL=LLL,BLKSIZE=BBB), // SPACE=(TRK,(X,Y),,RLSE), // UNIT=SYSDA
注:
VRECGEN2 は、Micro Focus 可変長レコード形式のファイルを、メインフレーム形式に変換するメインフレームユーティリティです。 このユーティリティを使用すると、これらのファイルをメインフレームにアップロードしてメインフレームで使用できます。
Micro Focus 可変長レコード形式をメインフレーム形式に変換する場合は、まずメインフレーム環境に VRECGEN2 プログラムをアップロードし、コンパイルする必要があります。
次の手順は、100~400 バイトの長さのレコードを持つ可変長データファイルをアップロードする方法を示します。
出力結果は、有効な可変長ファイルとなります。 次に、100 バイトのレコード長を使用した場合の、VRECGEN2 形式のファイルの例を示します。
バイト | 内容 |
---|---|
1-4 | レコード記述ワード |
5-6 | レコード長 |
7-106 | レコードデータ。 最大レコードサイズよりも短い場合は、レコードにヌルバイトが入力されます。 |
注:VRECGEN のファイル形式はメインフレームから PC へのダウンロード、VRECGEN2 のファイル形式は MicroFocus 形式ファイルのメインフレームへのアップロードにそれぞれ使用され、両者に互換性はありません。