ACF2、RACF、および Top Secret アダプタでは、login および logoff のリソースアクションが必要です。login アクションは、認証されたセッションに関してメインフレームとネゴシエーションを行います。logoff アクションは、そのセッションが不要になったときに接続を解除します。
thin クライアントのホストアクセス 3270 エミュレータは、スクリプトセッション内のコマンドの実行を簡素化するために、リソースアダプタによるリソースアクションのコンテキストに提供されます。このエミュレータは、com.waveset.object.HostAccess クラスで定義されます。リソースアクションに渡される hostAccess オブジェクトで使用可能なメソッドに関する詳細については、HostAccess に関する JavaDoc を参照してください。
グローバル変数のいくつかは、スクリプトアクションのコンテキストで使用します。
次の表では、3270 エミュレータを通して実行可能な、英数字以外の値のキー入力をシミュレートする特殊機能について説明します。
|
機能 |
ニーモニックキーワード |
機能 |
ニーモニックキーワード |
|---|---|---|---|
|
Attention |
[attn] |
F1 |
[pf1] |
|
Backspace |
[backspace] |
F2 |
[pf2] |
|
Backtab |
[backtab] |
F3 |
[pf3] |
|
Beginning of Field |
[bof] |
F4 |
[pf4] |
|
Clear |
[clear] |
F5 |
[pf5] |
|
Cursor Down |
[down] |
F6 |
[pf6] |
|
Cursor Left |
[left] |
F7 |
[pf7] |
|
Cursor Right |
[right] |
F8 |
[pf8] |
|
Cursor Select |
[cursel] |
F9 |
[pf9] |
|
Cursor Up |
[up] |
F10 |
[pf10] |
|
Delete Character |
[delete] |
F11 |
[pf11] |
|
DUP Field |
[dup] |
F12 |
[pf12] |
|
Enter |
[enter] |
F13 |
[pf13] |
|
End of Field |
[eof] |
F14 |
[pf14] |
|
Erase EOF |
[eraseeof] |
F15 |
[pf15] |
|
Erase Field |
[erasefld] |
F16 |
[pf16] |
|
Erase Input |
[erinp] |
F17 |
[pf17] |
|
Field Mark |
[fieldmark] |
F18 |
[pf18] |
|
ホーム |
[home] |
F19 |
[pf19] |
|
Insert |
[insert] |
F20 |
[pf20] |
|
New Line |
[newline] |
F21 |
[pf21] |
|
PA1 |
[pa1] |
F22 |
[pf22] |
|
PA2 |
[pa2] |
F23 |
[pf23] |
|
PA3 |
[pa3] |
F24 |
[pf24] |
|
Page Up |
[pageup] | ||
|
Page Down |
[pagedn] | ||
|
Reset |
[reset] | ||
|
System Request |
[sysreq] | ||
|
Tab Field |
[tab] |
次のコーディング例は、メインフレームのリソース上で一般に実行されるアクションを示しています。
次のコードは、login および logoff リソースアクションの完全なサンプルです。このサンプルは、Top Secret リソースを使用する、ある特定の顧客の環境に合わせた内容になっています。したがって、コマンド、プロンプト、コマンドシーケンスなどのテキストは、配備環境によって異なる可能性があります。これらのリソースアクションは、XML 内の Javascript をラップします。
<ResourceAction name=’ACME Login Action’>
<ResTypeAction restype=’TopSecret’>
<act>
var TSO_MORE = " ***";
var TSO_PROMPT = " READY";
var TS_PROMPT = " ?";
hostAccess.waitForString("ENTER YOUR APPLICATION NAME");
hostAccess.sendKeys("tso[enter]");
hostAccess.waitForString("ENTER USERID– ");
hostAccess.sendKeys(user + "[enter]");
hostAccess.waitForString("TSO/E LOGON");
hostAccess.sendKeys(password);
hostAccess.sendKeys("[enter]");
var pos = hostAccess.searchText(" -Nomail", false);
if (pos != 0) {
hostAccess.setCursorPos(pos);
hostAccess.sendKeys("S");
}
pos = hostAccess.searchText(" -Nonotice", false);
if (pos != 0) {
hostAccess.setCursorPos(pos);
hostAccess.sendKeys("S");
}
hostAccess.sendKeys("[enter]");
hostAccess.waitForStringAndInput(TSO_MORE);
hostAccess.sendKeys("[enter]");
hostAccess.waitForStringAndInput(TSO_MORE);
hostAccess.sendKeys("[enter]");
hostAccess.waitForStringAndInput("ISPF");
hostAccess.sendKeys("=x[enter]");
hostAccess.waitForString(TSO_PROMPT);
var resp =hostAccess.doCmd("PROFILE NOPROMPT MSGID NOINTERCOM
NOPAUSE NOWTPMSG PLANGUAGE(ENU) SLANGUAGE(ENU) NOPREFIX[enter]",
TSO_PROMPT, TSO_MORE);
hostAccess.waitForStringAndInput("ENTER LOGON:");
hostAccess.sendKeys(system + "[enter]");
hostAccess.waitForStringAndInput("USER-ID.....");
hostAccess.sendKeys(user + "[tab]" + password);
hostAccess.sendKeys("[enter]");
var stringsToHide = new java.util.ArrayList();
stringsToHide.add(password.decryptToString());
hostAccess.waitForString("==>", stringsToHide);
hostAccess.waitForInput();
hostAccess.sendKeys("[pf6]");
hostAccess.waitForInput();
</act>
</ResTypeAction>
</ResourceAction>
<ResourceAction name=’ACME Logoff Action’>
<ResTypeAction restype=’TopSecret’>
<act>
var TSO_PROMPT = " READY";
hostAccess.sendKeys("[clear]end[enter]");
hostAccess.waitForString(TSO_PROMPT);
hostAccess.sendKeys("logoff[enter]");
</act>
</ResTypeAction>
</ResourceAction>
RACF リソースパラメータのページで「データセット規則の作成および削除」パラメータが選択されている場合は、Identity Manager によってデータセット規則が直接管理されます。ユーザー独自のデータセット規則を設定するには、次のようなアクションを定義します。
<ResourceAction name=’create after action’>
<ResTypeAction restype=’RACF’>
<act>
var TSO_PROMPT = " READY";
var TSO_MORE = " ***";
var cmd1 = "addsd ’"+identity+".test1.**’ owner(’"+identity+"’)[enter]";
var result1 = hostAccess.doCmd(cmd1, TSO_PROMPT, TSO_MORE);
</act>
</ResTypeAction>
</ResourceAction>