MQCFH 헤더에 액세스

MQCFH 헤더의 필드에 액세스하려면 ESQL문을 코드화하십시오(루트 이름 MQPCF).

태스크 정보

PCF 형식(MQPCF, MQADMIN 및 MQEVENT)인 메시지에는 MQCFH 헤더가 포함됩니다. MQCFH 헤더의 컨텐츠를 처리하여 매개변수, 매개변수 목록, 문자열 및 그룹에 액세스할 수 있습니다.

ParameterCount 필드는 매개변수의 true 수와 동기화되는 값을 유지하기 위해 보기에서 숨겨집니다. 그 결과, ParameterCount 필드를 직접 보고, 액세스하거나 편집할 수 없고 이는 다음을 사용할 때 적용됩니다.
  • ESQL
  • 맵핑 노드
  • 추적 또는 디버깅 코드.

특정 값으로 사용자 고유의 ParameterCount 필드를 구현할 수 있지만, 이 값은 플로우 엑시트에서 실제 매개변수 수로 덮어쓰기됩니다.

  • 헤더에서 매개변수에 액세스하거나 구성하려면 다음 구문을 사용하십시오.
    SET OutputRoot.MQPCF.Parameter[nn] = 
     Integer parameter ID
    64비트 매개변수에 액세스하는 경우에는 다음 구문을 사용하여 32비트 매개변수와 차별화하십시오.
    SET OutputRoot.MQPCF.Parameter64[nn] = 
    	Integer parameter ID
    예를 들어,
    SET OutputRoot.MQPCF.Parameter[1] = 
    	MQCACF_AUTH_PROFILE_NAME;
  • 매개변수 목록에 대해서는 다음 구문을 사용하십시오.
    SET OutputRoot.MQPCF.ParameterList64[nn] = 
    	Integer parameter ID
    SET OutputRoot.MQPCF.ParameterList64[nn].*[xx] = 
    	Integer parameter values
    예를 들어,
    SET OutputRoot.MQPCF.ParameterList[1] = 
    	MQIACF_AUTH_ADD_AUTHS;
    SET OutputRoot.MQPCF.ParameterList[1].*[1] = 
    	MQAUTH_SET;
    SET OutputRoot.MQPCF.ParameterList[1].*[2] = 
    	MQAUTH_SET_ALL_CONTEXT;
  • 바이트 문자열은 바이트 배열 데이터 유형이고, 이 구문으로 지원됩니다.
    SET OutputRoot.MQPCF.Parameter[nn] =  
    	Integer parameter ID
    SET OutputRoot.MQPCF.Parameter[nn].* = 
    	Integer, String or ByteArray Parameter value
  • 그룹은 더 많은 PCF를 포함하는 폴더로서 구현되고 다음 구문이 필요합니다.
    SET OutputRoot.MQPCF.Group[xx] = 
    	Group Parameter ID
    예를 들어,
    SET OutputRoot.MQPCF.Group[1] = 
    	MQGACF_Q_ACCOUNTING_DATA;
    SET OutputRoot.MQPCF.Group[1].Parameter[1] = 
    	MQCA_CREATION_DATE;
    SET OutputRoot.MQPCF.Group[1].Parameter[1].* = 
    	'2007-02-05';
    중첩된 그룹을 사용할 수도 있습니다. 예:
    SET OutputRoot.MQPCF.Group[1].Group[1] = 
    	MQGACF_Q_ACCOUNTING_DATA;
    SET OutputRoot.MQPCF.Group[1].Group[1].Parameter[1] = 
    	MQCA_CREATION_DATE;
    SET OutputRoot.MQPCF.Group[1].Group[1].Parameter[1].* = 
    	'2007-02-05';
  • 필터는 매개변수와 거의 같지만 연산자 또한 포함합니다. 그러므로 구문은 이름 지정된 값이 있는 트리입니다.
    SET OutputRoot.MQPCF.Filter[xx] = 
    	Integer parameter ID
    SET OutputRoot.MQPCF.Filter[xx].Operator = 
    	Integer Filter name
    SET OutputRoot.MQPCF.Filter[xx].Value = 
    	Byte, Integer or String Filter Value
  • 다음은 Compute 노드에서 MQPCF 메시지를 작성하기 위한 예로 사용할 수 있는 샘플 코드입니다.
    CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
    CREATE NEXTSIBLING OF OutputRoot.MQMD DOMAIN 'MQADMIN'
    NAME 'MQPCF';
    CREATE FIELD OutputRoot.MQPCF;
    SET OutputRoot.MQMD.MsgType = MQMT_REQUEST;
    SET OutputRoot.MQMD.ReplyToQ = 'REPLYQ';
    DECLARE refRequest REFERENCE TO OutputRoot.MQPCF;
    SET refRequest.Type = 16; --MQCFT_COMMAND_XR z/OS
    SET refRequest.StrucLength = MQCFH_STRUC_LENGTH;
    SET refRequest.Version = 3; -- required for z/OS
    SET refRequest.Command = MQCMD_INQUIRE_Q;
    SET refRequest.MsgSeqNumber = 1;
    SET refRequest.Control = MQCFC_LAST;
    /* First parameter: Queue Name. */
    SET refRequest.Parameter[1] = MQCA_Q_NAME;
    SET refRequest.Parameter[1].* = 'QUEUENAME.*';
    SET refRequest.ParameterList[1] = MQIACF_Q_ATTRS;
    SET refRequest.ParameterList[1].*  = MQIACF_ALL;