次の方法で共有


MC_ALLOCATE

MC_ALLOCATE動詞は、呼び出し元トランザクション プログラム (TP) によって発行されます。 ローカル論理ユニット (LU) とパートナー LU の間にセッションを割り当て、( RECEIVE_ALLOCATEと組み合わせて) 呼び出し元 TP と呼び出された TP の間の会話を確立します。 この動詞が正常に実行されると、APPC は会話識別子 (conv_id) を生成します。 conv_idは、他のすべての APPC 会話動詞に必要なパラメーターです。

次の構造体では、 MC_ALLOCATE 動詞で使用される動詞制御ブロック (VCB) について説明します。

構文

  
struct mc_allocate {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    reserv2;  
    unsigned short   primary_rc;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned char    reserv3;  
    unsigned char    synclevel;  
    unsigned char    reserv4[2];  
    unsigned char    rtn_ctl;  
    unsigned char    reserv5;  
    unsigned long    conv_group_id;  
    unsigned long    sense_data;  
    unsigned char    plu_alias[8];  
    unsigned char    mode_name[8];  
    unsigned char    tp_name[64];  
    unsigned char    security;  
    unsigned char    reserv6[11];  
    unsigned char    pwd[10];  
    unsigned char    user_id[10];  
    unsigned short   pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char    reserv7;  
    unsigned char    fqplu_name[17];  
    unsigned char    reserv8[8];  
    unsigned long    proxy_user;  
    unsigned long    proxy_domain;  
    unsigned char    reserv9[16];  
};   

メンバー

opcode
指定されたパラメーター。 動詞操作コードを指定します。AP_M_ALLOCATE。

opext
指定されたパラメーター。 動詞操作拡張機能をAP_MAPPED_CONVERSATION指定します。 AP_EXTD_VCB ビットが設定されている場合は、動詞制御ブロックの拡張バージョンが使用されていることを示します。 この場合、 MC_ALLOCATE 構造には、同期ポイントのサポートまたは特権プロキシ機能のサポートが含まれます。

reserv2
予約済みフィールド。

primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるプライマリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラーコードについては、「リターン コード」を参照してください。

secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラーコードについては、「リターン コード」を参照してください。

tp_id
指定されたパラメーター。 ローカル TP を識別します。 このパラメーターの値は 、TP_STARTEDによって返されました。

conv_id
返されたパラメーター。 2 つの TP 間で確立された会話を識別します。

reserv3
予約済みフィールド。

synclevel
指定されたパラメーター。 会話の同期レベルを指定します。 これは、TP がデータの受信の確認を要求し、データの受信を確認できるかどうかを決定します。

  • AP_NONEは、この会話で確認処理を使用しないことを指定します。

  • AP_CONFIRM_SYNC_LEVELは、TP がこの会話で確認処理を使用できることを指定します。

  • AP_SYNCPTは、この会話で TP が同期ポイント レベル 2 の確認処理を使用できることを指定します。

    reserv4
    予約済みフィールド。

    reserv5
    予約済みフィールド。

    rtn_ctl
    指定されたパラメーター。 ローカル TP からのセッション要求に対して動作するローカル LU がローカル TP に制御を返すタイミングを指定します。 セッションの詳細については、「 トランザクション プログラムの概要」を参照してください。

  • AP_IMMEDIATEは、LU が競合勝者セッションをすぐに使用できる場合に割り当て、TP に制御を返すように指定します。

  • AP_WHEN_SESSION_ALLOCATEDは、LU がセッションを割り当てるか、このトピックの「リターン コード」に記載されているエラーの 1 つを検出するまで、TP に制御を返さないことを指定します。 (セッション制限が 0 の場合、LU はすぐに制御を返します)。セッションが利用できない場合、TP はセッションを待機します。

  • AP_WHEN_SESSION_FREEは、LU が競合優先セッションまたは競合敗者セッションを割り当てることを指定します (使用可能な場合、またはアクティブ化できる場合)。TP に制御を返します。 エラーが発生した場合(このトピックのリターン コードに記載されているように)、呼び出しは primary_rc フィールドと secondary_rc フィールドのエラーと共に直ちに返されます。

  • AP_WHEN_CONWINNER_ALLOCは、競合の勝者セッションを割り当てるか、このトピックの「リターン コード」に記載されているエラーのいずれかが発生するまで、LU が制御を返さないことを指定します。 (セッション制限が 0 の場合、LU はすぐに制御を返します)。セッションが利用できない場合、TP はセッションを待機します。

  • AP_WHEN_CONV_GROUP_ALLOCは、LU が TP に制御を戻さない場合、conv_group_idで指定されたセッション 割り当てるか、このトピックの「リターン コード」に記載されているエラーの 1 つを検出することを指定します。 セッションが利用できない場合、TP はセッションが空くのを待ちます。

