! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF DECLARE LONG CONSTANT OPC$_RQ_TERME = 1 ! ENABLE TERMINAL DECLARE LONG CONSTANT OPC$_RQ_LOGI = 2 ! INITIALIZE THE LOG DECLARE LONG CONSTANT OPC$_RQ_RQST = 3 ! OPERATOR REQUEST DECLARE LONG CONSTANT OPC$_RQ_REPLY = 4 ! OPERATOR REPLY DECLARE LONG CONSTANT OPC$_RQ_CANCEL = 5 ! CANCEL REQUEST DECLARE LONG CONSTANT OPC$_RQ_STATUS = 6 ! REQUEST OPERATOR STATUS DECLARE LONG CONSTANT OPC$_RQ_SECURITY = 7 ! MESSAGE TO SECURITY OPERATOR DECLARE LONG CONSTANT OPC$_RQ_LICENSE = 8 ! MESSAGE TO LICENSE OPERATOR DECLARE LONG CONSTANT OPC$M_RQ_NOOCS = 128 DECLARE LONG CONSTANT OPC$M_NM_CENTRL = x'00000001' DECLARE LONG CONSTANT OPC$M_NM_PRINT = x'00000002' DECLARE LONG CONSTANT OPC$M_NM_TAPES = x'00000004' DECLARE LONG CONSTANT OPC$M_NM_DISKS = x'00000008' DECLARE LONG CONSTANT OPC$M_NM_DEVICE = x'00000010' DECLARE LONG CONSTANT OPC$M_NM_CARDS = x'00000020' DECLARE LONG CONSTANT OPC$M_NM_NTWORK = x'00000040' DECLARE LONG CONSTANT OPC$M_NM_CLUSTER = x'00000080' DECLARE LONG CONSTANT OPC$M_NM_SECURITY = x'00000100' DECLARE LONG CONSTANT OPC$M_NM_REPLY = x'00000200' DECLARE LONG CONSTANT OPC$M_NM_SOFTWARE = x'00000400' DECLARE LONG CONSTANT OPC$M_NM_LICENSE = x'00000800' DECLARE LONG CONSTANT OPC$M_NM_OPER1 = x'00001000' DECLARE LONG CONSTANT OPC$M_NM_OPER2 = x'00002000' DECLARE LONG CONSTANT OPC$M_NM_OPER3 = x'00004000' DECLARE LONG CONSTANT OPC$M_NM_OPER4 = x'00008000' DECLARE LONG CONSTANT OPC$M_NM_OPER5 = x'00010000' DECLARE LONG CONSTANT OPC$M_NM_OPER6 = x'00020000' DECLARE LONG CONSTANT OPC$M_NM_OPER7 = x'00040000' DECLARE LONG CONSTANT OPC$M_NM_OPER8 = x'00080000' DECLARE LONG CONSTANT OPC$M_NM_OPER9 = x'00100000' DECLARE LONG CONSTANT OPC$M_NM_OPER10 = x'00200000' DECLARE LONG CONSTANT OPC$M_NM_OPER11 = x'00400000' DECLARE LONG CONSTANT OPC$M_NM_OPER12 = x'00800000' DECLARE LONG CONSTANT OPC$S_OPCDEF = 158 record OPCDEF BYTE OPC$B_MS_TYPE ! MESSAGE TYPE group OPC$R_MS_C_T_S_OVERLAY ! Class-Target-Status variant case group OPC$R_MS_TARG_STAT_OVERLAY group OPC$R_MS_TARGET_OVERLAY variant case BYTE OPC$B_MS_TARGET ! MESSAGE TARGET case BYTE OPC$B_MS_ENAB ! MESSAGE ENABLES end variant end group OPC$R_MS_TARGET_OVERLAY WORD OPC$W_MS_STATUS ! MESSAGE STATUS end group OPC$R_MS_TARG_STAT_OVERLAY case BYTE OPC$Z_MS_TARGET_CLASSES ( 1 to 3 ) case BYTE OPC$Z_MS_ENAB_TERMINALS ( 1 to 3 ) end variant end group OPC$R_MS_C_T_S_OVERLAY group OPC$R_MS_RPLYID_OVERLAY variant case LONG OPC$L_MS_RPLYID ! REPLY ID case group OPC$R_MS_MASK_OVERLAY variant case LONG OPC$L_MS_MASK ! MESSAGE MASK case LONG OPC$L_MS_RQSTID ! REQUEST ID end variant end group OPC$R_MS_MASK_OVERLAY end variant end group OPC$R_MS_RPLYID_OVERLAY group OPC$R_MS_TEXT_OVERLAY variant case LONG OPC$L_MS_TEXT ! MESSAGE TEXT case group OPC$R_MS_TEXT_FIELDS WORD OPC$W_MS_OUNIT ! OPERATOR UNIT NUMBER STRING OPC$T_MS_ONAME = 1 ! OPERATOR NAME end group OPC$R_MS_TEXT_FIELDS end variant end group OPC$R_MS_TEXT_OVERLAY WORD OPCDEF$$_FILL_1 ( 1 to 7 ) ! SPACE FOR NAME LONG OPC$L_MS_OTEXT ( 1 to 32 ) ! OPERATOR TEXT group OPC$R_MS_MAXSZ_OVERLAY variant case LONG OPC$L_MS_MAXSZ ! MESSAGE MAX SIZE ! OPERATOR MESSAGE TYPES case group OPC$R_MS_MAXSZ_BITS LONG NM_CENTRL_bits ! COMMENT ADDED BY SDL - NM_CENTRL_bits contains bits NM_CENTRL through NM_OPER12 end group OPC$R_MS_MAXSZ_BITS end variant end group OPC$R_MS_MAXSZ_OVERLAY end record OPCDEF DECLARE LONG CONSTANT OPC$M_OPR_CENTRAL = x'00000001' DECLARE LONG CONSTANT OPC$M_OPR_PRINTER = x'00000002' DECLARE LONG CONSTANT OPC$M_OPR_TAPES = x'00000004' DECLARE LONG CONSTANT OPC$M_OPR_DISKS = x'00000008' DECLARE LONG CONSTANT OPC$M_OPR_DEVICES = x'00000010' DECLARE LONG CONSTANT OPC$M_OPR_CARDS = x'00000020' DECLARE LONG CONSTANT OPC$M_OPR_NETWORK = x'00000040' DECLARE LONG CONSTANT OPC$M_OPR_CLUSTER = x'00000080' DECLARE LONG CONSTANT OPC$M_OPR_SECURITY = x'00000100' DECLARE LONG CONSTANT OPC$M_OPR_REPLY = x'00000200' DECLARE LONG CONSTANT OPC$M_OPR_SOFTWARE = x'00000400' DECLARE LONG CONSTANT OPC$M_OPR_LICENSE = x'00000800' DECLARE LONG CONSTANT OPC$M_OPR_USER1 = x'00001000' DECLARE LONG CONSTANT OPC$M_OPR_USER2 = x'00002000' DECLARE LONG CONSTANT OPC$M_OPR_USER3 = x'00004000' DECLARE LONG CONSTANT OPC$M_OPR_USER4 = x'00008000' DECLARE LONG CONSTANT OPC$M_OPR_USER5 = x'00010000' DECLARE LONG CONSTANT OPC$M_OPR_USER6 = x'00020000' DECLARE LONG CONSTANT OPC$M_OPR_USER7 = x'00040000' DECLARE LONG CONSTANT OPC$M_OPR_USER8 = x'00080000' DECLARE LONG CONSTANT OPC$M_OPR_USER9 = x'00100000' DECLARE LONG CONSTANT OPC$M_OPR_USER10 = x'00200000' DECLARE LONG CONSTANT OPC$M_OPR_USER11 = x'00400000' DECLARE LONG CONSTANT OPC$M_OPR_USER12 = x'00800000' DECLARE LONG CONSTANT OPC$S_OPC_OPRDEF = 3 record OPC_OPRDEF variant case group OPC$R_OPRDEF_BITS LONG OPR_CENTRAL_bits ! COMMENT ADDED BY SDL - OPR_CENTRAL_bits contains bits OPR_CENTRAL through OPR_USER12 end group OPC$R_OPRDEF_BITS end variant end record OPC_OPRDEF DECLARE LONG CONSTANT OPC$K_SYSTEM = 1 DECLARE LONG CONSTANT OPC$K_GROUP = 2 DECLARE LONG CONSTANT OPC$K_USER = 3 DECLARE LONG CONSTANT OPC$K_UNSPEC = 4 DECLARE LONG CONSTANT OPC$C_SYSTEM = 1 DECLARE LONG CONSTANT OPC$C_GROUP = 2 DECLARE LONG CONSTANT OPC$C_USER = 3 DECLARE LONG CONSTANT OPC$C_UNSPEC = 4 DECLARE LONG CONSTANT OPC$K_SW_VERSION = 9 DECLARE LONG CONSTANT OPC$K_MAXREAD = 2560 DECLARE LONG CONSTANT OPC$K_MAXMESSAGE = 2048 DECLARE LONG CONSTANT OPC$K_COMHDRSIZ = 38 DECLARE LONG CONSTANT OPC$_OPCOMERROR = 99999 ! New error message DECLARE LONG CONSTANT OPC$_X_OPRENABLE = 10 DECLARE LONG CONSTANT OPC$_X_LOGFILE = 11 DECLARE LONG CONSTANT OPC$_X_REQUEST = 12 DECLARE LONG CONSTANT OPC$_X_REPLY = 13 DECLARE LONG CONSTANT OPC$_X_CANCEL = 14 DECLARE LONG CONSTANT OPC$_X_STATUS = 15 DECLARE LONG CONSTANT OPC$_X_SHUTDOWN = 16 DECLARE LONG CONSTANT OPC$_X_TIMESTAMP = 17 DECLARE LONG CONSTANT OPC$_X_SECURITY = 18 DECLARE LONG CONSTANT OPC$_X_CLUSMSG = 19 DECLARE LONG CONSTANT OPC$_X_DEBUG = 20 DECLARE LONG CONSTANT OPC$_X_CNXMAN = 21 DECLARE LONG CONSTANT OPC$_X_REQUEST_END_MARK = 22 DECLARE LONG CONSTANT OPC$K_CLM__ACKNOWLEDGEMENT = 1 ! Response to acknowledge request DECLARE LONG CONSTANT OPC$K_CLM__ACKNOWLEDGE_PLEASE = 2 ! Request for remote node to announce itself DECLARE LONG CONSTANT OPC$K_CLM__CANCEL = 3 ! Explicit cancel of request DECLARE LONG CONSTANT OPC$K_CLM__CHECK_OPERATOR = 4 ! Make sure this operator is in the database DECLARE LONG CONSTANT OPC$K_CLM__CHECK_REQUEST = 5 ! Make sure a request is in the database DECLARE LONG CONSTANT OPC$K_CLM__CLUMBX = 6 ! Cluster mailbox message passed from cnxman DECLARE LONG CONSTANT OPC$K_CLM__CLUSTER = 7 ! Cluster status change report DECLARE LONG CONSTANT OPC$K_CLM__DEVICE = 8 ! Device message (on-line, off-line etc) DECLARE LONG CONSTANT OPC$K_CLM__IMP_CANCEL = 9 ! Implicitly cancel a request DECLARE LONG CONSTANT OPC$K_CLM__IMP_DISABLE = 10 ! Implicitly disable an operator DECLARE LONG CONSTANT OPC$K_CLM__OPRENABLE = 11 ! Tell everyone else to enable or disable an operator DECLARE LONG CONSTANT OPC$K_CLM__REPLY = 12 ! REPLY /PEND etc command DECLARE LONG CONSTANT OPC$K_CLM__REPLY_COMPLETE = 13 ! Operator request completed by operator DECLARE LONG CONSTANT OPC$K_CLM__REQUEST = 14 ! Operator request DECLARE LONG CONSTANT OPC$K_CLM__RPYBRD = 15 ! Message from OPCOM to remotes, info for cluster REPLY /TERM, etc DECLARE LONG CONSTANT OPC$K_CLM__RPYBRD_LOCAL = 16 ! Broadcast message from REPLY to OPCOM on local node DECLARE LONG CONSTANT OPC$K_CLM__RPYNOT = 17 ! Reply notifications DECLARE LONG CONSTANT OPC$K_CLM__SECURITY = 18 ! Security alarm from remote DECLARE LONG CONSTANT OPC$K_CLM__SHUTDOWN = 19 ! Shut down operations DECLARE LONG CONSTANT OPC$K_CLM__LOGFILE = 20 ! Enable/disable logfile operator DECLARE LONG CONSTANT OPC$K_CLM__REQUEST_END_MARK = 21 DECLARE LONG CONSTANT OPC$K_HDR_SIZE = 26 ! Size of common header DECLARE LONG CONSTANT OPC$S_HEADER_MESSAGE = 26 record HEADER_MESSAGE BYTE OPC$B_RQSTCODE ! Request code BYTE OPC$B_SCOPE ! Request SCOPE LONG OPC$L_OPTIONS ! Request independent option bits. group OPC$R_RQOPT variant case LONG OPC$L_RQ_OPTIONS ! Request dependent options case group OPC$R_RQ_OPT_S ! Also make it available as BYTE OPC$B_RQOPT_CODE ! a code byte and some fill BYTE OPC$B_RQOPT_FILLb WORD OPC$W_RQOPT_FILLw end group OPC$R_RQ_OPT_S end variant end group OPC$R_RQOPT LONG OPC$L_ATTNMASK1 ! Attention mask part 1 LONG OPC$L_ATTNMASK2 ! Attention mask part 2 LONG OPC$L_RQSTID ! User specified request id # LONG OPC$L_UIC ! UIC of requestor end record HEADER_MESSAGE DECLARE LONG CONSTANT OPC$M_NOLOG = x'00000001' DECLARE LONG CONSTANT OPC$M_NOBRD = x'00000002' DECLARE LONG CONSTANT OPC$M_NOCLUSTER = x'00000004' DECLARE LONG CONSTANT OPC$S_FILL_0_ = 4 record FILL_0_ variant case LONG OPC$L_HEADER_OPTIONS case group OPC$R_FILL_1_ ! Do not log the action ! Do not broadcast ! Do not send to cluster BYTE NOLOG_bits ! COMMENT ADDED BY SDL - NOLOG_bits contains bits NOLOG through FILL_2_ end group OPC$R_FILL_1_ end variant end record FILL_0_ DECLARE LONG CONSTANT OPC$K_OPRENABLE_MIN_SIZE = 30 ! Min message size header + 4 DECLARE LONG CONSTANT OPC$S_OPRENABLE_MESSAGE = 26 record OPRENABLE_MESSAGE BYTE OPC$B_OPRENABLE_FILL ( 1 to 26 ) STRING OPC$T_OPRENABLE_OPR = 0 ! Start of oper dev name end record OPRENABLE_MESSAGE DECLARE LONG CONSTANT OPC$M_DISABLE = x'00000001' DECLARE LONG CONSTANT OPC$M_PERMOPER = x'00000002' DECLARE LONG CONSTANT OPC$M_NOREMIND = x'00000004' DECLARE LONG CONSTANT OPC$S_FILL_3_ = 4 record FILL_3_ variant case LONG OPC$L_OPRENABLE_OPTIONS case group OPC$R_FILL_4_ BYTE DISABLE_bits ! COMMENT ADDED BY SDL - DISABLE_bits contains bits DISABLE through FILL_5_ end group OPC$R_FILL_4_ end variant end record FILL_3_ DECLARE LONG CONSTANT OPC$K_LOGFILE_MIN_SIZE = 30 ! Min message size header + 4 DECLARE LONG CONSTANT OPC$K_INITLOG = 0 ! If one is open, close logfile. Open new logfile. DECLARE LONG CONSTANT OPC$K_CLOSELOG = 1 ! Close logfile. DECLARE LONG CONSTANT OPC$K_ENABLELOG = 2 ! If no logfile is open, open a logfile. ! Add classes in ATTNMASK to logfile operator mask. DECLARE LONG CONSTANT OPC$K_DISABLELOG = 3 ! Remove classes in ATTNMASK from logfile operator mask. ! If mask goes to 0, close logfile. DECLARE LONG CONSTANT OPC$K_MAX_LOGOPT = 4 ! One more than maximum allowed DECLARE LONG CONSTANT OPC$S_LOGFILE_MESSAGE = 26 record LOGFILE_MESSAGE BYTE OPC$B_LOGFILE_FILL ( 1 to 26 ) ! Skip to request dependent options STRING OPC$T_LOGFILE_OPR = 0 ! Start of oper dev name end record LOGFILE_MESSAGE DECLARE LONG CONSTANT OPC$K_REQUEST_MIN_SIZE = 28 ! Min message size DECLARE LONG CONSTANT OPC$S_REQUEST_MESSAGE = 28 record REQUEST_MESSAGE BYTE OPC$B_REQUEST_FILL ( 1 to 26 ) WORD OPC$W_REQUEST_LENGTH ! Length of text STRING OPC$T_REQUEST_TEXT = 0 ! Start of text end record REQUEST_MESSAGE DECLARE LONG CONSTANT OPC$K_SECURITY_MIN_SIZE = 28 ! Min message size DECLARE LONG CONSTANT OPC$S_SECURITY_MESSAGE = 28 record SECURITY_MESSAGE BYTE OPC$B_SECURITY_FILL ( 1 to 26 ) WORD OPC$W_SECURITY_LENGTH ! Length of text STRING OPC$T_SECURITY_TEXT = 0 ! Start of text end record SECURITY_MESSAGE DECLARE LONG CONSTANT OPC$K_REPLY_MIN_SIZE = 32 DECLARE LONG CONSTANT OPC$S_REPLY_MESSAGE = 26 record REPLY_MESSAGE BYTE OPC$B_REPLY_FILL ( 1 to 26 ) STRING OPC$T_REPLY_OPR = 0 end record REPLY_MESSAGE DECLARE LONG CONSTANT OPC$K_STATUS_MIN_SIZE = 30 ! Min message size header + 4 DECLARE LONG CONSTANT OPC$S_STATUS_MESSAGE = 26 record STATUS_MESSAGE BYTE OPC$B_STATUS_FILL ( 1 to 26 ) STRING OPC$T_STATUS_OPR = 0 ! Start of text end record STATUS_MESSAGE DECLARE LONG CONSTANT OPC$K_TIMESTAMP_MIN_SIZE = 26 ! Min message size DECLARE LONG CONSTANT OPC$S_TIMESTAMP_MESSAGE = 26 record TIMESTAMP_MESSAGE BYTE OPC$B_TIMESTAMP_FILL ( 1 to 26 ) end record TIMESTAMP_MESSAGE DECLARE LONG CONSTANT OPC$K_SHUTDOWN_MIN_SIZE = 26 ! Min message size DECLARE LONG CONSTANT OPC$S_SHUTDOWN_MESSAGE = 26 record SHUTDOWN_MESSAGE BYTE OPC$B_SHUTDOWN_FILL ( 1 to 26 ) end record SHUTDOWN_MESSAGE DECLARE LONG CONSTANT OPC$M_CLUSTER = x'00000001' DECLARE LONG CONSTANT OPC$S_FILL_6_ = 4 record FILL_6_ variant case LONG OPC$L_SHUTDOWN_OPTIONS case group OPC$R_FILL_7_ BYTE CLUSTER_bits ! COMMENT ADDED BY SDL - CLUSTER_bits contains bits CLUSTER through FILL_8_ end group OPC$R_FILL_7_ end variant end record FILL_6_ DECLARE LONG CONSTANT OPC$K_CANCEL_MIN_SIZE = 26 ! Min message size DECLARE LONG CONSTANT OPC$S_CANCEL_MESSAGE = 26 record CANCEL_MESSAGE BYTE OPC$B_CANCEL_FILL ( 1 to 26 ) end record CANCEL_MESSAGE DECLARE LONG CONSTANT OPC$M_RQSTDONE = x'00000001' DECLARE LONG CONSTANT OPC$S_FILL_9_ = 4 record FILL_9_ variant case LONG OPC$L_CANCEL_OPTIONS case group OPC$R_FILL_10_ BYTE RQSTDONE_bits ! COMMENT ADDED BY SDL - RQSTDONE_bits contains bits RQSTDONE through FILL_11_ end group OPC$R_FILL_10_ end variant end record FILL_9_ DECLARE LONG CONSTANT OPCF_ARG$S_OPCF_ARG = 4 record OPCF_ARG variant case LONG OPCF_ARG$l_arg_data ! argument data case group OPCF_ARG$r_arg_desc WORD OPCF_ARG$w_arg_offset ! The offset to the argument data WORD OPCF_ARG$w_arg_cntrl ! A control code for argument handling end group OPCF_ARG$r_arg_desc end variant end record OPCF_ARG ! This structure defines a message sent to OPCOM using the MSG$_OPCFAO message type. DECLARE LONG CONSTANT OPCF$S_OPCFAO = 256 record OPCFAO WORD OPCF$w_msgtype ! Dispatch message type code WORD OPCF$w_spare_1 ! Unused word - alignment LONG OPCF$l_opc_msg ! The message file code for msg text LONG OPCF$l_opc_class_msk ! The operator class mask LONG OPCF$l_arg_count ! The number of arguments group OPCF$r_variable_data variant case OPCF_ARG OPCF$r_item_arg ( 1 to 60 ) ! Argument items case STRING OPCF$t_item_cd = 240 ! Argument data - character case LONG OPCF$l_item_ld ( 1 to 60 ) ! Argument data - long end variant end group OPCF$r_variable_data end record OPCFAO ! OPCFAO option codes. Unless commented otherwise, these codes correspond to ! the equivalent FAO op code (e.g. ?AC --> AC, ?%T --> T). These codes are ! used as input arguments to exe_std$sndopcfao as controls. DECLARE LONG CONSTANT OPCF$K_AC = 1 DECLARE LONG CONSTANT OPCF$K_AD = 2 DECLARE LONG CONSTANT OPCF$K_AF = 3 DECLARE LONG CONSTANT OPCF$K_AS = 4 DECLARE LONG CONSTANT OPCF$K_AS_DEVICE_NAME = 5 ! Pass UCB for conversion to device name string with descriptor DECLARE LONG CONSTANT OPCF$K_AZ = 6 DECLARE LONG CONSTANT OPCF$K_D = 7 DECLARE LONG CONSTANT OPCF$K_I = 8 DECLARE LONG CONSTANT OPCF$K_OA = 9 DECLARE LONG CONSTANT OPCF$K_OB = 10 DECLARE LONG CONSTANT OPCF$K_OH = 11 DECLARE LONG CONSTANT OPCF$K_OI = 12 DECLARE LONG CONSTANT OPCF$K_OJ = 13 DECLARE LONG CONSTANT OPCF$K_OL = 14 DECLARE LONG CONSTANT OPCF$K_OQ = 15 DECLARE LONG CONSTANT OPCF$K_OW = 16 DECLARE LONG CONSTANT OPCF$K_SA = 17 DECLARE LONG CONSTANT OPCF$K_SB = 18 DECLARE LONG CONSTANT OPCF$K_SH = 19 DECLARE LONG CONSTANT OPCF$K_SI = 20 DECLARE LONG CONSTANT OPCF$K_SJ = 21 DECLARE LONG CONSTANT OPCF$K_SL = 22 DECLARE LONG CONSTANT OPCF$K_SQ = 23 DECLARE LONG CONSTANT OPCF$K_SW = 24 DECLARE LONG CONSTANT OPCF$K_T = 25 DECLARE LONG CONSTANT OPCF$K_U = 26 DECLARE LONG CONSTANT OPCF$K_UA = 27 DECLARE LONG CONSTANT OPCF$K_UB = 28 DECLARE LONG CONSTANT OPCF$K_UH = 29 DECLARE LONG CONSTANT OPCF$K_UI = 30 DECLARE LONG CONSTANT OPCF$K_UJ = 31 DECLARE LONG CONSTANT OPCF$K_UL = 32 DECLARE LONG CONSTANT OPCF$K_UQ = 33 DECLARE LONG CONSTANT OPCF$K_UW = 34 DECLARE LONG CONSTANT OPCF$K_XA = 35 DECLARE LONG CONSTANT OPCF$K_XB = 36 DECLARE LONG CONSTANT OPCF$K_XH = 37 DECLARE LONG CONSTANT OPCF$K_XI = 38 DECLARE LONG CONSTANT OPCF$K_XJ = 39 DECLARE LONG CONSTANT OPCF$K_XL = 40 DECLARE LONG CONSTANT OPCF$K_XQ = 41 DECLARE LONG CONSTANT OPCF$K_XW = 42 DECLARE LONG CONSTANT OPCF$K_ZA = 43 DECLARE LONG CONSTANT OPCF$K_ZB = 44 DECLARE LONG CONSTANT OPCF$K_ZH = 45 DECLARE LONG CONSTANT OPCF$K_ZI = 46 DECLARE LONG CONSTANT OPCF$K_ZJ = 47 DECLARE LONG CONSTANT OPCF$K_ZL = 48 DECLARE LONG CONSTANT OPCF$K_ZQ = 49 DECLARE LONG CONSTANT OPCF$K_ZW = 50 DECLARE LONG CONSTANT OPCF$K_MIN_OPCFAO_CNTRL = 1 DECLARE LONG CONSTANT OPCF$K_MAX_OPCFAO_CNTRL = 50 DECLARE LONG CONSTANT OPCF$K_BY_REF = 1 ! Pass argument by reference DECLARE LONG CONSTANT OPCF$K_BY_VAL = 2 ! Pass argument by value DECLARE LONG CONSTANT OPCF$K_BY_DESC = 3 ! Pass argument by descriptor