3章:命令と入出力
3.3 入出力文て
3.3 入出力文
ここでは入出力文の「READ」、「PRINT」、とファイル処理について説明する。
データを入力する時はREAD文、データを出力する時はPRINT文、またはWRITE文を使用する。
3.3.1 READ文
データを読み込む場合は、READ文を使用する。
入力装置からデータを複数入力する時は、データを(,)か1桁以上のスペースで区切って入力する。
書式を指定しない方法
書式を指定しないREAD文は、以下のように書く。
READ(装置番号,*) 変数1,変数2 ・・・
装置番号に対応する入力装置から入力されたデータを変数1、変数2に割り当てる。
- 装置番号に*を指定すると「標準入力」となり、通常はキーボード入力となる。多くの処理系では、標準入力の装置番号は「5」である。
- 装置番号の次に*を指定すると、書式を指定しないで処理系が定めた一定の形式でデータの入力を行う。
よって、書式を指定しないでキーボードからデータを入力する場合は、以下のように簡単に書くことができる。
READ *, 変数1 ・・・
または
READ(*,*) 変数1 ・・・
書式を指定する方法
書式を指定するREAD文は、以下のように書く。
書式の詳細は、「3.3.3 書式の書き方」を参照のこと。
READ([UNIT=]装置番号,[FMT=]文番号) 変数1,変数2 ・・・
文番号 FORMAT(書式)
装置番号に対応する入力装置から入力されたデータを、指定した文番号に書かれている書式で読み込み、変数1、変数2に割り当てる。
または、READ文の文番号のところに直接書式を書くこともできる。
READ([UNIT=]装置番号,[FMT=]書式) 変数1,変数2 ・・・
(例)キーボードから入力されたデータ、整数型3桁(編集記述子=I3)を変数Aに割り当てる
READ(*,10) A
10 FORMAT(I3)
または
READ(*,’I3’) A
READ文、WRITE文の[UNIT=]と[FMT=]は省略が可能だが、省略する時はどちらも省略し、書く場合はどちらも書くようにする。
また、入力されるデータの数が決まっていない時は、以下のように書くと便利である。
READ(装置番号,FORMAT文の文番号,END=飛び先の文番号) 変数1,変数2 ・・・
装置番号に対応する入力装置から入力されたデータを、FORMAT文の文番号に書かれている書式で読み込み、変数1、変数2に割り当て、入力されたデータをすべて読み込んだら、飛び先の文番号に書かれている処理を実行する。
3.3.2 PRINT文
データを出力する時はPRINT文を使用する。
データ出力には、WRITE文も使用できる。PRINT文は画面出力のみに対して、WRITE文は、画面出力とファイル出力が可能である。
書式を指定しない方法
書式を指定しないPRINT文は、以下のように書く。
PRINT *, 変数1,変数2 ・・・
変数1、変数2をディスプレイに出力する。
PRINTの次に*を指定すると、書式を指定しないで処理系が定めた一定の形式でデータを出力する。
また、変数を指定しないで使用することもできる。
PRINT *
この場合は空白行が出力される。
書式を指定する方法
書式を指定するPRINT文は、以下のように書く。
書式の詳細は、「3.3.3 書式の書き方」を参照のこと。
PRINT 文番号, 変数1,変数2 ・・・
文番号 FORMAT(書式)
指定された文番号に書かれている書式で、変数1、変数2をディスプレイに出力する。
または、PRINT文の文番号のところに直接書式を書くこともできる。
PRINT 書式, 変数1,変数2 ・・・
指定された書式で、変数1、変数2をディスプレイに出力する。
3.3.3 書式の書き方
書式は、書式記述子を(,)で区切って書く。
書式記述子は以下のようなものがある。
編集記述子 | 形式 | 説明 |
---|---|---|
I | Iw[.m] | 整数データを変換する |
F | Fw.d | 指数なし実数型データを変換する |
E | Ew.d[Ee] | 指数付き実数型データを変換する |
EN | ENw.d[Ee] | 工学表記で実数型のデータを変換する |
ES | Esw.d[Ee] | 科学表記で実数型のデータを変換する |
G | Gw.d[Ee] | あらゆる型の数値データを変換する |
L | Lw | 論理データを変換する |
A | A[w] | 文字データを変換する |
B | Bw[.m] | 2進数字列で整数データを変換する |
O | Ow[.m] | 8進数字列で整数データを変換する |
Z | Zw[.m] | 16進数字列で整数データを変換する |
'…' , "…" | '文字定数' , "文字定数" | ' ' または " " で囲まれた文字列を出力する |
斜線 | / | 現在の入出力を終了し、次の行へ行く |
コロン | : | 入出力項目をすべて使用したら編集を終了する |
T | Tn | データ変換を現在位置から開始する |
TL | TLn | データ変換を現在位置よりn桁左から開始する |
TR | TRn | データ変換を現在位置よりn桁右から開始する |
X | nX | 入力時は項目がスキップされ、出力時は項目すべてが空白になる |
BN | BN | 入力データ中の空白を無視する |
BZ | BZ | 入力データ中の空白を0として扱う |
w : 0以外の符号なし整定数で、フィールドの幅を指定する
m : 符号なし整定数で、入力または出力する桁数を指定する
d : 符号なし整定数で、小数点の右側の小数部分の桁数を指定する
e : 0以外の符号なし整定数で、指数フィールドの桁数を指定する
n : 0以外の符合なし整定数で、文字位置を指定する
3.3.4 ファイル処理
ここでは「OPEN」や「CLOSE」を使った外部ファイルの接続と解除について説明する。
外部ファイルとは
大量のデータを扱う場合や、プログラム実行後にデータを保存する場合に作るファイルのことである。
OPEN文
外部ファイルと接続する時に使う命令で、以下のように書く。
OPEN([UNIT=]装置番号,FILE=外部ファイル名[,制御項目])
■外部ファイル名
外部ファイル名を文字型で指定する。
■制御項目(任意)
主な制御項目は以下のとおりである。
STATUS指定子
ファイルの状態を制御する時に使い、以下のように書く。
STATUS=ファイルの状態
「ファイルの状態」は、次のいずれかを指定する。
値 | 説明 |
---|---|
OLD | 既存のファイルに対して処理を開始する。 |
NEW | 新しいファイルを作成する。生成後はステータスが「OLD」に変更される。 |
REPLACE | ファイルが存在する場合は、そのファイルのステータスを「OLD」に変更して置き換えられ、新しいファイルが作られる。ファイルが存在しない場合は、そのファイルが作られ、生成後はステータスが「OLD」に変更される。 |
SCRATCH | ファイルが生成され、CLOSE文の実行、またはプログラムの終了によって削除される。SCRATCHを指定した場合、外部ファイル名を書くことは禁止である。 |
UNKNOWN | 処理系で定められた状態。 |
この項目を省略した場合は「UNKNOWN」になる。
ACTION指定子
入出力動作を制御する時に使い、以下のように書く。
ACTION=入出力動作
「入出力動作」は、次のいずれかを指定する。
値 | 説明 |
---|---|
READ | 読み込み専用 |
WRITE | 書き込み専用 |
READWRITE | 読み書き用 |
この項目を省略した場合は「READWRITE」になる。
POSITION指定子
ファイル入出力開始位置を制御する時に使い、以下のように書く。
POSITION=ファイル入出力開始位置
「ファイル入出力開始位置」は、次のいずれかを指定する。
値 | 説明 |
---|---|
REWIND | ファイルの先頭 |
APPEND | ファイルの終わり |
ASIS | 現在位置 |
この項目を省略した場合、ファイルがすでにオープンしている時は、現在位置のまま変わらない。ファイルが存在していない時は、ファイルが作成されて先頭に位置付けられる。
IOSTAT指定子
ステータス変数を制御する時に使い、以下のように書く。
IOSTAT=ステータス変数
ファイルのオープンが正常に実行された場合は0、それ以外は正の値が代入される。
このほかにもACCESS指定子(アクセス方式制御)、FORM指定子(ファイルのデータ形式の制御)、RECL指定子(レコード長の制御)、ERR指定子(ERR検出時の制御)、BLANK指定子(空白の制御)、DELIM指定子(区切り文字の制御)がある。
OPEN文
OPEN(12,FILE=’FILE_1’,STATUS=’NEW’,ACTION=’READ’)
装置番号12に「FILE_1」という名前で、読み込み専用の新しいファイルを作成する。
外部ファイルとのデータ転送は、READ文、WRITE文で行う。その際、READ文、WRITE文の装置番号はOPEN文で指定した装置番号を書く。
CLOSE文
ファイルと入出力命令で指定した外部入出力装置の識別子との接続を解除する時に使う命令で、以下のように書く。
CLOSE(装置番号[,制御項目])
■制御項目(任意)
制御項目の主なものは以下のとおりである。
STATUS指定子
ファイルの状態を制御する時に使い、以下のように書く。
STATUS=ファイルの状態
「ファイルの状態」は、次のいずれかを指定する。
値 | 説明 |
---|---|
KEEP | 接続を解除した後もファイルを保存する。 |
DELETE | 接続を解除した後はファイルを消去する。 |
IOSTAT指定子
ステータス変数を制御する時に使い、以下のように書く。
IOSTAT=ステータス変数
ファイルのクローズが正常に実行された場合は0、それ以外は正の値が代入される。
ERR指定子
エラーが検出されると、文番号に制御が移される。
(例)
CLOSE(12)