注意

AP_IMMEDIATEは、新しいセッションを開始しない rtn_ctl の唯一の値です。 AP_IMMEDIATE以外の値の場合、適切なセッションをすぐに使用できない場合、Microsoft® Host Integration Server はセッションの開始を試みます。 これにより、オンデマンド接続がアクティブになります。

conv_group_id
指定された/返されたパラメーター。 セッションの割り当て元となるメッセージ交換グループの識別子を指定します。 conv_group_idは、rtn_ctlが WHEN_CONV_GROUP_ALLOCに設定されている場合にのみ必要です。 rtn_ctlが別の値を指定し、primary_rcがAP_OK場合、これは戻り値です。

sense_data
返されたパラメーター。 割り当てエラー (再試行または再試行なし) を示し、センス データを含みます。

plu_alias
指定されたパラメーター。 パートナー LU がローカル TP に認識される別名を指定します。

plu_aliasは、構成時に確立されたパートナー LU の名前と一致する必要があります。

パラメーターは 8 バイトの ASCII 文字列です。 次の ASCII 文字で構成できます。

  • 大文字

  • 数字 0 ~ 9

  • スペース

  • 特殊文字 $、#、%、および@

    この文字列の先頭の文字をスペースにすることはできません。

    このパラメーターの値が 8 バイト未満の場合は、右側に ASCII スペース (0x20) を埋め込みます。

    パートナー LU に fqplu_name パラメーターを指定する場合は、このパラメーターに 2 進ゼロを入力します。

    TP、5250 エミュレーター、APPC アプリケーションを使用するユーザーまたはグループの場合、システム管理者は既定のローカル LU とリモート LU を割り当てることができます。 この場合、フィールドは空白または null のままにされ、ユーザーまたはグループ・メンバーが APPC プログラムを開始すると、デフォルト LU にアクセスされます。

    mode_name
    指定されたパラメーター。 構成時に定義されたネットワーク特性のセットの名前を指定します。

    mode_nameの値は、構成時にパートナー LU に関連付けられているモードの名前と一致する必要があります。

    パラメーターは 8 バイトの EBCDIC 文字ストリングです。 これは、タイプ A EBCDIC 文字セットの文字で構成できます。

  • 大文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、および@

    文字列の最初の文字は、大文字または特殊文字である必要があります。

    マップされた会話では SNASVCMG を使用しないでください。 SNASVCMG は、APPC によって内部的に使用される予約済み mode_name です。

    tp_name
    指定されたパラメーター。 呼び出された TP の名前を指定します。 呼び出MC_ALLOCATETP で指定tp_nameの値は、呼び出された TP の RECEIVE_ALLOCATE で指定されたtp_nameの値と一致する必要があります。

    パラメーターは 64 バイトの EBCDIC 文字列であり、大文字と小文字が区別されます。 tp_name パラメーターは、次の EBCDIC 文字で構成できます。

  • 大文字と小文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、@、ピリオド (.)

    tp_nameが 64 バイト未満の場合は、EBCDIC スペース (0x40) を使用して右側に埋め込みます。

    SNA 規則では、サービス TP 名には最大 4 文字を指定できます。 先頭の文字は、0x00 から 0x3F までの 16 進数のバイトです。 その他の文字は、AE EBCDIC 文字セットの型です。

    セキュリティ
    指定されたパラメーター。 呼び出された TP へのアクセスを検証するためにパートナー LU が必要とする情報を提供します。 このトピックの「 Security パラメーターの使用可能な値 」セクションを参照してください。

    Reserv6
    予約済みフィールド。

    pwd
    指定されたパラメーター。 user_idに関連付けられているパスワードを指定します。

    pwd パラメーターは、セキュリティが AP_PGM または AP_SAME に設定されている場合にのみ必要です。 構成中に確立された user_id のパスワードと一致する必要があります。

    pwd パラメーターは 10 バイトの EBCDIC 文字ストリングであり、大文字と小文字が区別されます。 これは、次の EBCDIC 文字で構成できます。

  • 大文字と小文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、@、ピリオド (.)

    パスワードが 10 バイト未満の場合は、EBCDIC スペース (0x40) を使用して右側に埋め込みます。

    APPC 自動ログオン機能を使用する場合は、 pwd 文字ストリングを MS$SAME にハードコーディングする必要があります。 詳細については、「解説」を参照してください。

    User_id
    指定されたパラメーター。 パートナー TP にアクセスするために必要なユーザー識別子を指定します。 セキュリティ パラメーターが AP_PGM または AP_SAME に設定されている場合にのみ必要です。

    user_id パラメーターは 10 バイトの EBCDIC 文字列であり、大文字と小文字が区別されます。 これは、パートナー TP 用に構成されたいずれかのユーザー識別子と一致する必要があります。

    パラメーターは、次の EBCDIC 文字で構成できます。

  • 大文字と小文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、@、ピリオド (.)

    user_idが 10 バイト未満の場合は、EBCDIC スペース (0x40) を使用して右側に埋め込みます。

    APPC 自動ログオン機能を使用する場合は、 user_id 文字列を MS$SAME にハードコーディングする必要があります。 詳細については、「解説」を参照してください。

    pip_dlen
    指定されたパラメーター。 パートナー TP に渡されるプログラム初期化パラメーター (PIP) の長さを指定します。 範囲は 0 ~ 32767 です。

    pip_dptr
    指定されたパラメーター。 PIP データを含むバッファーのアドレスを指定します。 このパラメーターは、 pip_dlen が 0 より大きい場合にのみ使用します。

    PIP データは、パートナー TP またはリモート オペレーティング システムに必要な初期化パラメーターまたは環境セットアップ情報で構成できます。 PIP データは、一般的なデータ ストリーム (GDS) 形式に従う必要があります。 詳細については、IBM SNA マニュアルを参照してください。

    Microsoft Windows の場合、データ バッファーは静的データ領域またはグローバルに割り当てられた領域に配置できます。 データ バッファーは、この領域内に完全に収まる必要があります。

    reserv7
    予約済みフィールド。

    fqplu_name
    指定されたパラメーター。 パートナー LU の完全修飾名を指定します。 これは、リモート ノードで定義されているローカル LU の完全修飾名と一致する必要があります。 パラメーターは、NETID の 2 種類の EBCDIC 文字列とパートナー LU の LU 名で構成されます。 名前は EBCDIC ピリオド (.) で区切られます。

    plu_aliasが指定されていない場合は、この名前を指定する必要があります。 これは、次の EBCDIC 文字で構成できます。

  • 18大文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、および@

    このパラメーターの値が 17 バイト未満の場合は、右側に EBCDIC スペース (0x40) を埋め込みます。

    reserv8
    予約済みフィールド。

    proxy_user
    指定されたパラメーター。 特権プロキシ機能を使用して偽装するユーザー名を含む Unicode 文字列を指す LPWSTR を指定します。 このフィールドは、拡張 VCB を示す opext フィールドにAP_EXTD_VCB ビットが設定されている場合にのみ使用できます。

    proxy_domain
    指定されたパラメーター。 特権プロキシ機能を使用して偽装するユーザーのドメイン名を含む Unicode 文字列を指す LPWSTR を指定します。 このフィールドは、拡張 VCB を示す opext フィールドにAP_EXTD_VCB ビットが設定されている場合にのみ使用できます。

    reserv9
    予約済みフィールド。

