Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報

ファイル変換ユーティリティ(#NFCNV)

ファイル情報の保守

ファイル変換ユーティリティの使い方の例をいくつか示します。
ファイル変換ユーティリティは、A−VXと、Windows(MS−DOS)やUNIX間でデータファイルを変換するためのユーティリティです。

1 変換できるもの

処理対象ファイルは以下の通りです。A−VXファイルからWindows形式ファイル、Windows形式ファイルからA−VXファイルへの変換ができます。


A−VX形式ファイル
順編成ファイル
相対編成ファイル
索引順編成ファイル
複数索引順編成ファイル



←→

Windows形式、UNIX形式ファイル
MS−DOS標準テキスト形式ファイル(CSV形式1)
MS−DOS標準テキスト形式ファイル(CSV形式2)
MS−DOS標準テキスト形式ファイル(SDF形式)
MS−DOS SYLK形式ファイル
Lotus1−2−3形式ファイル(123形式) R2.1J〜R2.3J
MS−DOSテキスト形式ファイル(テキスト(JIS)形式)
UNIXテキスト形式ファイル(テキスト(EUC)形式)
バイナリ形式ファイル(無変換形式)


2 いくつか例

A−VX順編成ファイルのデータをWindowsのテキスト形式に変換する Windowsのテキスト形式のデータをA−VX順編成ファイルに変換する データベースのデータをWindows上のcsv形式ファイルにする

応用例
A−VX COBOLソースをWindowsなどのテキスト形式ファイルに変換出力 Windowsなどのテキスト形式ファイルからA−VX COBOLソースに変換出力

3 豆知識
・文字化け防止にセンススイッチを設定しよう

普段JSでセンススイッチを使っていない場合、センススイッチの状態がどうなっているかはあまり意識していないことも多いと思います。ところがプログラム内部でセンススイッチを使用していた場合、思わぬ動きをすることがあります。

#NFCNVは入力値としてセンススイッチを使用しています。センススイッチ1がOFFの場合、英数字項目を1バイト/2バイト混在データとして扱い、ONの場合は1バイトのみのデータとして扱う仕組みになっています。

#NFCNV実行時のセンススイッチの状態による英数字項目の扱い
SSW1=ON英数字項目は1バイト(英数字,記号,カタカナ)として扱う
SSW1=OFF英数字項目は1バイト(英数字,記号,カタカナ)/2バイト(日本語文字)混在データとして扱う


例えば直前に実行したCOBOLプログラム中でセンススイッチ1をONにしていた場合、英数字項目は無条件に1バイトとして扱われます。JS中やプログラム中で、条件によりセンススイッチ1をONにしたりOFFにしたりしていた場合、JSを実行するたびに英数字項目が1バイトで扱われたり混在データとして扱われたりしてしまいます。こうなると英数字項目が文字化けしてしまったりする原因となります。

特にCOBOLプログラム中でセンススイッチを変更していたりすると、表面上センススイッチが見えないため、なぜ文字化けするのかまったくわからないということになりがちです。

#NFCNVをJS起動する場合は、直前にセンススイッチを初期化したほうが良いでしょう。

例えばこんな感じ。(英数字項目が1バイト/2バイト混在のとき)
/SET SSW1=OFF;  ・・・センススイッチ1をOFFにする
/RUN #NFCNV;
MN1=C_MN2=AD_PA1=MSD_PA2=_PA3=CIF_PA4=1_PA5=C80_
PB1=D:\TESTFILE.TXT_PB2=TXTJ_PB3=EXCLUSIVE_
PB7=C_PB8=CREATE_MN1=Q_
/> ;

・ファイルの最後にEOFを出さないようにする

#NFCNVでA−VXのファイルをWindowsファイルに変換すると、ファイルの終端にEOF(1A)が出力されます。通常(NECの製品だけなのかもしれませんが)Windowsの順編成ファイルや相対編成ファイルやUNIXのファイルはEOFが無いのが仕様になっているようなので、#NFCNVで変換した後にEOFを削除する必要があります。これは面倒です。

A−VX01辺りの#NFCNVからEOFを出力するかどうかを指定することができるみたいです。

PB2パラメータに以下の値を指定することができます。

パラメータ形式EOF出力有無
CSV1CSV1形式あり
CS1NCSV1形式なし
CSV2CSV2形式あり
CS2NCSV2形式なし
SDF SDF形式あり
SDFNSDF形式なし
TXTJテキスト形式あり
TXJNテキスト形式なし

例えばこんな感じ(テキスト形式でEOF出力なしのとき)

/RUN #NFCNV;
MN1=C_MN2=AD_PA1=MSD_PA2=_PA3=CIF_PA4=1_PA5=C80_
PB1=D:\TESTFILE.TXT_PB2=TXJN_PB3=EXCLUSIVE_
PB7=C_PB8=CREATE_MN1=Q_
/> ;


4 もっと詳しく知りたい

「ファイル連携機能説明書」 を参照してください。