【呼出形式(C)】
UINT XWSIAPI XWSI_KC_RECV(ReqHandle,ws_errno,recv_inf,code_type,gaiji,emu_end_status,dev_status,data_kind,recv_buffer) USHORT ReqHandle リクエストハンドル UINT *ws_errno 処理結果 XWsiTrnsInf *recv_inf 受信タイミング USHORT code_type コード変換タイプ USHORT gaiji 漢字変換指定 USHORT *emu_end_status DSPEMU終了情報 XWsiLine25Inf *dev_status デバイス状態情報 USHORT data_kind 受信データ種別 XWsiRecvText **recv_buffer 画面バッファ
【機能】
現時点の画面バッファ、デバイス状態情報を受け取ります。獲得した画面バッファは、アプリケーションが不必要になった時点でWSMGR FREEで開放してください。
ディスプレイエミュレータでは、目で画面を見るのと同じことをAPI として提供しています。
KC RECEIVEには、WAITモードとNON WAITモードの2つのモードがあります。
(recv_inf.modeで指定します)。WAITモードは、キー入力が可能な状態になるまで待ち、そのときの画面データの内容を返すモードです。これはホストからのデータが分割されてWRITE された場合、画面が全部揃ったことをキーボードアンロックで認識することができます。
(1) WAITモードタイミングチャート
KC SEND でも述べたように、キーボードロックは途中で瞬間はずれることがあるので、それを解決するために key_unlock_timeを指定します。
詳しくは、「4.2.2 KC SEND」を参照してください。
NON WAITモードは、アプリケーションから依頼があったときに画面データを取り込むモードです。
KC ESTART でディスプレイエミュレータを起動している場合、ディスプレイエミュレータの終了キーが押されたことを受け取ることはできますが終了はされません。ディスプレイエミュレータを終了したい場合は、KC EEND を行ってください。
画面データを受け取るほかに、dev_statusとして、通常ディスプレイエミュレータで表示されている25行目の情報をコード化して通知します。この情報により、ホストとの接続状態を詳細に知ることができます。
アプリケーションが受け取ったデータ(recv_buffer)は、WSMGR がOSから獲得(ALLOC)した領域ですので、アプリケーションが必要なくなった場合は、WSMGR FREEを行って開放してください。
開放したあとにこの領域を参照すると、そのアプリケーションはトラップにより終了させられてしまうので注意してください。
【引数】
ReqHandle | WSMGR OPENによって得られたリクエストハンドル。 | ||||||
ws_errno | 処理結果が格納されるアドレス。 | ||||||
recv_inf | 受信タイミング情報が格納されているアドレス。 | ||||||
1)mode | レスポンスを返すタイミング。 | ||||||
XWSIMOD_NOWAIT | (0) | NON WAITモード | |||||
要求時の画面バッファの内容を返す。 | |||||||
XWSIMOD_WAIT | (1) | WAITモード | |||||
キー入力可能になるまで WAIT しキー入力可能になった時点の画面バッファの内容を返す。 注) | |||||||
2)wait_time | 受信タイミングをWAITモードに指定した時の応答待ち時間を指定する(単位 秒/0: 無限待ち)。 | ||||||
3)key_unlock_time | キーアンロックタイム(単位100m秒) | ||||||
code_type | 1 バイトコード系のコード変換の種別指定。 | ||||||
XWSICNV_STUP | (0) | WSMGR CONNECTで指定したセットアップファイルに設定されているコード種別(下記 1~3 のいずれかより選択) | |||||
XWSICNV_EBCALPH | (1) | EBCDIC 英小文字 | |||||
XWSICNV_EBCKANA | (2) | EBCDIC カナ有り | |||||
XWSICNV_EBCASCI | (3) | EBCDIC.ASCII | |||||
gaiji | 漢字変換指定 XWSIDWC_CNV_UJIS (X'01): 非漢字、第1・2水準とユーザ作成のJEF 変換テーブルを利用した漢字変換。 | ||||||
emu_end_status | DSPEMU終了情報を格納するアドレス。 | ||||||
dev_status | デバイス状態情報を格納するアドレス | ||||||
data_kind | 受信データ指定 | ||||||
XWSIKC_NOOPT | (0) | 画面データのみ | |||||
XWSIKC_FLDINF | (1) | 画面データ、フィールドアトリビュート情報 | |||||
recv_buffer | 画面バッファデータを格納するアドレス |
【関数返却値】
XWSIWSAPI_GOOD | (0) | WSAPI が正常に処理されました。 |
XWSIWSOS_ERR | (1) | WSMGR でWindows API コールを行いその結果エラーになった場合、設定されます。また、そのとき受け取ったエラーコードをws_errno に格納します。 |
XWSIWSAPI_ERR | (2) | WSAPI が異常で終了したことを示します。エラー詳細は、ws_errno に格納されます。 |
【出力】
ws_errno | 関数返却値 = XWSIWSOS_ERR (1) のとき 関数返却値 = XWSIWSAPI_ERR (2) のとき 関数返却値 = XWSIWSAPI_GOOD (0) のとき | |
emu_end_status | DSPEMU終了情報 XWSIEMU_ENDOFF (0): | |
dev_status | デバイス状態情報 | |
recv_buffer | 画面バッファデータのアドレス。 | |
1)curs_adr | カーソルアドレス。 | |
2)buf_length | バッファ長(1920固定)。 | |
3)data | 画面データ格納領域のアドレス。 | |
4)f_num | フィールドアトリビュート情報の個数。 | |
5)f_inf | フィールドアトリビュート情報格納領域のアドレス。 注) | |
6)j_num | システムリザーブ領域。 | |
7)j_inf | システムリザーブ領域。 |
注意
ホストから受け取ったデータはEBCDICおよびJEF なので、WSMGR はアプリケーションに画面データを渡す場合はコード変換を行います。このときにコード変換エラーが発生した場合、1バイト系コードは'-'、2バイトコード系は'■'に変換してアプリケーションに渡します。
表(1)画面バッファの構造
ATR0、および以下のコードはスペース(X'20')に変換してAPLに渡されます。
NULL(X'00')、DUP(X'1C')、FM(X'1E')
NL(X'15')、FF(X'0C')、CR(X'0D')、EM(X'19')
表(2)フィールドアトリビュート情報バッファの構造
・フィールドアトリビュート情報
1) フィールド定義アドレス
画面バッファ上のフィールド位置(0 ~ 1919)
2) ATR0
フィールドの論理属性を示します。
構成
0: 非保護フィールド
1: 保護フィールド
0: 自由フィールド
1: 数字フィールド
00: 低輝度表示/ライトペン検知不可
01: 低輝度表示/ライトペン検知可
10: 高輝度表示/ライトペン検知可
11: 非表示/ライトペン検知不可
0: フィールドの内容がオペレータにより変更されていないことを示します。
1: フィールドの内容がオペレータにより変更されていることを示します。
3)ATR1
フィールドの表示属性を示します。各ビットは”1”の時意味を持ち、同時に複数の設定が可能です。
構成
ブリンクフィールドを意味します。
リバースフィールドを定義します。
フィールドの上側の行間に水平ラインを表示します。
フィールドの下側の行間に水平ラインを表示します。
このフィールドアトリビュート文字の位置に垂直ラインを表示します。
カナフィールドを定義する。本ビットはATR0のA/Nが0(自由フィールド)のときにのみ有効です。
表(3) デバイス状態情報
注意
各状態においてWSAPI では、未サポート状態はXWSIDEV_NOTSPOTED (X'FF') が返されます。
パラメータ | 定義 |
---|---|
ready | READY
|
rule | 通信ルール
|
conect | 接続状態
|
inp_proh | 入力禁止状態
|
resv1 | リザーブ |
comsts | 通信エラー
|
resv2 | リザーブ |