セキュリティ パラメーターに使用できる値

構成中に呼び出された TP に対して確立された会話セキュリティに基づいて、次のいずれかの値を使用します。

  • 会話セキュリティを使用しない呼び出された TP のAP_NONE。

  • 会話セキュリティを使用し、ユーザー識別子とパスワードを必要とする呼び出された TP のAP_PGM。 この情報は 、user_id パラメーターと pwd パラメーターを 使用して指定します。

  • 会話セキュリティを使用し、ユーザー識別子とパスワードを必要とする特権プロキシを使用して呼び出された TP のAP_PROXY_PGM。 偽装するユーザーのユーザー 名とドメイン 名を含む Unicode 文字列を指すには、proxy_userと proxy_domain のポインターを設定する必要があります。 アプリケーションでは、 user_id フィールドと pwd フィールドを設定する必要はありません。

  • AP_PROXY_SAMEプロキシによって指定された有効なユーザー識別子とパスワードを持つ特権プロキシを使用して呼び出された TP の場合は、別の TP が呼び出されます。 偽装するユーザーのユーザー 名とドメイン 名を含む Unicode 文字列を指すには、proxy_userと proxy_domain のポインターを設定する必要があります。 アプリケーションでは、 user_id フィールドと pwd フィールドを設定する必要はありません。

    たとえば、TP A が特権プロキシによって指定された有効なユーザー識別子とパスワードを使用して TP B を呼び出し、TP B が TP C を呼び出すとします。TP B がAP_PROXY_SAME値を指定した場合、APPC は TP A からのユーザー識別子と既に検証済みのインジケーターを TP C の LU に送信します。 このインジケーターは、TP C にパスワードを必要としないように指示します (TP C が既に検証済みのインジケーターを受け入れるように構成されている場合)。

  • 会話セキュリティを使用するため、特権プロキシ メカニズムによって提供されるユーザー識別子とパスワードが必要な特権プロキシを使用して呼び出された TP のAP_PROXY_STRONG。 偽装するユーザーのユーザー 名とドメイン 名を含む Unicode 文字列を指すには、proxy_userと proxy_domain のポインターを設定する必要があります。 アプリケーションでは、 user_id フィールドと pwd フィールドを設定する必要はありません。 AP_PROXY_STRONG AP_PROXY_PGMとは異なり、AP_PROXY_STRONGではクリア テキスト パスワードは許可されません。 リモート システムが暗号化されたパスワード (強力な会話セキュリティ) をサポートしていない場合、この呼び出しは失敗します。

  • 有効なユーザー識別子とパスワードを使用して呼び出された TP のAP_SAME。これにより、別の TP が呼び出されます。

    たとえば、TP A が有効なユーザー識別子とパスワードを使用して TP B を呼び出し、TP B が TP C を呼び出すとします。TP B がAP_SAME値を指定した場合、APPC は TP A からのユーザー識別子と既に検証済みのインジケーターを TP C の LU を送信します。 このインジケーターは、TP C にパスワードを必要としないように指示します (TP C が既に検証済みのインジケーターを受け入れるように構成されている場合)。

    AP_SAMEが MC_ALLOCATE 動詞で使用される場合、アプリケーションは常に動詞制御ブロック内の user_id および pwd パラメーターの値を提供する必要があります。 Host Integration Server とピア LU の間でネゴシエートされるプロパティに応じて、 MC_ALLOCATE 動詞は次の優先順位で 3 種類の Attach (FMH-5) メッセージのいずれかを送信します。

    1. LU が "既に検証済み" のセキュリティをネゴシエートしている場合、Host Integration Server によって送信された Attach には、VCB で指定された pwd パラメーター フィールドの内容は含まれません。

    2. LU が "永続的な検証" セキュリティをネゴシエートした場合、Host Integration Server によって送信される Attach には VCB で指定された pwd パラメーターが含まれますが、Attach が LU-LU セッションの開始以降に指定された user_id パラメーターの最初のパラメーターである場合にのみ含まれます。また、後続のすべての Attaches (アプリケーションまたはこの LU-LU モードトリプレットを使用する他のアプリケーションによって発行) の pwd パラメーターが省略されます。

    3. 上記のいずれかの LU がネゴシエートされていない場合、Host Integration Server によって送信された Attach では、すべての Attaches の user_id パラメーターと pwd パラメーターの両方が省略されます。

      アプリケーションは、LU 間でネゴシエートされたセキュリティ モードを判断できず、発行している MC_ALLOCATE 動詞がその LU-LU モードトリプレットの最初の動詞であるかどうかを判断することもできません。 そのため、セキュリティが AP_SAME に設定されている場合は、アプリケーションで VCB の user_id および pwd パラメーター フィールドを常に設定する必要があります。

      永続的検証と既に検証済みのセキュリティの詳細については、「SNA 形式ガイド」セクション「FM ヘッダー 5: アタッチ (LU 6.2)」を参照してください。

  • 会話セキュリティを使用し、ユーザー識別子とパスワードを必要とする、呼び出された TP のAP_STRONG。 この情報は 、user_id パラメーターと pwd パラメーターを 使用して指定します。 AP_STRONG AP_PGMとは異なり、AP_STRONGではクリア テキスト パスワードは許可されません。 リモート システムが暗号化されたパスワード (強力な会話セキュリティ) をサポートしていない場合、この呼び出しは失敗します。

    APPC 自動ログオン機能を使用する場合は、 セキュリティ をAP_PGMに設定する必要があります。 詳細については、「解説」を参照してください。

