RUI_WRITE
RUI_WRITE 동사는 LUA(논리 단위 애플리케이션) 애플리케이션에서 LU 세션 또는 SSCP(시스템 서비스 제어점) 세션을 통해 호스트로 SNA 요청 또는 응답 단위를 보내고 Microsoft® Windows® LUA 애플리케이션의 응답, SNA 명령 및 데이터를 호스트 LU로 보냅니다.
다음 구조체는 RUI_WRITE 사용하는 동사 제어 블록(VCB)의 LUA_COMMON 멤버에 대해 설명합니다.
구문
struct LUA_COMMON {
unsigned short lua_verb;
unsigned short lua_verb_length;
unsigned short lua_prim_rc;
unsigned long lua_sec_rc;
unsigned short lua_opcode;
unsigned long lua_correlator;
unsigned char lua_luname[8];
unsigned short lua_extension_list_offset;
unsigned short lua_cobol_offset;
unsigned long lua_sid;
unsigned short lua_max_length;
unsigned short lua_data_length;
char FAR * lua_data_ptr;
unsigned long lua_post_handle;
struct LUA_TH lua_th;
struct LUA_RH lua_rh;
struct LUA_FLAG1 lua_flag1;
unsigned char lua_message_type;
struct LUA_FLAG2 lua_flag2;
unsigned char lua_resv56[7];
unsigned char lua_encr_decr_option;
};
멤버
lua_verb
제공된 매개 변수입니다. RUI(요청 단위 인터페이스) 동사에 대한 LUA_VERB_RUI 동사 코드를 포함합니다.
lua_verb_length
제공된 매개 변수입니다. LUA VCB의 길이(바이트)를 지정합니다. 발급되는 동사 레코드의 길이를 포함해야 합니다.
lua_prim_rc
동사가 완료될 때 LUA가 설정한 기본 반환 코드입니다. 유효한 반환 코드는 발급된 LUA 동사에 따라 달라집니다.
lua_sec_rc
동사가 완료될 때 LUA에서 설정한 보조 반환 코드입니다. 유효한 반환 코드는 발급된 LUA 동사에 따라 달라집니다.
lua_opcode
제공된 매개 변수입니다. LUA_OPCODE_RUI_WRITE 발급할 동사에 대한 LUA 명령 코드(동사 작업 코드)를 포함합니다.
lua_correlator
제공된 매개 변수입니다. 동사를 다른 사용자가 제공한 정보와 연결하는 사용자 제공 값을 포함합니다. LUA는 이 정보를 사용하거나 변경하지 않습니다. 이 매개 변수는 선택적 요소입니다.
lua_luname
제공된 매개 변수입니다. Windows LUA 세션에서 사용하는 로컬 LU의 ASCII 이름을 지정합니다.
RUI_WRITElua_sid 0인 경우에만 이 매개 변수가 필요합니다.
이 매개 변수는 8바이트 길이이며, 이름이 8자보다 짧은 경우 공백(0x20)으로 오른쪽에 패딩됩니다.
lua_extension_list_offset
Microsoft® Host Integration Server의 RUI에서 사용되지 않으며 0으로 설정해야 합니다.
lua_cobol_offset
호스트 통합 서버에서 LUA에서 사용되지 않으며 0이어야 합니다.
lua_sid
제공된 매개 변수 및 반환된 매개 변수입니다. 세션 식별자를 지정하고 SLI_OPEN 및 RUI_INIT 반환됩니다. 다른 동사는 이 매개 변수를 사용하여 명령에 사용되는 세션을 식별합니다. 다른 동사에서 lua_luname 매개 변수를 사용하여 세션을 식별하는 경우 lua_sid 매개 변수를 0으로 설정합니다.
lua_max_length
RUI_WRITE 사용되지 않으며 0으로 설정해야 합니다.
lua_data_length
반환된 매개 변수입니다. RUI_BID 동사에 대해 lua_peek_data 반환되는 데이터의 길이를 지정합니다.
lua_data_ptr
RUI_WRITE 호스트로 보낼 데이터가 포함된 버퍼를 가리킵니다.
SNA 명령과 데이터는 모두 이 버퍼에 배치되며 EBCDIC 형식일 수 있습니다.
lua_post_handle
제공된 매개 변수입니다. 이벤트에 의해 비동기 알림을 수행할 경우 Microsoft Windows에서 사용됩니다. 이 변수에는 신호를 받을 이벤트의 핸들 또는 창 핸들이 포함됩니다.
lua_th
반환된 매개 변수입니다. 보내거나 받은 메시지의 SNA 전송 헤더(TH)를 포함합니다. 쓰기 함수에 대해 다양한 하위 매개 변수가 설정되고 읽기 및 입찰 함수에 대해 반환됩니다. 하위 매개 변수는 다음과 같습니다.
lua_th.flags_fid
형식 식별 유형 2, 4비트.
lua_th.flags_mpf
분할 매핑 필드( 2비트). 데이터 세그먼트의 형식을 정의합니다. 유효한 값은 다음과 같습니다.
0x00 중간 세그먼트0x04 마지막 세그먼트0x08 첫 번째 세그먼트0x0C 세그먼트만
lua_th.flags_odai
OAF-DAF(원래 주소 필드- 대상 주소 필드) 할당자 표시기( 1비트)
lua_th.flags_efi
신속한 흐름 표시기, 1비트.
lua_th.daf
서명되지 않은 문자인 DAF(대상 주소 필드)입니다.
lua_th.oaf
서명되지 않은 문자인 OAF(원래 주소 필드)입니다.
lua_th.snf
시퀀스 번호 필드, 부호 없는 char[2].
lua_rh
반환된 매개 변수입니다. 보내거나 받은 메시지의 SNA RH(요청/응답 헤더)를 포함합니다. RUI_WRITE RH의 경우 대기 중인 응답 표시기(lua_rh.qri) 및 속도 표시기(lua_rh.pi)를 제외한 모든 필드가 사용됩니다. 하위 매개 변수는 다음과 같습니다.
lua_rh.rri
요청 응답 표시기, 1비트.
lua_rh.ruc
RU 범주, 2비트. 유효한 값은 다음과 같습니다.
LUA_RH_FMD(0x00) FM 데이터 세그먼트LUA_RH_NC(0x20) 0x40(네트워크 제어LUA_RH_DFC) 데이터 흐름 제어LUA_RH_SC(0x60) 세션 제어
lua_rh.fi
서식 표시기( 1비트).
lua_rh.sdi
센스 데이터 포함 표시기( 1비트)
lua_rh.bci
체인 표시기를 시작합니다( 1비트).
lua_rh.eci
끝 체인 표시기, 1비트.
lua_rh.dr1i
명확한 응답 1 표시기, 1비트.
lua_rh.dr2i
명확한 응답 2 표시기, 1비트.
lua_rh.ri
예외 응답 표시기(요청의 경우) 또는 응답 유형 표시기(응답의 경우) 1비트입니다.
lua_rh.qri
큐에 대기된 응답 표시기( 1비트)
lua_rh.pi
속도 표시기, 1비트.
lua_rh.bbi
대괄호 표시기를 시작합니다( 1비트).
lua_rh.ebi
끝 대괄호 표시기, 1비트.
lua_rh.cdi
방향 표시기( 1비트)를 변경합니다.
lua_rh.csi
코드 선택 표시기, 1비트.
lua_rh.edi
암호화된 데이터 표시기( 1비트).
lua_rh.pdi
패딩된 데이터 표시기( 1비트)
lua_flag1
제공된 매개 변수입니다. 애플리케이션에서 제공하는 메시지에 대한 플래그를 포함하는 데이터 구조를 포함합니다. 하위 매개 변수는 다음과 같습니다.
lua_flag1.bid_enable
입찰 사용 표시기( 1비트).
lua_flag1.close_abend
즉시 표시기를 닫습니다( 1비트).
lua_flag1.nowait
데이터 플래그가 1비트일 때까지 기다리지 않습니다.
lua_flag1.sscp_exp
SSCP 신속한 흐름, 1비트.
lua_flag1.sscp_norm
SSCP 일반 흐름, 1비트.
lua_flag1.lu_exp
LU 신속한 흐름, 1비트.
lua_flag1.lu_norm
LU 일반 흐름, 1비트.
다음 플래그 중 하나를 1로 설정하여 데이터를 보낼 메시지 흐름을 나타냅니다.
lua_flag1.sscp_exp
lua_flag1.sscp_norm
lua_flag1.lu_exp
lua_flag1.lu_norm
lua_message_type
RUI_WRITE 사용되지 않으며 0으로 설정해야 합니다.
lua_flag2
반환된 매개 변수입니다. LUA에서 반환하는 메시지에 대한 플래그를 포함합니다. 하위 매개 변수는 다음과 같습니다.
lua_flag2.bid_enable
1로 설정된 경우 RUI_BID 다시 사용하도록 설정되었음을 나타냅니다.
lua_flag2.async
1로 설정된 경우 LUA 인터페이스 동사가 비동기적으로 완료되었음을 나타냅니다.
lua_flag2.sscp_exp
1로 설정된 경우 SSCP 긴급 흐름을 나타냅니다.
lua_flag2.sscp_norm
1로 설정된 경우 SSCP 일반 흐름을 나타냅니다.
lua_flag2.lu_exp
1로 설정된 경우 LU 긴급 흐름을 나타냅니다.
lua_flag2.lu_norm
1로 설정된 경우 LU 정상 흐름을 나타냅니다.
lua_resv56
예약되어 있으며 0으로 설정해야 합니다.
lua_encr_decr_option
예약되어 있으며 0으로 설정해야 합니다.
반환 코드
LUA_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.
LUA_CANCELED
기본 반환 코드; 동사가 다른 동사에 의해 취소되었기 때문에 동사가 성공적으로 완료되지 않았습니다.
LUA_TERMINATED
보조 반환 코드; 이 세션에 대해 RUI_TERM 실행되었으므로 동사가 취소되었습니다.
LUA_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.
LUA_BAD_DATA_PTR
보조 반환 코드; lua_data_ptr 매개 변수에 잘못된 값이 포함되어 있습니다.
LUA_BAD_SESSION_ID
보조 반환 코드; lua_sid 잘못된 값이 VCB에 지정되었습니다.
LUA_DUPLICATE_WRITE_FLOW
보조 반환 코드; RUI_WRITE 이 동사에 지정된 세션 흐름에 대해 이미 미해결 상태였습니다(세션 흐름은 lua_flag1 흐름 플래그 중 하나를 1로 설정하여 지정됨). 각 세션 흐름에서 한 번에 하나의 RUI_WRITE 만 수행할 수 있습니다.
LUA_INVALID_FLOW
보조 반환 코드; SSCP 긴급 흐름에서 메시지를 보내야 함을 나타내는 lua_flag1.sscp_exp 흐름 플래그가 설정되었습니다. LUA는 애플리케이션이 이 흐름에 대한 데이터를 보내는 것을 허용하지 않습니다.
LUA_INVALID_POST_HANDLE
보조 반환 코드; 이벤트를 비동기 게시 방법으로 사용하는 Windows 운영 체제의 경우 Windows LUA VCB에 유효한 이벤트 핸들이 없습니다.
LUA_MULTIPLE_WRITE_FLOWS
보조 반환 코드; lua_flag1 흐름 플래그 중 하나 이상이 1로 설정되었습니다. 데이터를 전송할 세션 흐름을 나타내려면 이러한 플래그 중 하나만 1로 설정해야 합니다.
LUA_REQUIRED_FIELD_MISSING
보조 반환 코드; 는 다음 사례 중 하나를 나타냅니다.
lua_flag1 흐름 플래그가 설정되지 않았습니다. 이러한 플래그 중 하나만 1로 설정해야 합니다.
RUI_WRITE 응답을 보내는 데 사용되었으며 응답에는 제공된 것보다 더 많은 데이터가 필요했습니다.
LUA_RESERVED_FIELD_NOT_ZERO
보조 반환 코드; 동사 레코드의 예약 필드 또는 이 동사에서 사용하지 않는 매개 변수가 0이 아닌 값으로 설정되었습니다.
LUA_VERB_LENGTH_INVALID
보조 반환 코드; LUA 동사가 LUA에서 예기치 않은 lua_verb_length 값으로 발급되었습니다.
LUA_STATE_CHECK
기본 반환 코드입니다. 동사가 잘못된 상태에서 발행되었으므로 실행되지 않았습니다.LUA_MODE_INCONSISTENCY
보조 반환 코드; RUI_WRITE 전송된 SNA 메시지가 현재 유효하지 않습니다. 이는 세션이 바인딩되기 전에 LU 세션에서 데이터를 보내려고 시도하여 발생합니다. 전송된 SNA 메시지의 시퀀스를 확인합니다.
LUA_NO_RUI_SESSION
보조 반환 코드; 이 동사에 지정된 LU 이름에 대한 RUI_INIT 아직 완료되지 않았습니다.
LUA_UNSUCCESSFUL
기본 반환 코드; 제공된 동사 레코드가 유효했지만 동사가 성공적으로 완료되지 않았습니다.LUA_FUNCTION_NOT_SUPPORTED
보조 반환 코드; 는 다음 사례 중 하나를 나타냅니다.
lua_rh.fi 비트(형식 표시기)는 1로 설정되었지만 제공된 RU의 첫 번째 바이트는 인식된 요청 코드가 아니었습니다.
lua_rh.ruc 매개 변수(RU 범주)는 NC(네트워크 제어) 범주를 지정했습니다. LUA는 애플리케이션이 이 범주에서 요청을 보내는 것을 허용하지 않습니다.
LUA_INVALID_PROCESS
보조 반환 코드; 이 동사를 발급한 OS/2 프로세스는 이 세션에 대해 RUI_INIT 발급한 프로세스와 다릅니다. 세션을 시작한 프로세스만 해당 세션에서 동사를 발급할 수 있습니다.
LUA_INVALID_SESSION_PARAMETERS
보조 반환 코드; 애플리케이션은 호스트에서 받은 BIND 메시지에 긍정적인 응답을 보내기 위해 RUI_WRITE 사용했습니다. 그러나 호스트 통합 서버는 지정된 BIND 매개 변수를 수락할 수 없으며 호스트에 부정적인 응답을 보냈습니다. 호스트 통합 서버에서 수락한 BIND 프로필에 대한 자세한 내용은 LUA를 사용하는 SNA 고려 사항을 참조하세요.
LUA_RSP_CORRELATION_ERROR
보조 반환 코드; RUI_WRITE 사용하여 응답을 보낼 때 lua_th.snf (응답 중인 수신된 메시지의 시퀀스 번호를 나타냅니다)에 유효한 값이 포함되지 않았습니다.
LUA_RU_LENGTH_ERROR
보조 반환 코드; lua_data_length 매개 변수에 잘못된 값이 포함되어 있습니다. LU 일반 흐름에서 데이터를 보낼 때 최대 길이는 호스트에서 받은 BIND에 지정된 대로 입니다. 다른 모든 흐름의 경우 최대 길이는 256바이트입니다.
참고
다른 보조 반환 코드는 제공된 SNA 데이터가 잘못되었거나 전송할 수 없음을 나타내는 SNA 센스 코드입니다. 반환할 수 있는 SNA 센스 코드를 해석하는 방법에 대한 자세한 내용은 LUA를 사용하는 SNA 고려 사항을 참조하세요.
LUA_COMM_SUBSYSTEM_ABENDED
기본 반환 코드입니다. 다음 조건 중 하나를 나타냅니다.
이 대화에서 사용하는 노드에 ABEND가 발생했습니다.
TP(트랜잭션 프로그램)와 PU(물리적 단위) 2.1 노드 간의 연결이 끊어졌습니다(LAN 오류).
TP 컴퓨터의 SnaBase에서 ABEND가 발견되었습니다.
LUA_SESSION_FAILURE
기본 반환 코드; 필수 호스트 통합 서버 구성 요소가 종료되었습니다.LUA_LU_COMPONENT_DISCONNECTED
보조 반환 코드; 는 링크 서비스 또는 호스트 LU 문제로 인해 LUA 세션이 실패했음을 나타냅니다.
LUA_RUI_LOGIC_ERROR
보조 반환 코드; LUA 내에서 내부 오류가 검색되었습니다. 이 오류는 정상 작업 중에는 발생하지 않습니다.
LUA_INVALID_VERB
기본 반환 코드; 동사 코드 또는 작업 코드 또는 둘 다 잘못되었습니다. 동사가 실행되지 않았습니다.LUA_STACK_TOO_SMALL
기본 반환 코드입니다. 애플리케이션의 스택 크기가 너무 작아서 동사를 실행할 수 없습니다. 애플리케이션의 스택 크기를 늘리세요.LUA_COMM_SUBSYSTEM_NOT_LOADED
기본 반환 코드; 동사를 처리하는 동안 필수 구성 요소를 로드하거나 종료할 수 없습니다. 따라서 통신을 수행할 수 없습니다. 정정 작업은 시스템 관리자에게 문의하세요LUA_UNEXPECTED_DOS_ERROR
기본 반환 코드; 운영 체제 호출을 실행한 후 예기치 않은 운영 체제 반환 코드가 수신되고 보조 반환 코드에 지정됩니다.
설명
이 동사를 발급하기 전에 RUI_INIT 성공적으로 발급되어야 합니다.
SNA 요청을 보낼 때 lua_rh 적용 가능한 모든 값을 설정해야 합니다. 연결 및 대괄호는 애플리케이션의 책임입니다.
응답을 보낼 때 응답 유형에 따라 필요한 RUI_WRITE 정보가 결정됩니다. 모든 응답의 경우 다음을 수행해야 합니다.
선택한 lua_rh.rri 플래그를 1로 설정합니다.
응답하는 요청에 대한 시퀀스 번호를 lua_th.snf 에 제공합니다.
다중 체인 메시지 응답의 경우 마지막으로 받은 체인 요소의 시퀀스 번호를 사용해야 합니다. CANCEL 명령으로 끝나는 다중 집합 메시지에 대한 응답의 경우 CANCEL 명령 시퀀스 번호가 사용됩니다.
요청 코드만 필요한 양수 응답의 경우 lua_rh.ri 를 0으로 설정하고(응답이 양수임을 나타낸) 0으로 lua_data_length (데이터가 제공되지 않음을 나타낸다). 요청 코드는 제공된 시퀀스 번호를 사용하여 RUI에 의해 채워집니다.
음수 응답의 경우 lua_rh.ri 를 1로 설정하고 SNA 감지 코드 주소로 lua_data_ptr SNA 센스 코드 길이(4바이트)로 lua_data_length . 시퀀스 번호는 RUI에서 요청 코드를 채우는 데 사용됩니다.
응답에 데이터가 필요한 BIND 및 STSN 명령에 대한 긍정적인 응답의 경우 응답을 가리키도록 lua_data_ptr 설정하고 lua_data_length lua_data_ptr 제공된 데이터의 길이로 설정합니다.
기존 RUI_WRITE 보류 중인 동안 보류 중인 RUI_WRITE 다른 세션 흐름을 지정하는 경우에만 두 번째 RUI_WRITE 실행할 수 있습니다. 동일한 세션 흐름에 대해 둘 이상의 RUI_WRITE 미해결 상태일 수 없습니다.
RUI_WRITE 성공적인 RUI_INIT 후 언제든지 SSCP 정상 흐름에서 발급할 수 있습니다. LU 긴급 또는 LU 일반 흐름의 RUI_WRITE 동사는 BIND를 받은 후에만 허용되며 BIND에 지정된 프로토콜을 준수해야 합니다.
RUI_WRITE 성공적으로 완료되면 메시지가 데이터 링크에 성공적으로 큐에 대기되었음을 나타냅니다. 메시지가 성공적으로 전송되었거나 호스트가 수락했음을 반드시 나타내는 것은 아닙니다.
속도는 LUA 애플리케이션이 로컬 또는 원격 LU가 처리할 수 있는 것보다 더 많은 데이터를 보내지 못하도록 보조-주 반 세션(BIND에 지정됨)에서 사용할 수 있습니다. 이 경우 LU 정상 흐름에 대한 RUI_WRITE LUA에 의해 지연될 수 있으며 완료하는 데 다소 시간이 걸릴 수 있습니다.
참고 항목
RUI_INIT
RUI_READ
RUI_TERM
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND