使用して行う方法を解説しました。データベース操作を違和感なく理解できたのではないかと思います。システム開発にどんどん参加してくれることを願っています。他にネイティブ・アクセスという方法があります。基本的なアクセス方法です。とかなり異なる書き方になるので、今回と次回の二回に渡ってじっくり解説していきたいと思います。この手法もぜひマスターしてください。よるアクセスとネイティブ・アクセスの違いを説明します。この条件により処理対象のデータが1レコードに限定されることもあれば、複数レコードとなる場合もあります。これに対して、ネイティブ・アクセスは常にレコード単位のアクセスを行います。ような複数レコードを同時に処理することはできません。レコードを更新および削除する時も、常に1レコード毎にステートメントを使用して行います。コードが複雑になることもあります。既存のプログラムは殆どがネイティブ・アクセスで実装されています。データベース・ファイルは、このレコード単位でのアクセスを可能とするために、アクセス・パスと呼ばれる仕組みが実装されています。アクセス・パスは以下の2種類です。到着順アクセス・パスは、文字通りファイルにレコードが追加された順番を記録しているもので、その順番を相対レコード番号にシステムが自動的に採番して割当てていきます。データベースにアクセスする際にこの到着順アクセス・パスを使用することで、記録された順番でレコードを取り出すことができるようになります。ひとつのアクセス・パスはキー順アクセス・パスと呼ばれます。ファイルを作成する際にキー・フィールドを指定することができますが、このキーの値と相対レコード番号の対応表がこのキー順アクセス・パスです。キー順アクセス・パスはキーの値によって並んだ表なので、これをプログラムで使用することにより、到着順ではなくキーの並び順でレコードを取り出すことができます。特定のキーの値のレコードを直接取り出すことも可能になります。プログラムは常に最新の並び順でデータを操作することが保証されるのです。ポインターについてプログラムはどちらかのアクセス・パスを使用するように設定します。データベース・ファイルがオープンされると、アクセス・パスの先頭にポインターが設定されます。このポインターの役割は、直前にアクセスしたレコードの位置をアクセス・パス内で記憶することにあります。後ほど照会するレコード・アクセスのステートメントで詳細を解説します。ネイティブ・アクセスでは、条件にあうキー順アクセス・パスとポインターを使ってキーの順番通りにレコードを取り出すことも、ランダムにアクセスすることも自由に操作可能です。ファイル定義それではネイティブ・アクセスを行うのに必要なステートメントを紹介していきます。ステートメントで定義しなければなりません。場合は、ファイルを定義する必要はなかったので不思議に思われるかもしれませんね。それらを同じステートメントで使用することができます。そのため、今どの種類のファイルを操作しているのかをシステムが判断できるように、プログラム内で使用するファイルの種類を指定する必要があるのです。今回はデータベースとしての定義の仕方を説明します。それ以外のファイルの定義方法と使用方法については第八回で解説します。指定する主なキーワードを解説しましょう。キーワードは、このファイルがデータベースであることを示しています。このキーワードはファイル名の直後に指定しなければなりません。キーワードは、プログラム内でのファイルの使用方法を指定します。指定した方法以外の使用はできないので注意しましょう。USAGE(*INPUT)と指定したファイルに対してレコードを追加、更新および削除することはできません。これは実行時にエラーになるのではなくコンパイル時に判定されます。キーワードは、そのファイルのキー順アクセス・パスをプログラムで使用することを宣言するものです。これを指定することにより、そのファイルに対してキー付ファイル命令を使用することができるようになります。このキーワードを指定しないと、到着順アクセス・パスを使用することになり、キーによる処理ができなくなるので注意しましょう。ステートメントにファイル名のみを指定した場合、以下が省略値として使用されます。データベース・ファイル入力専用つまり、以下はすべて同じ意味になります。どの書き方が良いのかはそれぞれで判断していただければと思いますが、個人的にはプログラムの可読性を考えて、省略値もすべて記述するほうが良いのではと思います。サブ・プロシージャー)の前と、サブ・プロシージャー内の2箇所で記述することができます。前者で定義するとグローバル・ファイル、後者はローカル・ファイルと言います。ローカル・ファイルマニュアルには「ローカル・ファイルに対する入出力は、データ構造を使用することによってのみ実行できます。この意味を説明します。直後に指定し、取得したフィールドの値は事前に用意したホスト変数にセットされました。定義したファイルでは、レコードを読み取ると基本的に全てのフィールドの値が取得され、値は読み取り命令で指定したデータ構造にセットされます。「データ構造を使用する」とは、このアクセスによって取得された全フィールドの値が、ホスト変数ではなく指定したデータ構造にのみセットされるということです。このデータ構造はプログラムで事前に定義しておく必要があります。コンパイラーがレコードの各フィールドの値を保存するための変数を自動的に用意します。仕様書(入力仕様書)を自動で生成するのです。コンパイラーは内部的に使用できるためこれが可能なのです。仕様書は使用することができないため、コンパイラーがローカル・ファイルの外部記述を使用して変数を自動的に用意することができません。そのため、プログラマーがデータ構造を事前に用意しておかなければならないのです。スコープについてグローバル・ファイルは、すべてのサブ・プロシージャーから参照することができます。取得した値を保存する変数には静的記憶域が使用されるため、プログラムが実行されている間存在しています。ファイルのオープンは基本的にプログラムの開始時点で自動的に行われます。ローカル・ファイルは、それを定義したサブ・プロシージャー内でのみ参照可能です。命令もしくは最後のステートメントが実行されたあとでサブ・プロシージャーが終了すると自動的にクローズされます。入出力で使用するデータ構造をサブ・プロシージャー内で定義すると自動記憶域が使用されるため、プロシージャーが終了するとそのデータ構造も破棄されます。キーワードを使用することにより、静的記憶域に関連付けることも可能です。それでは、実際のプログラムを通して、ネイティブ・アクセスの基本を理解していきましょう。同様の処理をネイティブ・アクセスで作成します。ファイルの定義と使用するデータ構造の定義を見ていきましょう。ファイルを定義しています。キーワードを指定しています。