リターン コード

AP_OK
プライマリ リターン コード。動詞は正常に実行されました。

AP_UNSUCCESSFUL
主なリターン コード。指定されたパラメーター rtn_ctl TP への制御の即時 (AP_IMMEDIATE) の戻り値を指定し、ローカル LU に使用可能な競合勝者セッションがありませんでした。

AP_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞は実行されませんでした。

AP_BAD_RETURN_CONTROL

セカンダリ リターン コード。 rtn_ctl に指定された値が無効です。

AP_BAD_SECURITY

セカンダリ リターン コード。 セキュリティ に指定された値が無効です。

AP_BAD_SYNC_LEVEL

セカンダリ リターン コード。 sync_level に指定された値が無効です。

AP_BAD_TP_ID

セカンダリ リターン コード。 tp_id に指定された値が無効です。

AP_PIP_LEN_INCORRECT

セカンダリ リターン コード。 pip_dlen の値が 32767 を超えています。

AP_UNKNOWN_PARTNER_MODE

セカンダリ リターン コード。 mode_name に指定された値が無効です。

AP_BAD_PARTNER_LU_ALIAS

セカンダリ リターン コード。APPC は、提供された partner_lu_aliasを認識しませんでした。

AP_NO_USE_OF_SNASVCMG

セカンダリ リターン コード。SNASVCMG は、 mode_nameの有効な値ではありません。

