COBOLのSELECT文とASSIGN句の使い方入門!初心者でもわかる丁寧ガイド
生徒
「COBOLでファイルを使うには、どうやってファイルと結びつけるんですか?」
先生
「それには、SELECT文とASSIGN句が必要です。」
生徒
「それぞれ何をするんですか?聞きなれない言葉でちょっと難しそうです…」
先生
「わかりやすく順を追って解説しますね!」
1. SELECT文とASSIGN句とは?
まず、SELECT文とは、「プログラム内で使うファイルを定義するための命令」です。これはファイルに名前をつけて、後のファイル処理で使えるようにします。
そして、ASSIGN句は、「そのファイルが実際にどこにあるか(どのファイル名・パスなのか)」をCOBOLに伝える部分です。
例えるなら、SELECTが「このフォルダを使います」と宣言することで、ASSIGNが「このフォルダはCドライブのドキュメントにありますよ」と教えるイメージです。
2. なぜSELECTとASSIGNが必要?
COBOLプログラムは、自分が扱うファイルをちゃんと登録しておかないと、ファイルが見つからないというエラーになります。
プログラムの冒頭で、「私はこのファイルを使いますよ」「そのファイルはここにありますよ」と教えてあげることで、ファイル処理がスムーズに進みます。
3. SELECTとASSIGNの基本構文
SELECT ファイル名 ASSIGN TO "pathname"
ORGANIZATION IS LINE SEQUENTIAL.
このように書きます。ポイントは:
SELECT:プログラム内で使うファイルの名前を決めます。ASSIGN TO "pathname":実際のファイル名やパスを指定します。「pathname」はファイルが保存されている場所です。ORGANIZATION IS LINE SEQUENTIAL:ファイルの読み書き方法を指定します。ここでは「行ごとに順番に扱います」という意味です。
4. 具体例でSELECTとASSIGNを見てみよう
たとえば、読み込むファイル「input.txt」を使いたいとします。
SELECT IN-FILE ASSIGN TO "input.txt"
ORGANIZATION IS LINE SEQUENTIAL.
ここで:
IN-FILEはプログラム内でのファイル名"input.txt"は実際にパソコン上にあるファイル名(パス)
この定義をしておくと、後からOPEN INPUT IN-FILEなどが使えるようになります。
5. SELECTとASSIGNでファイル処理へ繋がる流れ
実際にファイルを使う流れを整理すると:
- SELECT + ASSIGNでファイル定義(どのファイルを扱うか決める)
- OPEN:ファイルを開く(読み込みなら
OPEN INPUT、書き込みならOPEN OUTPUT) - READ/WRITE:ファイルから読む、または書く
- CLOSE:ファイルを閉じる
この最初のステップであるSELECTとASSIGNが、後の作業の土台になります。
6. ファイル名とパスの指定、よくある注意点
ファイル名やパスを間違えると、COBOLはそのファイルを見つけられずエラーになります。
- ファイルがプログラムと同じフォルダにないときは、
"C:\data\input.txt"のようにフルパスを指定しましょう。 - WindowsとUNIXではパスの区切り文字(「¥」と「/」)が違うので環境に合わせてください。
- ダブルクオート(")を忘れずに!
7. よく使うキーワードまとめ
- SELECT:プログラム内で使うファイルに名前をつける
- ASSIGN TO "…":その名前を実際のファイル名やパスに結びつける
- ORGANIZATION IS LINE SEQUENTIAL:行単位でファイルを扱う指定
8. 初心者でも覚えやすいポイント
ファイルを使うときは、この順番で考えましょう:
- STEP①:ファイルを“定義”する →
SELECT … ASSIGN TO … - STEP②:ファイルを“開く” →
OPEN - STEP③:ファイルを“読む/書く” →
READ/WRITE - STEP④:ファイルを“閉じる” →
CLOSE
分からなくなったら、SELECTとASSIGNのところに戻って、「ここが定義ミスじゃないか?」と確認するのがコツです。
まとめ
COBOLにおけるファイル処理の第一歩として欠かせないのが、SELECT文とASSIGN句の正しい理解です。これらはプログラム内でファイルを取り扱うための「宣言」と「接続」の役割を果たしており、後続のOPENやREAD、WRITEなどの命令と密接につながっています。
特にASSIGN句では、実際のファイルパスを指定する必要があるため、環境に応じたパスの記述方法や注意点(ダブルクオートやスラッシュの使い方)を意識することが重要です。プログラム内で使用するファイル名と、実際のファイル名の結びつきをしっかり把握することで、COBOLプログラムは安定してファイルを操作できるようになります。
例えば、以下のようにSELECTとASSIGNを使ってファイルを宣言することが一般的です。
SELECT INPUT-FILE ASSIGN TO "data/input.txt"
ORGANIZATION IS LINE SEQUENTIAL.
この定義を行うことで、OPEN INPUT INPUT-FILE や READ INPUT-FILE などの命令が正しく機能します。逆に、SELECTやASSIGNを忘れたり、パス指定を間違えたりすると、ファイルが見つからないエラーに悩まされる原因になります。
実務でもCOBOLを使った帳票処理やログ出力、データ移行など、多くの処理がファイルとの連携に依存しています。そのため、このSELECT文とASSIGN句は単なる文法事項ではなく、実践的なコーディングスキルの基盤でもあるのです。
また、SELECTやASSIGNの定義はENVIRONMENT DIVISIONのINPUT-OUTPUT SECTION内で記述されることも覚えておくと良いでしょう。COBOLではセクションごとに記述場所が厳格に決まっているため、構造を守ることも大切です。
最後にもう一度、ファイル処理の流れを振り返っておきましょう。
- STEP1:
SELECTとASSIGNでファイルを定義 - STEP2:
OPENでファイルを開く - STEP3:
READやWRITEでファイル操作 - STEP4:
CLOSEでファイルを閉じる
この一連の流れが理解できれば、COBOLでのファイル処理は格段にスムーズになります。今回学んだSELECT文とASSIGN句の役割をきちんと身につけておくことで、エラーの原因追及や保守作業でも非常に役立ちます。
生徒
「先生、SELECT文とASSIGN句って、ただの設定かと思ってましたけど、結構大事なんですね!」
先生
「そうだね。ファイルを使うCOBOLプログラムでは、どんなファイルをどこで使うかを明確にしておく必要があるんだ。」
生徒
「環境ごとにファイルパスの書き方も変わるし、ミスが起きやすい部分なんですね…」
先生
「そうそう。だからこそ、SELECTとASSIGNの記述を丁寧に見直すクセをつけておくと、トラブルも減るよ。」
生徒
「これからは、COBOLでファイル処理のコードを書くとき、一番最初にSELECTとASSIGNをしっかり書いて確認するようにします!」
先生
「その心がけは素晴らしいね!今後のプログラムでも役立つよ。」