WRITET [UNIT (mtu)] variable{THEN statements [ELSE statements] | ELSE statements}
WRITET ステートメントを使用すると、テープ・レコードを磁気テープに書き込むことができます。 variable の値が、次のテープ・レコードになります。variable は、テープに書き込まれるテキストとして評価される式です。
UNIT 節で、磁気テープ装置の数を指定します。装置が指定されない場合は、磁気テープ装置 0 が使用されます。UNIT 節が使用される場合、mtu は、以下の表に示すように、3 桁 10 進値によって構成されるコードとして評価される式です。
| コード | 選択できるオプション |
|---|---|
| m (モード) | 0 = 変換なし 1 = EBCDIC 変換 2 = 上位ビットを反転 3 = 上位ビット反転と EBCDIC 変換 |
| t (トラック) | 0 = 9 トラック。 9 トラック・テープだけがサポートされます。 |
| u (装置番号) | 0 から 7 |
mtu 式は右から左へ読み取られます。mtu が 1 桁のコードとして評価される場合、磁気テープ装置番号を表します。mtu が 2 桁のコードとして評価される場合、右端の桁が装置番号を、その左の桁がトラック番号を表します。
mtu または variable のどちらかが NULL 値と評価されると、WRITET ステートメントは正しく実行されずプログラムはランタイム・エラー・メッセージを出力して終了します。
各テープ・レコードの書き込みは、次のレコードが書き込まれる前に完了します。 プログラムは、テープへのデータ転送が完了するのを待ってから処理を継続します。
WRITET ステートメントが実行される前に、テープ・ドライブ装置がユーザーに利用可能 (割り当て) になっている必要があります。 ASSIGN コマンドを使用すると、テープ装置をユーザーに割り当てることができます。 利用可能なテープ・ドライブ装置がなかったり、ユニット指定が不正な場合は、ELSE 文が実行されます。
WRITET ステートメントが書き込みできるレコードの最大値は、システムによって異なります。 実際のレコードが大きすぎる場合、システムのバイト制限を超える分のバイトは書き込まれません。
STATUS 関数は、READT が ELSE 節を取る場合は 1、それ以外では 0 を返します。
NLS が有効な場合、入出力処理を実行する WRITET およびそのほかの BASIC ステートメントは、ファイルに適したマップを使用して、外部データを内部文字セットに常にマッピングします。 このマップは、キーボードの入力データ、画面上の表示データなどに使用されるファイルのために設定される外部文字セットを定義します。
構文 UNIT ndmtu を指定するプログラムがある場合、nd エレメントは、コンパイラーに無視されるので、エラーが報告されません。
次の例では、テープ・ドライブ 0 にレコードが書き込まれます。
RECORD=1S2S3S4
WRITET RECORD ELSE PRINT "COULD NOT WRITE TO TAPE"
次の例では、数値定数 50 が、テープ・ドライブ 2 の 9 トラック・テープに変換なしで書き込まれます。
WRITET UNIT(002) "50" ELSE PRINT "COULD NOT WRITE"