AP_INVALID_DATA_SEGMENT

セカンダリ リターン コード。PIP データが割り当てられたデータ セグメントよりも長かったか、PIP データ バッファーのアドレスが間違っていました。

AP_ALLOCATION_ERROR
主なリターン コード。APPC が会話を割り当てませんでした。 会話の状態は RESET に設定されます。

このコードは、 MC_ALLOCATE後に発行された動詞を介して返すことができます。

AP_ALLOCATION_FAILURE_NO_RETRY

セカンダリ リターン コード。構成エラーやセッション プロトコル エラーなどの永続的な条件のため、会話を割り当てることができません。 エラーを特定するには、システム管理者がエラー ログ ファイルを調べる必要があります。 エラーが修正されるまで、割り当てを再試行しないでください。

AP_ALLOCATION_FAILURE_RETRY

セカンダリ リターン コード。リンクエラーなどの一時的な状態のため、会話を割り当てませんでした。 エラーの理由は、システム エラー ログに記録されます。 割り当てを再試行してください。

AP_COMM_SUBSYSTEM_ABENDED
プライマリ リターン コード。次のいずれかの条件を示します。

  • このメッセージ交換で使用されているノードで、ABEND が発生しました。

  • TP と PU 2.1 ノードの間の接続が切断されました (LAN エラー)。

  • TP のコンピューターの SnaBase で ABEND が発生しました。

    ABEND の理由を特定するには、システム管理者がエラー ログを調べる必要があります。

    AP_COMM_SUBSYSTEM_NOT_LOADED
    プライマリ リターン コード。動詞の処理中に、必要なコンポーネントを読み込めなかったか、終了できませんでした。 そのため、通信を行うことができませんでした。 是正措置については、システム管理者に問い合わせてください。

    この戻りコードを MC_ALLOCATEと共に使用すると、ローカル LU をサポートする通信システムが見つからなかったことを示すことができます。 (たとえば、 TP_STARTED で指定されたローカル LU エイリアスが正しくないか、構成されていません)。 lu_alias または mode_name が 8 文字未満の場合は、これらのフィールドに右側のスペースが入力されていることを確認する必要があることに注意してください。 MC_ALLOCATE 要求を 満たすことができるノードがないため、これらのパラメーターにスペースが入力されていない場合、このエラーが返されます。

    MC_ALLOCATEが複数のノードで構成された Host Integration Server システムに対してこのリターン コードを生成する場合、次の 2 つのセカンダリ リターン コードがあります。

    0xF0000001

    セカンダリ リターン コード。ノードが開始されていません。

    0xF0000002

    セカンダリ リターン コード。少なくとも 1 つのノードが開始されましたが、ローカル LU ( TP_STARTED が発行された場合) は、どのアクティブ ノードでも構成されていません。 この問題は、次のいずれかである可能性があります。

  • ローカル LU を持つノードが開始されていません。

  • ローカル LU が構成されていません。

    AP_INVALID_VERB_SEGMENT
    プライマリ リターン コード。VCB がデータ セグメントの終わりを越えています。

    AP_STACK_TOO_SMALL
    プライマリ リターン コード。アプリケーションのスタック サイズが小さすぎて動詞を実行できません。 アプリケーションのスタック サイズを増やしてください。

    AP_CONV_BUSY
    主なリターン コード。どの会話でも、一度に 1 つの未処理の会話動詞しか存在できません。 これは、ローカル TP に複数のスレッドがあり、複数のスレッドが同じ conv_idを使用して APPC 呼び出しを発行している場合に発生する可能性があります。

    AP_THREAD_BLOCKING
    プライマリ リターン コード。呼び出し元のスレッドは、既にブロック呼び出しにあります。

    AP_UNEXPECTED_DOS_ERROR
    プライマリ リターン コード。ローカル TP からの APPC 呼び出しの処理中に、オペレーティング システムから APPC にエラーが返されました。 オペレーティング システムのリターン コードは、secondary_rc 経由で返されます。 これは、Intel バイトスワップ順で表示されます。 問題が解決しない場合は、システム管理者に問い合わせてください。

