N88-BASIC(86) PRINT#命令
PRINT#
- 機能
- シーケンシャルファイルにデータを出力する
- 書式
- PRINT #ファイル番号,[式...]
- 文例
- PRINT #2,A,B,C
出力モードでオープンしたファイル(シーケンシャルファイル,スクリーンファイル,プリンタなど)や, RS-232C回線ファイルに,〈式〉により指定した文字列,数値などのデータを書き出します.〈式〉が省略された場合には,たんに改行コード(CHR$(13))のみを書き出します.
〈ファイル番号〉には, OPENによって,そのファイルをオープンしたときに使った番号を指定します.
〈式〉には,ファイルに書き込む数値式,文字式を指定します.
PRINT#は, PRINTで画面に出力する場合と同様の形式で,ファイルにデータを書き出しますが,とくにシーケンシャルファイルへの書き出しの際には,入力時にこれらのデータがファイルから正しく読み出せるような形式になるように,適切に区切らなければなりません(INPUT#参照).
以下,ディスク上のシーケンシャルファイルに対して書き出しを行う場合につき,データの区切りかたについて説明します.
〈式〉が数値式の場合は,セミコロン(; )で区切ります.たとえば,
A=123 8=456 C=-78 PRINT #1,A;8;C
とすると,ディスクには次のように書き込まれます.
口123口口456口-78 (口は空白を意味します)
もし,区切り記号にコンマを使うとプリント領域の間に挿入される余分な空白もディスクに書き出してしまいます(挿入される空白の個数はPRINTの場合と同じです)ので,ディスクの記憶容量がむだ使いされます.
〈式〉が文字式の場合,セミコロンで区切り,かつPRINT#中に独立した区切り記号を入れます(コンマをダブルクォーテーションで囲むなど).たとえば,
A$="CAMERA" B$="93604-1" PRINT #1,A$;",";B$
とすると,ディスクには次のように書き出されます.
CAMERA,93604-1
","を使わないで, PRINT #1,A$; B$とした場合には,ディスクにはCAMERA936041と書き出されてしまいます.これでは区切りの記号がありませんから2つの別の文字列として読み込むことはできません.
文字式それ自身がデータとしてコンマ,セミコロン,意味のある始めの空白,キャリッジリターン(CHR$(13)),またはラインフィード(CHR$(10))などを含む場合は,ダブルクォーテーションコード(CHR$(34))によって囲んでディスクに書き出さなければなりません.たとえば,
A$="CAMERA,口AUTOMATIC" B$="口口口93604-1" PRINT #1,A$;",";B$
とするとディスクには,
CAMERA,口AUTOMATIC,口口口93604-1
と書き出されます.これではA$の中のコンマがデータの区切りとなってしまい, INPUT #1,A$,B$としてデータを読み込むと, A$には CAMERAを, B$には口AUTOMATICを読み込んでしまい,口口口93604-1は読み込まれないで残ってしまいます.
これを避けるには,
PRINT #1,CHR$(34);A$;CHR$(34);CHR$(34);B$;CHR$(34)
と指定します.この場合ディスクには,
"CAMERA,口AUTOMATIC""口口口93604-1"
と書き出されますので, INPUT #1, A$, B$とすれば, "CAMERA,口AUTOMATIC"をA$に,"口口口93604-1"をB$に読み込むことができます.
注意:出力対象ファイルが"SCRN:"の場合,日本語データの出力はできません.
参照:INPUT#, PRINT# USING, WRITE# ,サンプルプログラム 28
出典:N88-日本語BASIC(86)(Ver6.2) リファレンスマニュアル、日本電気株式会社、1991年発行