演習 3.6: リモート・ロジックの呼び出し
このチュートリアルでは、EGL コードを作成して、そのコードを Web アプリケーション・サーバーで実行します。しかし、別の言語で書かれたコードや別のプラットフォームで実行するコードを使用する必要がある場合もあります。EGL call 文は、制御権を別のプログラムに移動します。制御権を受け取るプログラムは、そのプログラムを呼び出した EGL コードと異なる言語で作成され、異なるプラットフォームで実行されていても構いません。
この演習では、UpdateSession.jsp ページに入力されたユーザー ID の妥当性検査を行う外部 EGL プログラムを作成します。この外部プログラムは EGL で書かれ、Web アプリケーションと同じサーバーで実行されますが、別の言語で書かれていたり、別のプラットフォームで実行されるプログラムでも構いません。この外部プログラムは、前の演習で使用したものよりも、より複雑なサーバー・サイドの妥当性検査を行います。
EGL call 文について詳しくは、ヘルプ・トピック「call」を参照してください。
共用レコードの作成
このセクションでは、ユーザー ID に関する情報を保持する EGL レコード・パーツを作成します。レコード・パーツが複数のプログラムまたは PageHandler で使用される場合には、レコード・パーツ定義をページ・コード・ファイルに保持せずに、別のファイルに保持する方法が、最適なプログラミング手法です。
- プロジェクト・エクスプローラー・ビューで、「data」パッケージをクリックして選択する。data パッケージは EGLSource フォルダー内にあります。
- 「ファイル」>「新規」>「その他」をクリックする。「新規」ウィンドウが開きます。
- 「新規」ウィンドウで「EGL」を展開する。
- 「EGL ソース・ファイル」をクリックする。
- 「次へ」をクリックする。
- data が「パッケージ」フィールドにあることを確認する。
- 「EGL ソース・ファイル名」フィールドに、新規 EGL ソース・ファイル名として、次のテキストを入力する。
userIDRecord
「新規 EGL パーツ」ウィンドウは次のようになります。

- 「終了」をクリックする。新規ファイルが作成されてエディターで開きます。
- userIDRecord.egl ファイル内のすべてのコードを以下のコードに置き換える。
package data;
Record userIDRecord type basicRecord
userID char(50);
isValid char(1);
validationMessage char(100);
end
このコードは、3 つのフィールドがある単純な EGL レコード・パーツを作成します。ユーザー ID 自体を保持するフィールド、ユーザー ID が有効であるかどうかを示す単一文字を保持するフィールド、バリデーター関数からの正常またはエラー・メッセージを含むストリングを保持するフィールドです。
- ファイルを保管する。
- Ctrl+G キーを押すか、コードを右クリックしてポップアップ・メニューで「生成」をクリックし、ファイルを生成する。
- ファイルを閉じる。
リモート・プログラムの作成
- 「data」パッケージを再度クリックする。
- 「ファイル」>「新規」>「その他」をクリックする。
- 「新規」ウィンドウで、「EGL」を展開し、「プログラム」をクリックする。
- 「次へ」をクリックする。
- 「EGL ソース・ファイル名」フィールドに、新規 EGL ソース・ファイル名として、次のテキストを入力する。
UserIDValidation
- 「呼び出し先プログラムとして作成」チェック・ボックスを選択する。
- 「基本 - 基本プログラムの作成 (Basic - Create a basic program)」をクリックする。
「新規 EGL パーツ」ウィンドウは次のようになります。