解説

MC_ALLOCATE は、マップされた会話を確立します。

TP がこの動詞を発行すると、会話の状態は RESET になります。 正常に実行されると (primary_rc がAP_OK)、状態は SEND に変わります。 動詞が実行されない場合、状態は変更されません。

MC_ALLOCATEのいくつかのパラメーターは、EBCDIC または ASCII 文字列です。 TP は CSV CONVERT を使用して、文字列を 1 つの文字セットから他方の文字セットに変換できます。

MC_ALLOCATE要求をすぐに送信するために、呼び出し元の TP は、MC_ALLOCATEの直後MC_FLUSHまたはMC_CONFIRMを発行できます。 それ以外の場合、 MC_ALLOCATE 要求は、バッファーがいっぱいになるまで、ローカル LU の送信バッファー内の他のデータと共に蓄積されます。

MC_ALLOCATEにMC_CONFIRMを発行することで、呼び出し元の TP は、割り当てが成功したかどうかをすぐに判断できます (synclevel が AP_CONFIRM_SYNC_LEVEL に設定されている場合)。

通常、 MC_ALLOCATE 動詞の mode_name パラメーターの値は、呼び出された TP のノード用に構成され、パートナー LU との構成中に関連付けられているモードの名前と一致する必要があります。

呼び出された TP のノードのパートナー LU に関連付けられているモードの 1 つが暗黙的モードの場合、パートナー LU に関連付けられているモード名が mode_name の値と一致しない場合、2 つの LU 間で確立されたセッションは暗黙的モードになります。

