カテゴリ: COBOL 更新日: 2025/12/28

COBOLのSELECT文とASSIGN句の使い方入門!初心者でもわかる丁寧ガイド

SELECT文とASSIGN句の基本的な書き方
SELECT文とASSIGN句の基本的な書き方

先生と生徒の会話形式で理解しよう

生徒

「COBOLでファイルを使うには、どうやってファイルと結びつけるんですか?」

先生

「それには、SELECT文とASSIGN句が必要です。」

生徒

「それぞれ何をするんですか?聞きなれない言葉でちょっと難しそうです…」

先生

「わかりやすく順を追って解説しますね!」

1. SELECT文とASSIGN句とは?

1. SELECT文とASSIGN句とは?
1. SELECT文とASSIGN句とは?

まず、SELECT文とは、「プログラム内で使うファイルを定義するための命令」です。これはファイルに名前をつけて、後のファイル処理で使えるようにします。

そして、ASSIGN句は、「そのファイルが実際にどこにあるか(どのファイル名・パスなのか)」をCOBOLに伝える部分です。

例えるなら、SELECTが「このフォルダを使います」と宣言することで、ASSIGNが「このフォルダはCドライブのドキュメントにありますよ」と教えるイメージです。

2. なぜSELECTとASSIGNが必要?

2. なぜSELECTとASSIGNが必要?
2. なぜSELECTとASSIGNが必要?

COBOLプログラムは、自分が扱うファイルをちゃんと登録しておかないと、ファイルが見つからないというエラーになります。

プログラムの冒頭で、「私はこのファイルを使いますよ」「そのファイルはここにありますよ」と教えてあげることで、ファイル処理がスムーズに進みます。

3. SELECTとASSIGNの基本構文

3. SELECTとASSIGNの基本構文
3. SELECTとASSIGNの基本構文

SELECT ファイル名 ASSIGN TO "pathname"
    ORGANIZATION IS LINE SEQUENTIAL.

このように書きます。ポイントは:

  • SELECT:プログラム内で使うファイルの名前を決めます。
  • ASSIGN TO "pathname":実際のファイル名やパスを指定します。「pathname」はファイルが保存されている場所です。
  • ORGANIZATION IS LINE SEQUENTIAL:ファイルの読み書き方法を指定します。ここでは「行ごとに順番に扱います」という意味です。

4. 具体例でSELECTとASSIGNを見てみよう

4. 具体例でSELECTとASSIGNを見てみよう
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でファイル処理へ繋がる流れ

5. SELECTとASSIGNでファイル処理へ繋がる流れ
5. SELECTとASSIGNでファイル処理へ繋がる流れ

実際にファイルを使う流れを整理すると:

  1. SELECT + ASSIGNでファイル定義(どのファイルを扱うか決める)
  2. OPEN:ファイルを開く(読み込みならOPEN INPUT、書き込みならOPEN OUTPUT
  3. READ/WRITE:ファイルから読む、または書く
  4. CLOSE:ファイルを閉じる

この最初のステップであるSELECTとASSIGNが、後の作業の土台になります。

6. ファイル名とパスの指定、よくある注意点

6. ファイル名とパスの指定、よくある注意点
6. ファイル名とパスの指定、よくある注意点

ファイル名パスを間違えると、COBOLはそのファイルを見つけられずエラーになります。

  • ファイルがプログラムと同じフォルダにないときは、"C:\data\input.txt"のようにフルパスを指定しましょう。
  • WindowsとUNIXではパスの区切り文字(「¥」と「/」)が違うので環境に合わせてください。
  • ダブルクオート(")を忘れずに!

7. よく使うキーワードまとめ

7. よく使うキーワードまとめ
7. よく使うキーワードまとめ
  • SELECT:プログラム内で使うファイルに名前をつける
  • ASSIGN TO "…"​:その名前を実際のファイル名やパスに結びつける
  • ORGANIZATION IS LINE SEQUENTIAL:行単位でファイルを扱う指定

8. 初心者でも覚えやすいポイント

8. 初心者でも覚えやすいポイント
8. 初心者でも覚えやすいポイント

ファイルを使うときは、この順番で考えましょう:

  • STEP①:ファイルを“定義”する → SELECT … ASSIGN TO …
  • STEP②:ファイルを“開く” → OPEN
  • STEP③:ファイルを“読む/書く” → READ/WRITE
  • STEP④:ファイルを“閉じる” → CLOSE

分からなくなったら、SELECTとASSIGNのところに戻って、「ここが定義ミスじゃないか?」と確認するのがコツです。

まとめ

まとめ
まとめ

COBOLにおけるファイル処理の第一歩として欠かせないのが、SELECT文ASSIGN句の正しい理解です。これらはプログラム内でファイルを取り扱うための「宣言」と「接続」の役割を果たしており、後続のOPENREADWRITEなどの命令と密接につながっています。

特にASSIGN句では、実際のファイルパスを指定する必要があるため、環境に応じたパスの記述方法や注意点(ダブルクオートやスラッシュの使い方)を意識することが重要です。プログラム内で使用するファイル名と、実際のファイル名の結びつきをしっかり把握することで、COBOLプログラムは安定してファイルを操作できるようになります。

例えば、以下のようにSELECTASSIGNを使ってファイルを宣言することが一般的です。


SELECT INPUT-FILE ASSIGN TO "data/input.txt"
    ORGANIZATION IS LINE SEQUENTIAL.

この定義を行うことで、OPEN INPUT INPUT-FILEREAD INPUT-FILE などの命令が正しく機能します。逆に、SELECTやASSIGNを忘れたり、パス指定を間違えたりすると、ファイルが見つからないエラーに悩まされる原因になります。

実務でもCOBOLを使った帳票処理やログ出力、データ移行など、多くの処理がファイルとの連携に依存しています。そのため、このSELECT文とASSIGN句は単なる文法事項ではなく、実践的なコーディングスキルの基盤でもあるのです。

また、SELECTやASSIGNの定義はENVIRONMENT DIVISIONINPUT-OUTPUT SECTION内で記述されることも覚えておくと良いでしょう。COBOLではセクションごとに記述場所が厳格に決まっているため、構造を守ることも大切です。

最後にもう一度、ファイル処理の流れを振り返っておきましょう。

  • STEP1SELECTASSIGNでファイルを定義
  • STEP2OPENでファイルを開く
  • STEP3READWRITEでファイル操作
  • STEP4CLOSEでファイルを閉じる

この一連の流れが理解できれば、COBOLでのファイル処理は格段にスムーズになります。今回学んだSELECT文とASSIGN句の役割をきちんと身につけておくことで、エラーの原因追及や保守作業でも非常に役立ちます。

先生と生徒の振り返り会話

生徒

「先生、SELECT文とASSIGN句って、ただの設定かと思ってましたけど、結構大事なんですね!」

先生

「そうだね。ファイルを使うCOBOLプログラムでは、どんなファイルをどこで使うかを明確にしておく必要があるんだ。」

生徒

「環境ごとにファイルパスの書き方も変わるし、ミスが起きやすい部分なんですね…」

先生

「そうそう。だからこそ、SELECTとASSIGNの記述を丁寧に見直すクセをつけておくと、トラブルも減るよ。」

生徒

「これからは、COBOLでファイル処理のコードを書くとき、一番最初にSELECTとASSIGNをしっかり書いて確認するようにします!」

先生

「その心がけは素晴らしいね!今後のプログラムでも役立つよ。」

カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法