- 「終了」をクリックする。新規プログラム・パーツが作成され、エディターで表示されます。
- userIDValidation.egl ファイル内のすべてのコードを以下のコードに置き換える。
package data;
program UserIDValidation (userID userIDRecord)
lengthOfUserID int;
function main()
userID.isValid = "Y";
lengthOfUserID = strLib.strLen(userID.userID);
if (lengthOfUserID > 12)
userID.isValid = "N";
userID.validationMessage = "Your user ID can be no longer than 12 characters";
end
if (lengthOfUserID < 5)
userID.isValid = "N";
userID.validationMessage = "Your user ID must be at least 5 characters long";
end
if (userID.isValid == "Y")
userID.validationMessage = "Your user ID is valid";
end
end
end
以下は、ここで挿入したコードに関する技術面での詳細です。
- このプログラムには、この演習の最初の方で作成した、レコード・パーツ userIDRecord のパラメーター userID が渡されます。
- このプログラムは、変数 lengthOfUserID を作成します。この変数は、ユーザー ID の文字長を保持します。
- 最初の 2 つの if 文は、ユーザー ID が有効な長さであるかどうかを判別します。この場合、ユーザー ID が 5 文字から 12 文字の長さであれば有効です。実アプリケーション用に妥当性検査を行う関数をすでに作成している場合は、必要に応じて複数の条件を追加できます。例えば、ユーザー ID がすでにデータベース内で使用されているかどうか、ユーザー ID に無効文字が含まれているかどうか、などを検査することができます。
- ユーザー ID が無効である場合、プログラムは isValid フィールドを N に設定し、「validationMessage」フィールドに問題に関する説明を書き込みます。
- ファイルを保管する。
- Ctrl+G キーを押すか、コードを右クリックしてポップアップ・メニューで「生成」をクリックし、ファイルを生成する。
- ファイルを閉じる。
リモート・プログラムの呼び出し
ここまでで、ユーザー ID を保持するレコードとユーザー ID を評価する外部プログラムを作成しました。最後のステップでは、作成した外部プログラムを使用するように UpdateSession PageHandler をセットアップします。
- UpdateSession.jsp ページを開く。
- ページを右クリックし、ポップアップ・メニューから「ページ・コードの編集 」をクリックする。
- UpdateSession.egl ファイルで、updateSession() 関数全体を次の新規関数に置き換える。
Function updateSession()
userID userIDRecord;
userID.userID = userSession.userid;
call data.UserIDValidation userID;
if (userID.isValid == "Y")
setSessionAttr("sess",userSession);
forward to "ViewSession";
else
setError(userID.validationMessage);
end
end
以下は、この関数のコードに関する技術面での詳細です。
- userID userIDRecord;
userID.userID = userSession.userid;
-
- このコードは、userIDRecord レコード・パーツから userID という名前の変数を作成します。その後、userSession レコード内のユーザー ID の値をその変数に割り当てます。
- call data.UserIDValidation userID;
- このコードは、userIDValidation プログラムを呼び出し、そのプログラムに userID 変数を渡します。プログラムは、ユーザー ID の妥当性検査を行い、validationMessage および isValid フィールドを更新して、userID 変数を戻します。
- if (userID.isValid == "Y")
setsessionAttr("sess",userSession);
forward to "ViewSession"
else
setError(userID.validationMessage);
end
- この if 文は、ユーザー ID が UserIDValidation プログラムによって有効と判断されたかどうかをチェックします。ユーザー ID が有効である場合、isValid フィールドは Y になっており、ページはセッション・オブジェクトを正常に更新します。ユーザー ID が無効である場合、UserIDValidation プログラムによって戻されたメッセージが、ページ上のエラー・メッセージに追加されます。
- ファイルを保存して閉じる。
- UpdateSession.jsp ページをサーバーで実行する。
- Web ブラウザーに UpdateSession.jsp ページが開かれたら、各フィールドに有効な情報を入力する。ただし、「Your personal user ID」フィールドには、5 文字未満のユーザー ID を入力します。
- 「Write to session object」ボタンをクリックする。
入力したユーザー ID は妥当性検査プログラムで不適切と判断されるため、セッション・オブジェクトは更新されず、ページにエラー・メッセージが表示されます。ページは次のようになります。

- 有効なユーザー ID を入力して、再度「Write to session object」ボタンをクリックする。ページが正常に動作します。
これで、このチュートリアルは終了です。チュートリアルの要約に進んでください。