N ランタイム スイッチ

作成したプログラムのすべての行順編成ファイルにヌルを挿入できます。
制約事項: これらのスイッチは、ネイティブ COBOL でのみサポートされます。

プロパティ:

デフォルト: オン
タイプ: ファイル処理

説明:

このスイッチは、ユーザーのファイル形式がこの COBOL システムと互換性がない場合に特に役立ちます。

このスイッチを有効にすると、プログラムが、制御文字 (つまり、ASCII コードが x"1F" 以下のすべての文字) を含むレコードを行順編成ファイルに書き込む際、各制御文字の前に、システムでヌル文字 (x"00") が追加されます。同じように、行順編成ファイルからレコードを読み取る場合は、これらのヌル文字が制御文字から削除されます。

このスイッチを設定すると、行順編成ファイルのデータの物理記憶域にのみ作用します。レコードが書き込まれた際の設定と、読み込まれた際の設定が同じである場合は、レコードが同じ形で返されます。しかし、書き込まれた際の設定と反対の設定でファイルを読み込もうとすると、予期しない結果になります。

このスイッチを無効にすると、制御文字の書き込み、および読み込みは、他の文字と同様に実行されます。

N スイッチを有効にすると、次のようになります。

  • 行順編成ファイルのデータ レコードではすべての文字が使用できます。
  • 各レコードは確認してから書き込まれます。値が x"1F" 以下のすべての文字は、先頭にヌル (x"00") が追加された 2 バイトのペアという形式で書き込まれます。ディスクに出力する際には、後続空白文字が削除され、レコード終了記号 x"0D0A" が追加されてレコードが終了します。
  • ファイルがレコードの集まりとして読み取られます。この中に、最初のバイトがヌルの 2 バイトのペアが含まれるレコードもあります。レコードはレコード終了記号で終了されます。各 2 バイトのペアの先頭のヌルは削除され、最終的なデータ レコードが取得されます。2 バイトのペアを構成しないタブ (x"09") が展開されます。

ファイル ハンドラー構成オプション INSERTNULL は、N ランタイム スイッチよりも優先されます。

注: 制御文字はオペレーティング システムによって異なります。制御文字の 16 進の値は常に x"1F" よりも小さくなります。CR (x"0D")、LF (x"0A")、TAB (x"09")、NUL (x"00")、および EOF (x"1A") はすべて、Windows で制御文字として認識されます。

N スイッチを無効にすると、次のようになります。

  • 行順編成ファイルのデータ レコードには ASCII テキスト文字 (x"1F" よりも大きいコードの文字) のみを含む必要があります。
  • 出力をディスクに書き込む際には、後続空白文字が削除され、レコード終了記号 x"0D0A" がレコードの終わりに追加されます。プリンター制御文字もディスクに書き込まれます。
  • ファイルは、レコード終了記号で終わる各レコードのデータとして読み込まれます。データに x"0D" または x"0A" が含まれている場合は、予期しない結果になることがあります。タブ文字 (x"09") は空白文字に展開されます。または、データ レコードがそのまま返されます。

例:

次のコマンドは、プログラム Myprog をロードします。

Windows:
a:myprog (-n)
UNIX:
cobrun[_t] -N myprog

ここで Windows を使用している場合は、a: ドライブを使用しているものとします。また、行順編成ファイル内で、タブコードおよびファイル制御文字を除く、x"1F" またはそれより小さいコードのすべての文字はデータして扱われます。出力時に、x"1F" よりも小さいデータ文字の前にヌルは挿入されません。