Host Integration Server では、パスワード置換と呼ばれる機能がサポートされています。 これは、Attach メッセージ上の 2 つのノード間を流れるパスワードを暗号化する最新バージョンの IBM i オペレーティング・システム (V3R1) でサポートされているセキュリティー機能です。 ユーザー ID とパスワードを指定して APPC トランザクション プログラムを呼び出すたびに、パスワードが Attach に送信されます。 たとえば、これは誰かが IBM i にログオンするたびに発生します。

パスワード置換のサポートは、BIND 要求のバイト 23 のビット 5 を 1 に設定することによって示されます (これは、パスワードの置換がサポートされていることを示します)。 リモート・システムが BIND 応答でこのビットを設定すると、Host Integration Server は FMH-5 Attach メッセージに含まれる LU 6.2 会話セキュリティー・パスワードを自動的に暗号化します。 ホスト統合サーバー APPC アプリケーションは、VCB の セキュリティ フィールドを MC_ALLOCATE 要求でAP_PGMまたはAP_STRONGに設定することで、この機能を自動的 利用します。

APPC アプリケーションが暗号化されたパスワードを強制的にフローさせる場合、アプリケーションは、MC_ALLOCATE要求の VCB の セキュリティ フィールドに AP_STRONG を指定できます。 このオプションは、IBM i V3R1 で定義されているように実装されており、物理ネットワークを経由する前に LU 6.2 pwd (パスワード) フィールドが暗号化されるCM_SECURITY_PROGRAM_STRONGとして IBM i CPI-C プログラマー・リファレンスに記載されています。

パスワード置換機能は現在、IBM i V3R1 以降でのみサポートされています。 リモート システムでこの機能がサポートされていない場合、Host Integration Server は、10060006のセンス コードを使用してセッションのバインドを解除します。 2 つのノードは、BIND 交換でこの機能をサポートしているかどうかをネゴシエートします。 ホスト統合サーバーは BIND にビットを設定し、暗号化のために BIND にランダムなデータを追加します。 リモート ノードがパスワードの置換をサポートしている場合は、BIND 応答で同じビットを設定し、復号化のためにいくつかの (異なる) ランダム データを追加します。

Host Integration Server では、APPC アプリケーションの自動ログオンがサポートされています。 この機能には、ネットワーク管理者による特定の構成が必要です。APPC アプリケーションは、ホスト統合サーバーのクライアントから LAN 側で呼び出す必要があります。 クライアントは Windows ドメインにログインする必要がありますが、Host Integration Server APPC API をサポートする任意のプラットフォームにすることができます。

クライアント アプリケーションは、特別なハードコーディングされた APPC ユーザー名 MS$SAME とパスワード MS$SAME を使用して、"プログラム" レベルのセキュリティを使用するようにコーディングされています。 このセッション割り当てがクライアントからホスト統合サーバーに送信されると、Host Integration Server サーバーは、クライアントがログインしている Windows アカウントに対応するホスト アカウントとパスワードを検索し、ホスト アカウント情報をホストに送信する APPC アタッチ メッセージに置き換えます。

注意

リモート ノードがパスワードの置換を指定するビットを設定し、ランダム なデータを追加することは無効です。

