다음 그림에서는 DMOD(동적 액세스 모듈)에서 메시지를 수신하는 방법을 보여 줍니다.
라우팅 절차를 사용하여 메시지 수신
DMOD 초기화 후 3270 에뮬레이터는 sepdrout을 호출하여 라우팅 프로시저를 등록합니다. DMOD는 메시지를 받으면 3270 에뮬레이터 라우팅 프로시저를 호출하여 메시지를 처리할 수 있습니다.
이 방법을 사용하면 DMOD 스레드와 3270 에뮬레이터 스레드 간에 컨텍스트 전환이 없습니다. 그러나 라우팅 프로시저는 DMOD에 대한 제어를 신속하게 반환해야 합니다. 예를 들어 키보드 입력 대기를 일시 중단할 수 없습니다.
애플리케이션은 수신된 메시지가 이 애플리케이션에 대한 것인지 아니면 다른 애플리케이션에 대한 것인지를 결정해야 합니다. 이 애플리케이션에 대한 메시지가 아닌 경우 메시지가 처리되지 않았음을 나타내는 라우팅 프로시저가 반환되어야 합니다. 애플리케이션이 메시지를 처리하는 경우 처리가 완료되면 버퍼를 해제해야 합니다.
경우에 따라 라우팅 프로시저가 메시지를 완료로 처리할 수 있습니다. 또는 라우팅 프로시저가 메시지를 애플리케이션 큐에 배치한 다음 애플리케이션 세마포를 지우는 것이 좋습니다. 그런 다음 애플리케이션은 나중에 메시지를 처리할 수 있습니다.
메시지가 완료될 때까지 대기하는 대신 메시지가 수신될 때 라우팅 절차에서 Status-Resource 메시지(로컬 노드에 크레딧을 반환하고 추가 데이터를 보낼 수 있도록 함)를 전송하여 성능을 더 향상시킬 수 있습니다. 이 사용법은 샘플 코드: 초기화 및 라우팅 프로시저에 설명되어 있습니다. 크레딧 및 흐름 제어에 대한 자세한 내용은 속도 및 청크를 참조하세요.
애플리케이션에서 메시지를 받은 후 애플리케이션은 메시지를 받은 버퍼를 담당합니다. 애플리케이션은 버퍼를 다시 사용하여 메시지를 보내거나( sbpusend 사용) 해제해야 합니다( sepdburl 사용). 다시 사용할 버퍼에 메시지를 보낼 올바른 수의 요소가 포함되지 않은 경우 애플리케이션은 추가 요소( sbpibegt 사용)를 가져오거나 기존 요소를 해제할 수 있습니다( sbpiberl 사용). 이 경우 애플리케이션은 버퍼 헤더의 numelts 필드가 올바른 요소 수를 나타내는지 확인해야 합니다.