IBM によると、LU 6.2 パスワード置換の実装では、パスワードの置換はサポートされていませんが、パスワード置換ビットをホスト統合サーバーにエコーバックします。ランダムなデータは指定しません。 これを行うと、Host Integration Server はセンス コード 10060006 でセッションのバインドを解除します。このセンス コードは次のように解釈されます。

  • 1006 = 必須フィールドまたはパラメーターがありません。

  • 0006 = 制御ベクトルの必須サブフィールドが省略されました。

    ホスト統合サーバーでは、イベント 17 もログに記録する必要があります (APPC セッションのアクティブ化エラー: BIND 否定応答が送信されました)。

    正しい解決策は、失敗した実装を修正することです。 ただし、短期的な回避策として、次の Host Integration Server SNA Service レジストリ設定を設定できます: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB: REG_SZ: YES

    このパラメーターがレジストリで指定されている場合、Host Integration Server のパスワード置換のサポートは無効になります。

    ホスト統合サーバーにいくつかの更新が行われ、特権を持つ APPC アプリケーションが、定義済みの Windows ユーザーに代わって単一の Sign-On 機能を使用して APPC 会話を開くことができるようになります。 これは特権プロキシ機能と呼ばれます。 この機能を呼び出すために、拡張機能 APPC MC_ALLOCATE 動詞に追加されました。

    APPC アプリケーションは、特別な Windows グループのメンバーである Windows ユーザー アカウントで起動することで特権を得る。 ホスト セキュリティ ドメインが構成されている場合、SNA Manager は、ホスト統合サーバーのホスト セキュリティ機能で使用する 2 つ目の Windows グループを定義します。 実際のクライアントが実行されているユーザー アカウントがこの 2 番目の Windows グループのメンバーである場合、クライアントはホスト アカウント キャッシュで定義されている任意のユーザー アカウントに代わって APPC 会話を開始する特権を持ちます。

    特権プロキシ機能の動作を次に示します。

    ホスト統合サーバー管理者は、APP という名前のホスト セキュリティ ドメインを作成します。 SNA マネージャーによって、2 つの Windows グループが作成されるようになりました。 最初のグループは APP と呼ばれ、2 番目のグループはこの例のAPP_PROXY呼び出されます。 APP グループに割り当てられているユーザーは、シングル サインオンに対して有効になります。 APP_PROXY グループに割り当てられているユーザーは、特権プロキシです。 管理者は、SNA Manager の [ホスト セキュリティ ドメイン] プロパティ ダイアログ ボックスの [ユーザー] ボタンを使用して、Windows ユーザー AppcUser を APP_PROXY グループに追加します。

    次に、管理者は、AppCAPP という Windows サービスとして実行するようにホスト統合サーバー サーバー上に APPC アプリケーションを設定し、そのサービスが AppcUser ユーザー アカウントで動作するように設定されています。 APPCAPP を実行すると、拡張 VCB 形式を使用して ALLOCATE 動詞を使用して APPC セッションが開き、目的のユーザーの Windows ユーザー名 (UserA など) が指定されます。

    SNA サービスは、ホスト セキュリティ ドメイン アプリのメンバーである接続からのセッション要求を確認します。 クライアント/サーバー インターフェイスは、実際のクライアントが AppcUser であることを SNA サービスに通知します。

    SNA サービスは、AppcUser がAPP_PROXY グループのメンバーであるかどうかを確認します。 AppcUser はAPP_PROXYのメンバーであるため、SNA サービスは APPC Attach (FMH-5) コマンドに UserA の Username/Password を挿入し、パートナー TP に送信します。

    特権プロキシ機能をサポートするには、APPC アプリケーションで次のプログラム ロジックを実装する必要があります。

    APPC アプリケーションは、偽装する Windows ユーザー ID とドメイン名を決定する必要があります。

    APPC アプリケーションは、MC_ALLOCATE動詞を呼び出す前に、次のパラメーターを設定 する 必要があります。

    拡張 MC_ALLOCATE 動詞制御ブロック構造の使用を有効にするには、 opext フィールドに AP_EXTD_VCB フラグを設定します。

    セキュリティをAP_PROXY_SAME、AP_PROXY_PGM、またはAP_PROXY_STRONGに設定します。

    偽装するユーザーのユーザー名とドメイン名を含む Unicode 文字列を指すproxy_userとproxy_domainのポインターを設定します。

注意

アプリケーションは、MC_ALLOCATE VCBuser_id フィールドと pwd フィールドを設定する必要はありません。

APPC アプリケーションが上記の手順を実行し、 MC_ALLOCATE 動詞を発行すると、Host Integration Server サーバーは、指定された Windows ユーザーのホスト セキュリティ ドメインで参照を実行し、FMH-5 のユーザー ID フィールドとパスワード フィールドをリモート システムに送信される添付メッセージに設定します。