UNISYS BELGIUM CSE SUPPORT CTOSKrivabo.Lib Procedural Interface Reference Manual by Kris Van Bogaert Unisys Belgium, CSE Support Copyright 1991 Unisys Belgium All Rights Reserved Unisys is a trademark of Unisys Corporation 12.1.0 CTOSKrivabo.Lib October 1991 Printed in Belgium About this manual vii Audience vii Purpose and Scope vii Organization of This Manual ix What is New in Release 12.1.0 x Related Software xi Related Documentation xi 1 Operations by function 1-1 2 Operations 2-1 AskByte 2-3 AskByteX 2-5 AskConfirmFinish 2-7 AskLfa 2-9 AskLfaX 2-11 AskOptionalByte 2-13 AskOptionalLfa 2-15 AskOptionalQuad 2-17 AskOptionalWord 2-19 AskQuad 2-21 AskQuadX 2-23 AskQuadSbString 2-25 AskWord 2-29 AskWordX 2-31 CheckFileName 2-33 CheckFileSpec 2-35 ClosePrintFile 2-37 DecQdOut 2-39 EnableLineWrap 2-41 fAllocGetMsgBuffer 2-43 fAllocMsgBuffers 2-45 fAskProceed 2-47 fAskYesOrNoBlank 2-49 fGetByteParamX 2-53 fGetFileAndPswdParam 2-55 fGetOptByteParam 2-57 fGetOptLfaParam 2-59 fGetOptQuadParam 2-61 fGetOptSbStringParam 2-63 fGetOptWordParam 2-65 fGetOptYesOrNoParam 2-67 fGetParam 2-69 fGetProceed 2-71 fGetPswdParam 2-73 fGetQuadParamX 2-75 fGetStringParamX 2-77 fGetWordParamX 2-79 fGetYesOrNoBlankParam 2-81 fPutExpMsgAskProceed 2-83 fPutMsgAskProceed 2-85 fRqExists 2-87 fRqServed 2-89 GetByteParam 2-91 GetCaseParam 2-93 GetLfaParam 2-95 GetMsgX 2-97 GetQuadParam 2-99 GetSbStringParam 2-101 GetWordParam 2-103 GetYesOrNoBlankParam 2-105 GetYesOrNoBlankParamX 2-107 HexDump 2-109 HexQdWithHOut 2-111 HexWdWithHOut 2-113 HexWithHOut 2-115 InitLocalMsgTable 2-117 InitMsg 2-119 MapVidAttrToGPS 2-121 NlsMsgStrCollate 2-123 NlsMsgStringCollate 2-125 NlsMsgStringEqual 2-127 NlsMsgStrULCmpB 2-129 NPrint 2-131 OpenPrintFile 2-133 POPLineWrap 2-135 POPPrintFileStatus 2-137 POPVideoStatus 2-139 PrintFileClose 2-141 PrintFileNPrint 2-143 PrintFileOpen 2-145 PrintFilePutChar 2-147 PrintFilePutHeader 2-149 PrintFileSbPrint 2-151 PrintFileStatus 2-153 PUSHAndEnableLineWrap 2-155 PUSHAndEnablePrintFile 2-157 PUSHAndEnableVideo 2-159 PutChar 2-161 PutExpandedMsg 2-163 PutExpandedMsgByte 2-165 PutExpandedMsgData 2-167 PutExpandedMsgData2 2-169 PutExpandedMsgData3 2-171 PutExpandedMsgQuad 2-173 PutExpandedMsgSbString 2-175 PutExpandedMsgSbStrings 2-177 PutExpandedMsgWord 2-179 PutExpandedSbString 2-181 PutFlag 2-183 PutHeader 2-185 PutMsg 2-187 PutMsgDecQuad 2-189 PutMsgDecWord 2-191 PutMsgFlag 2-193 PutMsgHexByte 2-195 PutMsgHexQuad 2-197 PutMsgHexWord 2-199 PutNewLines 2-201 PutSpaces 2-203 ReadKbdChar 2-205 ResetExitMsg 2-207 ResetMsg 2-209 ReturnExpandedMsg 2-211 ReturnMsg 2-213 SetExitMsg 2-215 Tell 2-217 VideoStatus 2-219 XErrorExit 2-221 XErrorExitMsg 2-223 XErrorExitString 2-225 Appendix A A-1 Software Installation A-1 Appendix B B-1 CTOSKrivabo.Lib messages B-1 Appendix C C-1 PL/M-86 and Pascal Sample Programs C-1 About this manual Audience This manual is intended for applications and systems programmers who will be writing programs to be run on CTOS operating systems. Purpose and Scope This manual is the programmer's reference to CTOSKrivabo.Lib. It describes the programmatic interfaces available in CTOSKrivabo.Lib. CTOSKrivabo.Lib can be seen as an extension of CTOSToolKit.lib. It provides a number of operations that can be used to increase the efficiency of writing programs. Currently, CTOSKrivabo.Lib contains 4 groups of operations: 1. Message Output Operations The Message Output Operations make using binary message files (.bin) a small matter. Only one procedure call is needed to set up using a message file. Most of the operations in this group print messages which can be expanded with decimal or hexadecimal Byte, Flag, Quad or Word values , strings or a mixture of them. The same procedural interfaces are used to (expand and) print linked-in messages, messages retrieved from a message file or message file messages pre-loaded into a local message table. If for any reason a message cannot be retrieved from a message file or a local message table and a linked-in message is available, the linked-in message is used instead. 2. Keyboard Input Operations The Keyboard Input Operations ask the user to enter data. This data may be a string, a Yes or No string which will be converted to a Flag or a decimal/hexadecimal string which will be converted to a Byte, Lfa, Quad or Word. Invalid entries are rejected. For optional inputs a default can be specified and the message asking for the input may be expanded with this default. There are also some procedures to prompt the user for confirmation. For example, only one procedure call is needed to display the message below and to get the user's reponse: Copy [F0]Config.sys to [Sys]Config.sys? (Press GO to confirm, CANCEL to deny, FINISH to exit) The same procedure call also allows the programmer to specify the default to be used when the program is being run in a batch partition. 3. Parameter Query Operations The Parameter Query Operations retrieve Variable Length Parameter Block (VLPB) subparameters and convert them to a Byte, Flag, Lfa, Quad, Word, sbString or String. Some operations allow the programmer to specify the minimum and maximum allowable value. If the VLPB subparameter is invalid (e.g. not numeric, too many characters, outside the minimum and maximum values, a required subparameter is missing, etc...), an error message is printed and the program terminated. 4. Utility Operations The Utility Operations provide different sorts of operations, such as video and/or print file output, comparing messages with strings, error handling, etc... Some of the operations in CTOSKrivabo.Lib may print error messages. All of these messages exist in the library and a message file is not needed. However, if the messages are available in a message file then they will be used instead of the linked-in messages. All messages can be found in the file CTOSKrivaboLibMsg.txt. Additionally, the CTOSKrivabo.Lib package also includes the object file OutputWithListII.obj which is an enhanced version of the OutputWithList module in CTOSToolKit.Lib. With OutputWithListII.obj, NPrint now supports: l line wrapping which may be enabled or disabled. l enabling/disabling of video or print file output. l handling of video escape sequences when printing to a print file. When the print file is a GPS device, video escape sequences are translated into GPS escape sequences. For non-GPS print files they are suppressed. Video escape sequences are also suppressed when writing to the video on an SRP below CTOS/XE 3.0. To use any of the OutputWithListII procedures, you either have to include OutputWithListII.obj in the list of object files when linking or you may replace the OutputWithList module in CTOSToolKit.lib with OutputWithListII. Organization of This Manual This manual is organized as follows: l Chapter 1 groups the operations by their common function. (See Figure1-1.) l Chapter 2 alphabetically presents all operations. For quick lookup, the operation name is shown at the top of each page. l The appendixes contain other useful information, including: m CTOSKrivabo.Lib installation procedure m List of the CTOSKrivabo.Lib messages m PL/M-86 and Pascal programming examples What is New in Release 12.1.0 The following procedures have been added to CTOSKrivabo.Lib: CheckFileSpec EnableLineWrap fGetFileAndPswdParam fGetPswdParam fGetYesOrNoBlankParam POPLineWrap PUSHAndEnableLineWrap The OutputWithListII.obj file is also new. It includes the following procedures: MapVidAttrToGPS NPrint POPPrintFileStatus POPVideoStatus PrintFileClose PrintFileOpen PrintFileStatus PUSHAndEnablePrintFile PUSHAndEnableVideo PutChar VideoStatus The OpenPrintFile procedure has been modified to ignore '[VID]' as a print file. Related Software CTOSKrivabo.Lib requires CTOS.Lib and CTOSToolkit.lib 12.0.0 or higher. Related Documentation As CTOSKrivabo.Lib is an extension of CTOSToolkit.lib, you may need to refer to the CTOS Operating Concepts Manual and the CTOS Procedural Interface Reference Manual. This page intentionally left blank 1 Operations by function Figure 1-1 shows all operations in this manual grouped by common function. Each functional group is presented alphabetically by function name. KEYBOARD INPUT BASIC ReadKbdChar CONFIRMATION AskConfirmFinish fAskProceed fGetProceed fPutExpMsgAskProceed fPutMsgAskProceed DATA AskByte AskByteX AskLfa AskLfaX AskOptionalByte AskOptionalLfa AskOptionalQuad AskOptionalWord AskQuad AskQuadX AskSbString AskWord AskWordX fAskYesOrNoBlank MESSAGE OUTPUT OUTPUT PutExpandedMsg PutExpandedMsgByte PutExpandedMsgData PutExpandedMsgData2 PutExpandedMsgData3 PutExpandedMsgQuad PutExpandedMsgSbString PutExpandedMsgSbStrings PutExpandedMsgWord PutExpandedSbString PutMsg PutMsgDecQuad PutMsgDecWord PutMsgFlag PutMsgHexByte PutMsgHexQuad PutMsgHexWord RETRIEVAL GetMsgX ReturnExpandedMsg ReturnMsg SETUP fAllocGetMsgBuffer fAllocMsgBuffers InitLocalMsgTable InitMsg ResetMsg OUTPUTWITHLISTII MapVidAttrToGPS NPrint POPPrintFileStatus POPVideoStatus PrintFileClose PrintFileOpen PrintFileStatus PUSHAndEnablePrintFile PUSHAndEnableVideo PutChar VideoStatus PARAMETER QUERY fGetByteParamX fGetFileAndPswdParam fGetOptByteParam fGetOptLfaParam fGetOptQuadParam fGetOptSbStringParam fGetOptWordParam fGetOptYesOrNoParam fGetParam fGetPswdParam fGetQuadParamX fGetStringParamX fGetWordParamX fGetYesOrNoBlankParam GetCaseParam GetLfaParam GetQuadParam GetSbStringParam GetWordParam GetYesOrNoBlankParam GetYesOrNoBlankParamX UTILITY OPERATIONS ERROR HANDLING ResetExitMsg SetExitMsg XErrorExit XErrorExitMsg XErrorExitString FILE NAME SYNTAX CheckFileName CheckFileSpec MESSAGE/STRING COMPARISON NlsMsgStrCollate NlsMSgStringCollate NlsMsgStringEqual NlsMsgStrULCmpB OUTPUT ClosePrintFile DecQdOut EnableLineWrap HexDump HexQdWithHOut HexWdWithHOut HexWithHOut OpenPrintFile POPLineWrap PrintFileNPrint PrintFilePutChar PrintFilePutHeader PrintFileSbPrint PUSHAndEnableLineWrap OUTPUT (cont.) PutFlag PutHeader PutNewLines PutSpaces Tell REQUEST fRqExists fRqServed 2 Operations This chapter lists alphabetically all the CTOSKrivabo.Lib operations available to programs. This page intentionally left blank AskByte AskByte (iMsg, psbMsg, nNewLines): BYTE Description AskByte prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a BYTE. AskByte returns this byte value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 255 and valid hexadecimal strings are 0h to FFh. Before returning AskByte prints nNewLines line feeds. Procedural interface AskByte (iMsg, psbMsg, nNewLines): BYTE where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. nNewLines the number of line feeds printed after entering a valid byte value. Request Block AskByte is an object module procedure. AskByteX AskByteX (iMsg, psbMsg, bDefault, fRequired, fNonZero, nNewLines, pExitStateRet): BYTE Description AskByteX prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a BYTE. AskByteX returns this byte value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 255 and valid hexadecimal strings are 0h to FFh. If fNonZero is TRUE then 0 is also invalid. Before returning AskByteX prints nNewLines line feeds. Procedural interface AskByteX (iMsg, psbMsg, bDefault, fRequired, fNonZero, nNewLines, pExitStateRet): BYTE where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. bDefault This value is returned if fRequired is FALSE and the user does not enter a value but just presses the RETURN or GO key. fRequired user input is optional if FALSE and required if TRUE. IF fRequired is FALSE and the message contains the macro "%0N", the message will be expanded with the default value. fNonZero a zero value is invalid if TRUE and valid if FALSE. nNewLines the number of line feeds printed after entering a valid byte value. pExitStateRet points to the memory area where the ExitState information will be returned. The format of the returned information is shown below. Size Offset Field (bytes) Description 0 Ch 1 the terminating character code 1 fEmpty 1 TRUE means that the string is empty. This is only possible if fRequired is FALSE. bDefault is returned. 2 fGo 1 TRUE means that the GO key was pressed to exit. Request Block AskByteX is an object module procedure. AskConfirmFinish AskConfirmFinish (ercTermination) Description AskConfirmFinish prompts the user to press the FINISH or GO key to exit or any other key to continue. The prompt is printed to the video only. If you want to nationalize the prompt, copy the following lines from the file CTOSKrivaboLibMsg.txt to your message file and modify them as needed: :60102: " (Press %K8 or %K9 to exit, or any other key to continue) " If the above message does not exist, a linked-in message is used. AskConfirmFinish terminates the program with ercTermination if the user presses the FINISH or GO key. If the user presses any other key, the prompt is removed from the screen and AskConfirmFinish returns. Procedural interface AskConfirmFinish (ercTermination) where ercTermination is a status code. Request Block AskConfirmFinish is an object module procedure. This page intentionally left blank AskLfa AskLfa (iMsg, psbMsg, nNewLines): Lfa Description AskLfa prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a QUAD. AskLfa returns this quad value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 1.073.741.823 and valid hexadecimal strings are 0h to 3FFFFFFFh. Before returning AskLfa prints nNewLines line feeds. Procedural interface AskLfa (iMsg, psbMsg, nNewLines): Lfa where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. nNewLines the number of line feeds printed after entering a valid lfa. Request Block AskLfa is an object module procedure. AskLfaX AskLfaX (iMsg, psbMsg, lfaDefault, fRequired, fNonZero, nNewLines, pExitStateRet): Lfa Description AskLfaX prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a QUAD. AskLfaX returns this quad value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 1.073.741.823 and valid hexadecimal strings are 0h to 3FFFFFFFh. If fNonZero is TRUE then 0 is also invalid. Before returning AskLfaX prints nNewLines line feeds. Procedural interface AskLfaX (iMsg, psbMsg, lfaDefault, fRequired, fNonZero, nNewLines, pExitStateRet): Lfa where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. lfaDefault This value is returned if fRequired is FALSE and the user does not enter a value but just presses the RETURN or GO key. fRequired user input is optional if FALSE and required if TRUE. IF fRequired is FALSE and the message contains the macro "%0N", the message will be expanded with the default value. fNonZero a zero value is invalid if TRUE and valid if FALSE. nNewLines the number of line feeds printed after entering a valid lfa. pExitStateRet points to the memory area where the ExitState information will be returned. The format of the returned information is shown below. Size Offset Field (bytes) Description 0 Ch 1 the terminating character code 1 fEmpty 1 TRUE means that the string is empty. This is only possible if fRequired is FALSE. lfaDefault is returned. 2 fGo 1 TRUE means that the GO key was pressed to exit. Request Block AskLfaX is an object module procedure. AskOptionalByte AskOptionalByte (iMsg, psbMsg, bDefault, nNewLines): BYTE Description AskOptionalByte prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a BYTE. AskOptionalByte returns this byte value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 255 and valid hexadecimal strings are 0h to FFh. AskOptionalByte is similar to AskByte, except that user input is optional. If the user just presses the RETURN or GO key a default value is returned. Additionally, if the message contains the macro "%0N", it will be expanded with the default value. Before returning AskOptionalByte prints nNewLines line feeds. Procedural interface AskOptionalByte (iMsg, psbMsg, bDefault, nNewLines): BYTE where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. bDefault is the value returned when the user does not enter a value. nNewLines the number of line feeds printed after entering a valid byte value. Request Block AskOptionalByte is an object module procedure. AskOptionalLfa AskOptionalLfa (iMsg, psbMsg, lfaDefault, nNewLines): Lfa Description AskOptionalLfa prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a QUAD. AskOptionalLfa returns this quad value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 1.073.741.823 and valid hexadecimal strings are 0h to 3FFFFFFFh. AskOptionalLfa is similar to AskLfa, except that user input is optional. If the user just presses the RETURN or GO key a default value is returned. Additionally, if the message contains the macro "%0N", it will be expanded with the default value. Before returning AskOptionalLfa prints nNewLines line feeds. Procedural interface AskOptionalLfa (iMsg, psbMsg, lfaDefault, nNewLines): Lfa where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. lfaDefault is the value returned when the user does not enter a value. nNewLines the number of line feeds printed after entering a valid lfa. Request Block AskOptionalLfa is an object module procedure. AskOptionalQuad AskOptionalQuad (iMsg, psbMsg, qDefault, nNewLines): QUAD Description AskOptionalQuad prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a QUAD. AskOptionalQuad returns this quad value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 4.294.967.295 and valid hexadecimal strings are 0h to FFFFFFFFh. AskOptionalQuad is similar to AskQuad, except that user input is optional. If the user just presses the RETURN or GO key a default value is returned. Additionally, if the message contains the macro "%0N", it will be expanded with the default value. Before returning AskOptionalQuad prints nNewLines line feeds. Procedural interface AskOptionalQuad (iMsg, psbMsg, qDefault, nNewLines): QUAD where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. qDefault is the value returned when the user does not enter a value. nNewLines the number of line feeds printed after entering a valid quad value. Request Block AskOptionalQuad is an object module procedure. AskOptionalWord AskOptionalWord (iMsg, psbMsg, wDefault, nNewLines): WORD Description AskOptionalWord prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a WORD. AskOptionalWord returns this word value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 65.535 and valid hexadecimal strings are 0h to FFFFh. AskOptionalWord is similar to AskWord, except that user input is optional. If the user just presses the RETURN or GO key a default value is returned. Additionally, if the message contains the macro "%0N", it will be expanded with the default value. Before returning AskOptionalWord prints nNewLines line feeds. Procedural interface AskOptionalWord (iMsg, psbMsg, wDefault, nNewLines): WORD where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. bDefault is the value returned when the user does not enter a value. nNewLines the number of line feeds printed after entering a valid word value. Request Block AskOptionalWord is an object module procedure. AskQuad AskQuad (iMsg, psbMsg, nNewLines): QUAD Description AskQuad prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a QUAD. AskQuad returns this quad value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 4.294.967.295 and valid hexadecimal strings are 0h to FFFFFFFFh. Before returning AskQuad prints nNewLines line feeds. Procedural interface AskQuad (iMsg, psbMsg, nNewLines): QUAD where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. nNewLines the number of line feeds printed after entering a valid quad value. Request Block AskQuad is an object module procedure. AskQuadX AskQuadX (iMsg, psbMsg, qDefault, fRequired, fNonZero, nNewLines, pExitStateRet): QUAD Description AskQuadX prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a QUAD. AskQuadX returns this quad value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 4.294.967.295 and valid hexadecimal strings are 0h to FFFFFFFFh. If fNonZero is TRUE then 0 is also invalid. Before returning AskQuadX prints nNewLines line feeds. Procedural interface AskQuadX (iMsg, psbMsg, qDefault, fRequired, fNonZero, nNewLines, pExitStateRet): QUAD where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. qDefault This value is returned if fRequired is FALSE and the user does not enter a value but just presses the RETURN or GO key. fRequired user input is optional if FALSE and required if TRUE. IF fRequired is FALSE and the message contains the macro "%0N", the message will be expanded with the default value. fNonZero a zero value is invalid if TRUE and valid if FALSE. nNewLines the number of line feeds printed after entering a valid quad value. pExitStateRet points to the memory area where the ExitState information will be returned. The format of the returned information is shown below. Size Offset Field (bytes) Description 0 Ch 1 the terminating character code 1 fEmpty 1 TRUE means that the string is empty. This is only possible if fRequired is FALSE. qDefault is returned. 2 fGo 1 TRUE means that the GO key was pressed to exit. Request Block AskQuadX is an object module procedure. AskQuadSbString AskSbString (iMsg, psbMsg, psbStringRet, sStringMax, fRequired, pExitStateRet) Description AskSbString prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a string from the keyboard. The following characters are treated as normal characters: 20h to 07Eh 96h to 0B5h 0B7h to 0BFh The following control charaters are supported: Control Description Character 004h (FINISH) means finish the program. The user is prompted to press the FINISH or GO key to exit or any other key to continue. 008h (backspace) means move one space to the left and delete the character there. 00Ah (RETURN) means terminate the character input and return. 01Bh (GO) means terminate the character input and return. 0A7h (code single quote) means treat the next character as normal character input. This value can be configured using the Native Language Support (NLS) Special Characters table. (For details on NLS, see the CTOS Operating Concepts Manual.) 0E4h (code D) means finish the program. The user is prompted to press the FINISH or GO key to exit or any other key to continue. 0FFh (code delete) means delete al characters. If the first character of the message is a '#' (pound sign character), the '#' in the message will be suppressed and a '#' will be displayed for each character the user types (password display). Procedural interface AskSbString (iMsg, psbMsg, psbStringRet, sStringMax, fRequired, pExitStateRet) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. psbStringRet sStringMax describe the area where the string will be returned. The first byte of the string is its size. fRequired TRUE means that an input is required. At least one character must be entered before pressing RETURN or GO. pExitStateRet points to the memory area where the ExitState information will be returned. The format of the returned information is shown below. Size Offset Field (bytes) Description 0 Ch 1 the terminating character code 1 fEmpty 1 TRUE means that the string is empty. This is only possible if fRequired is FALSE. The length byte of the string is 0. 2 fGo 1 TRUE means that the GO key was pressed to exit. Request Block AskSbString is an object module procedure. This page intentionally left blank AskWord AskWord (iMsg, psbMsg, nNewLines): WORD Description AskWord prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a WORD. AskWord returns this word value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 65.535 and valid hexadecimal strings are 0h to FFFFh. Before returning AskWord prints nNewLines line feeds. Procedural interface AskWord (iMsg, psbMsg, nNewLines): WORD where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. nNewLines the number of line feeds printed after entering a valid word value. Request Block AskWord is an object module procedure. AskWordX AskWordX (iMsg, psbMsg, wDefault, fRequired, fNonZero, nNewLines, pExitStateRet): WORD Description AskWordX prints a message to the video or other device as specified by the NPrint and PutChar operations and reads a decimal or hexadecimal string from the keyboard. When the user presses the RETURN or GO key the string is validated and converted to a WORD. AskWordX returns this word value. When the string is invalid the system beeps, removes the string from the screen and the user has to reenter it. Valid decimal strings are 0 to 65.535 and valid hexadecimal strings are 0h to FFFFh. If fNonZero is TRUE then 0 is also invalid. Before returning AskWordX prints nNewLines line feeds. Procedural interface AskWordX (iMsg, psbMsg, wDefault, fRequired, fNonZero, nNewLines, pExitStateRet): WORD where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. wDefault This value is returned if fRequired is FALSE and the user does not enter a value but just presses the RETURN or GO key. fRequired user input is optional if FALSE and required if TRUE. IF fRequired is FALSE and the message contains the macro "%0N", the message will be expanded with the default value. fNonZero a zero value is invalid if TRUE and valid if FALSE. nNewLines the number of line feeds printed after entering a valid word value. pExitStateRet points to the memory area where the ExitState information will be returned. The format of the returned information is shown below. Size Offset Field (bytes) Description 0 Ch 1 the terminating character code 1 fEmpty 1 TRUE means that the string is empty. This is only possible if fRequired is FALSE. wDefault is returned. 2 fGo 1 TRUE means that the GO key was pressed to exit. Request Block AskWordX is an object module procedure. CheckFileName CheckFileName (pbFileName, cbFileName, fDevice, pCbWithoutPasswd): ercType Caution: This operation is only documented for compatibility with older programs. New programs should use CheckFileSpec. Description CheckFileName verifies the syntax of a file name and returns the length of the file name without the embedded password. Procedural interface CheckFileName (pbFileName, cbFileName, fDevice, pCbWithoutPasswd): ercType where pbFileName cbFileName describe a character string of the following form: {Node}[Volume]FileName^Password. It contains the file name to be verified. fDevice TRUE means that the file name must contain a Volume Name or be a Device Name otherwise CheckFileName returns ercNoSuchVolume (erc215). pCbWithoutPasswd is the memory address of a word where the length of the file name without the embedded password is returned. Request Block CheckFileName is an object module procedure. CheckFileSpec CheckFileSpec (pbFileSpec, cbFileSpec, specType, pCbWithoutPasswd): ercType Description CheckFileSpec verifies the syntax of a file specification and returns its length without the embedded password. Depending on the value of specType, the file specification may be a full file specification, a path or device specification, or just an embedded password. Procedural interface CheckFileSpec (pbFileSpec, cbFileSpec, specType, pCbWithoutPasswd): ercType where pbFileSpec cbFileSpec describe a character string of the following form: {Node}[Volume]FileName^password. It contains the file specification to be verified. specType is a 16-bit mask indicating the type of file specification that is allowed or required. The meaning of each bit in the mask is as follows (Currently only the lower 6 bits are used): Hexadecimal Bit Value Meaning 0 01h File spec may just be an embedded password. 1 02h File spec may be a path specification. 2 04h File spec may be a device specification. 3 08h File spec must be a path specification (i.e. it cannot contain a file name). 4 10h File spec must be a device specification. 5 20h File spec must include a device specification. pCbWithoutPasswd is the memory address of a word where the length of the file specification without the embedded password is returned. Request Block CheckFileSpec is an object module procedure. ClosePrintFile ClosePrintFile Description ClosePrintFile closes the output byte stream opened by the OpenPrintFile or PrintFileOpen operations. ClosePrintFile is nearly identical to PrintFileClose. PrintFileClose (CTOSToolKit.lib 12.0.0 or higher) does not disable the output byte stream which causes an erc 210 (invalid file handle) if NPrint or PutChar are called afterwards. ClosePrintFile does also disable the output byte stream to solve this bug. Procedural interface ClosePrintFile Request Block ClosePrintFile is an object module procedure. This page intentionally left blank DecQdOut DecQdOut (q) Description DecQdOut prints a decimal quad (32-bit unsigned integer) value followed by a space to the video or other device as specified by the NPrint and PutChar operations. Procedural interface DecQdOut (q) where q is a quad. Request Block DecQdOut is an object module procedure. This page intentionally left blank EnableLineWrap EnableLineWrap (cbWrap, fTab, nMaxCols, nColsRightMargin): ercType Description EnableLineWrap enables or disables NPrint to use line wrapping. If enabled the string printed by NPrint is broken up into words such that, if the current word will not fit on the current line, NPrint outputs a carriage return and a specified number of spaces or tabs before proceeding with the rest of the message. A word is defined as a string of characters up to a character that has a value of 20h or less. Procedural interface EnableLineWrap (cbWrap, fTab, nMaxCols, nColsRightMargin): ercType where cbWrap is the number of spaces or tabs to be printed as left margin after wrapping to the next line. A value of 255 disables line wrapping. fTab the left margin consists of tabs if TRUE and spaces if FALSE. nMaxCols is the maximum length of a line. nColsRightMargin If nMaxCols is zero or invalid (larger than the video frame width), nColsRightMargin specifies the number of character positions to be used as right margin. When using nMaxCols the text width is independent of the video frame width (80, 132 or 146 characters). But when using nColsRightMargin the right margin is fixed and the text width depends on the current video frame width. Request Block EnableLineWrap is an object module procedure. fAllocGetMsgBuffer fAllocGetMsgBuffer (sGetMsgBuffer): Boolean Description The GetMsgBuffer is normally allocated by InitMsg. When no message file is being used, the buffer is allocated when needed (e.g. expansion of a linked-in message). The default size is 256 bytes. fAllocGetMsgBuffer is used to allocate a GetMsgBuffer with a different size and should be called before fAllocMsgBuffers and InitMsg. fAllocGetMsgBuffer returns FALSE when the buffer already has been allocated and TRUE otherwise. Procedural interface fAllocGetMsgBuffer (sGetMsgBuffer): Boolean where sGetMsgBuffer is the desired GetMsgBuffer size. Request Block fAllocGetMsgBuffer is an object module procedure. This page intentionally left blank fAllocMsgBuffers fAllocMsgBuffers (sMsgBuffer, sMsgCacheBuffer): Boolean Description The MsgBuffer and MsgCacheBuffer are normally allocated by InitMsg with a default size of 2048 and 4096 bytes respectively. fAllocMsgBuffers is used to allocate these buffers with a different size and should be called before InitMsg. If the GetMsgBuffer has not yet been allocated (see fAllocGetMsgBuffer), then it will be allocated with the default size (256 bytes) before allocating the MsgBuffer and MsgCacheBuffer. fAllocMsgBuffers returns FALSE when MsgBuffer and MsgCacheBuffer already have been allocated and TRUE otherwise. Procedural interface fAllocMsgBuffers (sMsgBuffer, sMsgCacheBuffer): Boolean where sMsgBuffer is the desired MsgBuffer size. sMsgCacheBuffer is the desired MsgCacheBuffer size. Request Block fAllocMsgBuffers is an object module procedure. This page intentionally left blank fAskProceed fAskProceed (bBatchChar): Boolean Description fAskProceed prompts the user to press the GO key to confirm, the CANCEL key to deny or the FINISH key to exit. The prompt is printed to the video or other device as specified by the NPrint and PutChar operations. If you want to nationalize the prompt, copy the following lines from the file CTOSKrivaboLibMsg.txt to your message file and modify them as needed: :60101: " (Press %K9 to confirm, %K4 to deny, %K8 to exit) " If the above message does not exist, a linked-in message is used. fAskProceed returns TRUE if the user presses the GO key, FALSE for the CANCEL key and terminates the program if the FINISH key is pressed. Procedural interface fAskProceed (bBatchChar): Boolean where bBatchChar is the default key when running in a Batch Partition. Only CANCEL (07h), FINISH (04h) and GO (1Bh) are supported. Any other value causes the program to be terminated with ercNoCharactersInKeyboard (erc 602). Request Block fAskProceed is an object module procedure. This page intentionally left blank fAskYesOrNoBlank fAskYesOrNoBlank (iMsg, psbMsg, sMaxYesNoStrings, fDefaultYes, nNewLines, pExitStateRet): Boolean Description fAskYesOrNoBlank prints a message to the video or other device as specified by the NPrint and PutChar operations, reads a string from the keyboard and returns TRUE if the string is a Yes string, FALSE for a No string or fDefault for an empty string. Before returning fAskYesOrNoBlank prints nNewLines line feeds. If sMaxYesNoStrings is not zero and the message contains macros it will be expanded with the Yes and/or No strings. Macro expansion is as follows: Macro Resulting Expansion %0S Yes string %1S No string %2S Yes string if fDefaultYes is TRUE, otherwise the No string. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. fAskYesOrNoBlank returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the default strings Yes and No. l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface fAskYesOrNoBlank (iMsg, psbMsg, sMaxYesNoStrings, fDefaultYes, nNewLines, pExitStateRet): Boolean where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. If both iMsg and psbMsg are zero, no message will be printed. sMaxYesOrNoStrings is the maximum length of the Yes and No strings inserted in the message. fDefaultYes if TRUE the default is the Yes string, otherwise the No string. The default is used when the user only enters the RETURN or GO key. nNewLines the number of line feeds printed after entering a valid Yes or No string. pExitStateRet points to the memory area where the ExitState information will be returned. The format of the returned information is shown below. Size Offset Field (bytes) Description 0 Ch 1 the terminating character code 1 fEmpty 1 TRUE means that the string is empty. fAskYesOrNoBlank returns fDefault. 2 fGo 1 TRUE means that the GO key was pressed to exit. Request Block fAskYesOrNoBlank is an object module procedure. This page intentionally left blank fGetByteParamX fGetByteParamX (iParam, jParam, bMin, bMax, fRequired, pByteRet): FLAG Description fGetByteParamX retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a BYTE. Valid decimal strings are 0 to 255 and valid hexadecimal strings are 0h to FFh. If the string is invalid or if the resulting value is less than bMin or greater than bMax, fGetByteParamX prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetByteParamX returns TRUE if the byte parameter could be retrieved from the VLPB and FALSE for an optional parameter (fRequired = FALSE) that does not exist. Procedural interface fGetByteParamX (iParam, jParam, bMin, bMax, fRequired, pByteRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. bMin the minimum byte value that is valid. bMax the maximum byte value that is valid. fRequired the parameter is optional if FALSE and required if TRUE. pByteRet the memory address of a byte to which the byte value is returned. This byte is only modified when fGetByteParamX returns TRUE. Request Block fGetByteParamX is an object module procedure. fGetFileAndPswdParam fGetFileAndPswdParam (iParam, jParam, fRequired, specType, pRgSdRet): FLAG Description fGetFileAndPswdParam returns a file specification from the Variable Length Parameter Block (VLPB). If the file specification contains an embedded password, it is returned separately. In addition, fGetFileAndPswdParam verifies the syntax of the file specification. If the syntax is invalid, an error message or the subparameter and an error code are printed to the video or other device as specified by the NPrint and PutChar operations, and the program is terminated. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetFileAndPswdParam returns TRUE if the file specification parameter could be retrieved from the VLPB and FALSE for an optional parameter (fRequired = FALSE) that does not exist. Procedural interface fGetFileAndPswdParam (iParam, jParam, fRequired, specType, pRgSdRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. fRequired the parameter is optional if FALSE and required if TRUE. specType is a 16-bit mask indicating the type of file specification that is allowed or required. See the CheckFileSpec operation for the allowed values. pRgSdRet is the address of a memory area to which two string descriptors are returned. The first string descriptor describes the file specification and the second the password. They are only modified when fGetFileAndPswdParam returns TRUE. String descriptors are 6-byte blocks of memory. The first 4 bytes contain the memory address of the string; the last 2 bytes contain the string size. Request Block fGetFileAndPswdParam is an object module procedure. fGetOptByteParam fGetOptByteParam (iParam, jParam, pByteRet): FLAG Description fGetOptByteParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a BYTE. Valid decimal strings are 0 to 255 and valid hexadecimal strings are 0h to FFh. If the string is invalid, fGetOptByteParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetOptByteParam returns TRUE if the byte parameter could be retrieved from the VLPB and FALSE if the parameter is missing. Procedural interface fGetOptByteParam (iParam, jParam, pByteRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. pByteRet the memory address of a byte to which the byte value is returned. This byte is only modified when fGetOptByteParam returns TRUE. Request Block fGetOptByteParam is an object module procedure. fGetOptLfaParam fGetOptLfaParam (iParam, jParam, pLfaRet): FLAG Description fGetOptLfaParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a QUAD. Valid decimal strings are 0 to 1.073.741.823 and valid hexadecimal strings are 0h to 3FFFFFFFh. If the string is invalid, fGetOptLfaParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetOptLfaParam returns TRUE if the lfa parameter could be retrieved from the VLPB and FALSE if the parameter is missing. Procedural interface fGetOptLfaParam (iParam, jParam, pLfaRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. pLfaRet the memory address of a quad to which the lfa value is returned. This quad is only modified when fGetOptLfaParam returns TRUE. Request Block fGetOptLfaParam is an object module procedure. fGetOptQuadParam fGetOptQuadParam (iParam, jParam, pQuadRet): FLAG Description fGetOptQuadParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a QUAD. Valid decimal strings are 0 to 4.294.967.295 and valid hexadecimal strings are 0h to FFFFFFFFh. If the string is invalid, fGetOptQuadParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetOptQuadParam returns TRUE if the quad parameter could be retrieved from the VLPB and FALSE if the parameter is missing. Procedural interface fGetOptQuadParam (iParam, jParam, pQuadRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. pQuadRet the memory address of a quad to which the quad value is returned. This quad is only modified when fGetOptQuadParam returns TRUE. Request Block fGetOptQuadParam is an object module procedure. fGetOptSbStringParam fGetOptSbStringParam (iParam, jParam, fCheckFileName, psbStrRet, sStrMax): FLAG Description fGetOptSbStringParam retrieves a string from the Variable Length Parameter Block (VLPB) and returns it as an sbString (i.e. a string in which the first byte is the size of the string). If the string is too long, fGetOptSbStringParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. If fCheckFileName = TRUE, fGetOptSbStringParam verifies the string for file name syntax. If the syntax is invalid the string and an error code are printed and the program terminated. fGetOptSbStringParam returns TRUE if the string parameter could be retrieved from the VLPB and FALSE if the parameter is missing. Procedural interface fGetOptSbStringParam (iParam, jParam, fCheckFileName, psbStrRet, sStrMax): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. fCheckFileName is TRUE if the string is to be verified for file name syntax. psbStrRet sStrMax describe the area where the string will be returned. The first byte of the string is its size. The area is only modified when fGetOptSbStringParam returns TRUE. Request Block fGetOptSbStringParam is an object module procedure. fGetOptWordParam fGetOptWordParam (iParam, jParam, pWordRet): FLAG Description fGetOptWordParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a WORD. Valid decimal strings are 0 to 65.535 and valid hexadecimal strings are 0h to FFFFh. If the string is invalid, fGetOptWordParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetOptWordParam returns TRUE if the word parameter could be retrieved from the VLPB and FALSE if the parameter is missing. Procedural interface fGetOptWordParam (iParam, jParam, pWordRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. pWordRet the memory address of a word to which the word value is returned. This word is only modified when fGetOptWordParam returns TRUE. Request Block fGetOptWordParam is an object module procedure. fGetOptYesOrNoParam fGetOptYesOrNoParam (iParam, jParam, pfNlsYNRet): FLAG Description fGetOptYesOrNoParam retrieves a Yes or No string from the Variable Length Parameter Block (VLPB) and converts it to a flag. The flag is TRUE for a Yes string and FALSE for a No string. If the string is invalid, fGetOptYesOrNoParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetOptYesOrNoParam returns TRUE if the string parameter could be retrieved from the VLPB and FALSE if the parameter is missing. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. fGetOptYesOrNoParam returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the default strings Yes and No. l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface fGetOptYesOrNoParam (iParam, jParam, pfNlsYNRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. pfNlsYNRet the memory address of a flag where TRUE is returned for a Yes string and FALSE for a No string. The flag is only modified when fGetOptYesOrNoParam returns TRUE. Request Block fGetOptYesOrNoParam is an object module procedure. fGetParam fGetParam (iParam, jParam, fRequired, pSdRet): FLAG Description fGetParam retrieves a subparameter from the Variable Length Parameter Block (VLPB) and returns FALSE if an optional subparameter is missing and TRUE if it is avalailable. If a required subparameter is missing, fGetParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. Procedural interface fGetParam (iParam, jParam, fRequired, pSdRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. fRequired the parameter is optional if FALSE and required if TRUE. pSdRet the memory address of a 6-byte block of memory. The memory address of jParam is returned in the first 4 bytes, and its size is stored in the last 2 bytes. Request Block fGetParam is an object module procedure. fGetProceed fGetProceed (bBatchChar): Boolean Description fGetProceed returns TRUE if the user presses the GO key, FALSE for the CANCEL key and terminates the program if the FINISH key is pressed. Procedural interface fGetProceed (bBatchChar): Boolean where bBatchChar is the default key when running in a Batch Partition. Only CANCEL (07h), FINISH (04h) and GO (1Bh) are supported. Any other value causes the program to be terminated with ercNoCharactersInKeyboard (erc 602). Request Block fGetProceed is an object module procedure. This page intentionally left blank fGetPswdParam fGetPswdParam (iParam, jParam, fRequired, pSdRet): FLAG Description fGetPswdParam returns a password from the Variable Length Parameter Block (VLPB). If the password is longer than 12 characters, an error message is printed to the video or other device as specified by the NPrint and PutChar operations, and the program is terminated. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetPswdParam returns TRUE if the password parameter could be retrieved from the VLPB and FALSE for an optional parameter (fRequired = FALSE) that does not exist. Procedural interface fGetPswdParam (iParam, jParam, fRequired, pSdRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. fRequired the parameter is optional if FALSE and required if TRUE. pSdRet is the address of a 6-byte block of memory (string descriptor). The address of the password is returned in the first 4 bytes, and its size in the last 2 bytes. The string descriptor is only modified when fGetPswdParam returns TRUE. Request Block fGetPswdParam is an object module procedure. fGetQuadParamX fGetQuadParamX (iParam, jParam, qMin, qMax, fRequired, pQuadRet): FLAG Description fGetQuadParamX retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a QUAD. Valid decimal strings are 0 to 4.294.967.295 and valid hexadecimal strings are 0h to FFFFFFFFh. If the string is invalid or if the resulting value is less than qMin or greater than qMax, fGetQuadParamX prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetQuadParamX returns TRUE if the quad parameter could be retrieved from the VLPB and FALSE for an optional parameter (fRequired = FALSE) that does not exist. Procedural interface fGetQuadParamX (iParam, jParam, qMin, qMax, fRequired, pQuadRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. qMin the minimum quad value that is valid. qMax the maximum quad value that is valid. fRequired the parameter is optional if FALSE and required if TRUE. pQuadRet the memory address of a quad to which the quad value is returned. This quad is only modified when fGetQuadParamX returns TRUE. Request Block fGetQuadParamX is an object module procedure. fGetStringParamX fGetStringParamX (iParam, jParam, fRequired, fCheckFileName, pbStrRet, pCbRet, sStrMax): FLAG Description fGetStringParamX returns a string from the Variable Length Parameter Block (VLPB). If the string is too long, fGetStringParamX prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. If fCheckFileName = TRUE, fGetStringParamX verifies the string for file name syntax. If the syntax is invalid the string and an error code are printed and the program terminated. fGetStringParamX returns TRUE if the string parameter could be retrieved from the VLPB and FALSE for an optional parameter (fRequired = FALSE) that does not exist. Procedural interface fGetStringParamX (iParam, jParam, fRequired, fCheckFileName, pbStrRet, pCbRet, sStrMax): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. fRequired the parameter is optional if FALSE and required if TRUE. fCheckFileName is TRUE if the string is to be verified for file name syntax. pbStrRet is the memory address of the area where the string is to be returned. The area is only modified when fGetStringParamX returns TRUE. pCbRet is the memory address of a word to which the size of the string is returned. sStrMax is the maximum size of the string. Request Block fGetStringParamX is an object module procedure. fGetWordParamX fGetWordParamX (iParam, jParam, wMin, wMax, fRequired, pWordRet): FLAG Description fGetWordParamX retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a WORD. Valid decimal strings are 0 to 65.535 and valid hexadecimal strings are 0h to FFFFh. If the string is invalid or if the resulting value is less than wMin or greater than wMax, fGetWordParamX prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. fGetWordParamX returns TRUE if the word parameter could be retrieved from the VLPB and FALSE for an optional parameter (fRequired = FALSE) that does not exist. Procedural interface fGetWordParamX (iParam, jParam, wMin, wMax, fRequired, pWordRet): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. wMin the minimum word value that is valid. wMax the maximum word value that is valid. fRequired the parameter is optional if FALSE and required if TRUE. pWordRet the memory address of a word to which the word value is returned. This word is only modified when fGetWordParamX returns TRUE. Request Block fGetWordParamX is an object module procedure. fGetYesOrNoBlankParam fGetYesOrNoBlankParam (iParam, jParam): FLAG Description fGetYesOrNoBlankParam retrieves a Yes, No or null string from the Variable Length Parameter Block (VLPB) and returns TRUE for a Yes string and FALSE for a No or null string. If the string is invalid, fGetYesOrNoBlankParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. fGetYesOrNoBlankParam returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the default strings Yes and No. l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface fGetYesOrNoBlankParam (iParam, jParam): FLAG where iParam is the index of the parameter. jParam is the index of the subparameter. Request Block fGetYesOrNoBlankParam is an object module procedure. fPutExpMsgAskProceed fPutExpMsgAskProceed (iMsg, psbMsg, pRgSd, sRgSd, bBatchChar):Boolean Description fPutExpMsgAskProceed prints an expanded message to the video or other device as specified by the NPrint and PutChar operations and prompts the user to press the GO key to confirm, the CANCEL key to deny or the FINISH key to exit. If you want to nationalize the prompt, copy the following lines from the file CTOSKrivaboLibMsg.txt to your message file and modify them as needed: :60101: " (Press %K9 to confirm, %K4 to deny, %K8 to exit) " If the above message does not exist, a linked-in message is used. fPutExpMsgAskProceed returns TRUE if the user presses the GO key, FALSE for the CANCEL key and terminates the program if the FINISH key is pressed. Procedural interface fPutExpMsgAskProceed (iMsg, psbMsg, pRgSd, sRgSd, bBatchChar):Boolean where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. pRgSd sRgSd is the memory address of an array of string descriptors. Each element of the array describes a string that is inserted in the message in place of a macro. (See the CTOS Procedural Interface Reference Manual Appendix F for details.) String descriptors are 6-byte blocks of memory. The first 4 bytes contain the memory address of the string; the last 2 bytes contain the string size. bBatchChar is the default key when running in a Batch Partition. Only CANCEL (07h), FINISH (04h) and GO (1Bh) are supported. Any other value causes the program to be terminated with ercNoCharactersInKeyboard (erc 602). Request Block fPutExpMsgAskProceed is an object module procedure. fPutMsgAskProceed fPutMsgAskProceed (iMsg, psbMsg, bBatchChar): Boolean Description fPutMsgAskProceed prints a message to the video or other device as specified by the NPrint and PutChar operations and prompts the user to press the GO key to confirm, the CANCEL key to deny or the FINISH key to exit. If you want to nationalize the prompt, copy the following lines from the file CTOSKrivaboLibMsg.txt to your message file and modify them as needed: :60101: " (Press %K9 to confirm, %K4 to deny, %K8 to exit) " If the above message does not exist, a linked-in message is used. fPutMsgAskProceed returns TRUE if the user presses the GO key, FALSE for the CANCEL key and terminates the program if the FINISH key is pressed. Procedural interface fPutMsgAskProceed (iMsg, psbMsg, bBatchChar): Boolean where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. bBatchChar is the default key when running in a Batch Partition. Only CANCEL (07h), FINISH (04h) and GO (1Bh) are supported. Any other value causes the program to be terminated with ercNoCharactersInKeyboard (erc 602). Request Block fPutMsgAskProceed is an object module procedure. fRqExists fRqExists (requestCode): Boolean Description fRqExists returns TRUE if the request is defined and is not a dummy request. Procedural interface fRqExists (requestCode): Boolean where requestCode is the request code. Request Block fRqExists is an object module procedure. This page intentionally left blank fRqServed fRqServed (requestCode): Boolean Description fRqServed returns TRUE if the request is being served. Procedural interface fRqServed (requestCode): Boolean where requestCode is the request code. Request Block fRqServed is an object module procedure. This page intentionally left blank GetByteParam GetByteParam (iParam, jParam, pByteRet) Description GetByteParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a BYTE. Valid decimal strings are 0 to 255 and valid hexadecimal strings are 0h to FFh. If the string is invalid or missing, GetByteParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. Procedural interface GetByteParam (iParam, jParam, pByteRet) where iParam is the index of the parameter. jParam is the index of the subparameter. pByteRet the memory address of a byte to which the byte value is returned. Request Block GetByteParam is an object module procedure. This page intentionally left blank GetCaseParam GetCaseParam (fReturnZero, prgbCaseRet) Description GetCaseParam retrieves the case value from the Variable Length Parameter Block (VLPB) and returns it as a 2-byte string. If the case value is not two characters, GetCaseParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. Procedural interface GetCaseParam (fReturnZero, prgbCaseRet) where fReturnZero if TRUE and the case subparameter is the null string or missing, then case value '00' is returned. If FALSE and the case subparameter is the null string or missing, then the 2-byte area pointed to by prgbCaseRet is not modified. prgbCaseRet is the memory address of a 2-byte area where the case value is returned. Request Block GetCaseParam is an object module procedure. This page intentionally left blank GetLfaParam GetLfaParam (iParam, jParam, pLfaRet) Description GetLfaParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a QUAD. Valid decimal strings are 0 to 1.073.741.823 and valid hexadecimal strings are 0h to 3FFFFFFFh. If the string is invalid or missing, GetLfaParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. Procedural interface GetLfaParam (iParam, jParam, pLfaRet) where iParam is the index of the parameter. jParam is the index of the subparameter. pLfaRet the memory address of a quad to which the lfa value is returned. Request Block GetLfaParam is an object module procedure. This page intentionally left blank GetMsgX GetMsgX (iMsg, pRgSd, sRgSd, pbBuffer, sBuffer, pCbRet): ercType Description GetMsgX is similar to GetMsg (See the CTOS Procedural Interface Reference Manual for details.), except that GetMsgX will retry once to reopen the message file and get the message if GetMsg returns ercSrpDown (erc 6) or ercWrongVolumeMounted (erc 235). The retry is only possible if the message file was opened with InitMsg. If after one retry the message still can not be read, the erc is returned. Additionally, if the messages have been loaded in a local message table with InitLocalMsgTable then GetMsgX retrieves the message from the local message table instead of reading the message file. Procedural interface GetMsgX (iMsg, pRgSd, sRgSd, pbBuffer, sBuffer, pCbRet): ercType where iMsg is the message number (word). pRgSd sRgSd is the memory address of an array of string descriptors. Each element of the array describes a string that is inserted in the message in place of a macro. (See the CTOS Procedural Interface Reference Manual Appendix F for details.) String descriptors are 6-byte blocks of memory. The first 4 bytes contain the memory address of the string; the last 2 bytes contain the string size. pbBuffer is the memory address of a buffer to which the expanded message is written. sBuffer is the size of the buffer. pCbRet is the memory address of a word to which the actual length of the expanded message is returned. Request Block GetMsgX is an object module procedure. GetQuadParam GetQuadParam (iParam, jParam, pQuadRet) Description GetQuadParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a QUAD. Valid decimal strings are 0 to 4.294.967.295 and valid hexadecimal strings are 0h to FFFFFFFFh. If the string is invalid or missing, GetQuadParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. Procedural interface GetQuadParam (iParam, jParam, pQuadRet) where iParam is the index of the parameter. jParam is the index of the subparameter. pQuadRet the memory address of a quad to which the quad value is returned. Request Block GetQuadParam is an object module procedure. This page intentionally left blank GetSbStringParam GetSbStringParam (iParam, jParam, fCheckFileName, psbStrRet, sStrMax) Description GetSbStringParam retrieves a string from the Variable Length Parameter Block (VLPB) and returns it as an sbString (i.e. a string in which the first byte is the size of the string). If the string is too long or missing, GetSbStringParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. If fCheckFileName = TRUE, GetSbStringParam verifies the string for file name syntax. If the syntax is invalid the string and an error code are printed and the program terminated. Procedural interface GetSbStringParam (iParam, jParam, fCheckFileName, psbStrRet, sStrMax) where iParam is the index of the parameter. jParam is the index of the subparameter. fCheckFileName is TRUE if the string is to be verified for file name syntax. psbStrRet sStrMax describe the area where the string will be returned. The first byte of the string is its size. Request Block GetSbStringParam is an object module procedure. GetWordParam GetWordParam (iParam, jParam, pWordRet) Description GetWordParam retrieves a decimal or hexadecimal string from the Variable Length Parameter Block (VLPB) and converts it to a WORD. Valid decimal strings are 0 to 65.535 and valid hexadecimal strings are 0h to FFFFh. If the string is invalid or missing, GetWordParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. If you want to nationalize the error messages, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. Procedural interface GetWordParam (iParam, jParam, pWordRet) where iParam is the index of the parameter. jParam is the index of the subparameter. pWordRet the memory address of a word to which the word value is returned. Request Block GetWordParam is an object module procedure. This page intentionally left blank GetYesOrNoBlankParam GetYesOrNoBlankParam (iParam, jParam): BYTE Description GetYesOrNoBlankParam retrieves a Yes, No or null string from the Variable Length Parameter Block (VLPB) and converts it to a 1-byte case value. If the string is invalid, GetYesOrNoBlankParam prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. Case values and their meanings are: Case Meaning 0 The string retrieved from the VLPB matches the No string. 1 The string retrieved from the VLPB matches the Yes string. 2 The string retrieved from the VLPB is a null string or the VLPB subparameter is missing. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. GetYesOrNoBlankParam returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the default strings Yes and No. l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface GetYesOrNoBlankParam (iParam, jParam): BYTE where iParam is the index of the parameter. jParam is the index of the subparameter. Request Block GetYesOrNoBlankParam is an object module procedure. GetYesOrNoBlankParamX GetYesOrNoBlankParamX (iParam, jParam, pfNlsYNRet): BYTE Description GetYesOrNoBlankParamX retrieves a Yes or No string from the Variable Length Parameter Block (VLPB), converts it to a flag and returns a 1-byte case value. The flag is TRUE for a Yes string and FALSE for a No string. If the string is invalid, GetYesOrNoBlankParamX prints an error message to the video or other device as specified by the NPrint and PutChar operations and terminates the program. Case values and their meanings are: Case Meaning 0 The string retrieved from the VLPB matches the No string. 1 The string retrieved from the VLPB matches the Yes string. 2 The string retrieved from the VLPB is a null string or the VLPB subparameter is missing. If you want to nationalize the error message, copy the file CTOSKrivaboLibMsg.txt to your message file and modify the messages as needed. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. GetYesOrNoBlankParamX returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the default strings Yes and No. l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface GetYesOrNoBlankParamX (iParam, jParam, pfNlsYNRet): BYTE where iParam is the index of the parameter. jParam is the index of the subparameter. pfNlsYNRet the memory address of a flag where TRUE is returned for a Yes string and FALSE for a No string. The flag is not modified when GetYesOrNoBlankParamX returns case value 2. Request Block GetYesOrNoBlankParamX is an object module procedure. HexDump HexDump (pAddress, fLfa, pbBuff, cbBuff) Description HexDump prints the contents of a buffer in DUMP format to the video or other device as specified by the NPrint and PutChar operations. Procedural interface HexDump (pAddress, fLfa, pbBuff, cbBuff) where pAddress is the memory address of an lfa or a pointer. The lfa or pointer is the initial address value that will be printed. fLfa is TRUE when pAddress is the memory address of an lfa or FALSE when pAddress is the memory address of a pointer. pbBuff cbBuff describe of the buffer whose contents are to be printed in DUMP format. Request Block HexDump is an object module procedure. This page intentionally left blank HexQdWithHOut HexQdWithHOut (q) Description HexQdWithHOut prints a hexadecimal quad (32-bit unsigned integer) value followed by an 'h' and a space to the video or other device as specified by the NPrint and PutChar operations. Procedural interface HexQdWithHOut (q) where q is a quad. Request Block HexQdWithHOut is an object module procedure. This page intentionally left blank HexWdWithHOut HexWdWithHOut (w) Description HexWdWithHOut prints a hexadecimal word (16-bit unsigned integer) value followed by an 'h' and a space to the video or other device as specified by the NPrint and PutChar operations. Procedural interface HexWdWithHOut (w) where w is a word. Request Block HexWdWithHOut is an object module procedure. This page intentionally left blank HexWithHOut HexWithHOut (b) Description HexWithHOut prints a hexadecimal byte value followed by an 'h' and a space to the video or other device as specified by the NPrint and PutChar operations. Procedural interface HexWithHOut (b) where b is a byte. Request Block HexWithHOut is an object module procedure. This page intentionally left blank InitLocalMsgTable InitLocalMsgTable (pRgiMsg, nMsgs, fCloseMsgFile): ercType Description InitLocalMsgTable is used to load unexpanded messages from a binary message file into a local message table. It subsequently causes all procedures in CTOSKrivabo.Lib that use messages, to retrieve them from the local message table instead of from the binary message file. Before calling InitLocalMsgTable the message file must have been opened with InitMsg. InitLocalMsgTable allocates short-lived memory for the table. Before allocating this memory, InitLocalMsgTable determines how much memory is needed (i.e. the total size of all messages to be loaded + 6 bytes per message). After successfully loading all messages in the table, InitLocalMsgTable sets the public fUseMsgTable flag TRUE. Procedural interface InitLocalMsgTable (pRgiMsg, nMsgs, fCloseMsgFile): ercType where pRgiMsg is the memory address of an array of message numbers of the messages to be loaded in the local message table. nMsgs is the number of messages to be loaded in the local message table. fCloseMsgFile if fCloseMsgFile is TRUE, the message file is closed. Request Block InitLocalMsgTable is an object module procedure. InitMsg InitMsg (pbMsgFile, cbMsgFile, fLinkedInMsg) Description InitMsg opens a binary message file for subsequent retrieval of numbered messages. The message file must have been created in the Executive using the Create Message File command. (See the CTOS Executive Reference Manual for details). If the GetMsgBuffer (see fAllocGetMsgBuffer) and, the MsgBuffer and MsgCacheBuffer (see fAllocMsgBuffers) have not yet been allocated then InitMsg will allocate them with a respective size of 256, 2048 and 4096 bytes before opening the message file. If the message file cannot be opened and linked-in messages are available then the MsgBuffer and MsgCacheBuffer are deallocated again. InitMsg sets the public fUseMsgFile flag TRUE if the message file is open. If the message file cannot be opened, an error will only be reported if fLinkedInMsg is FALSE. Procedural interface InitMsg (pbMsgFile, cbMsgFile, fLinkedInMsg) where pbMsgFile cbMsgFile describe a character string of the following form: {Node}[Volume]FileName. It contains the name of the binary message file to be opened. fLinkedInMsg TRUE means that linked-in messages are available. If the message file cannot be opened and fLinkedInMsg is TRUE, the error will be ignored. Request Block InitMsg is an object module procedure. MapVidAttrToGPS MapVidAttrToGPS (pRgbAttrMap, sMap) Description MapVidAttrToGPS is used to change the default video attribute to GPS attribute translation performed by NPrint when printing to a GPS print file. It supports the mapping of 16 video attribute combinations to attribute combinations printable by GPS (e.g. print the Half-Bright video attribute as Bold and Italic). MapVidAttrToGPS requires that you link your program with OutputWithListII.obj. Procedural interface MapVidAttrToGPS (pRgbAttrMap, sMap) where pRgbAttrMap sMap describe the attribute map which consists of maximum sixteen 2-byte entries. The first byte of an entry specifies the video attribute mask and the second the resulting GPS attribute mask. The meaning of each bit in the attribute masks is as follows: Hexadecimal Bit Value Video Attribute GPS Attribute 0 01h Half-Bright Italic 1 02h Underline Underline 2 04h Reverse Video None 3 08h Blinking None 4 10h Bold Bold 5 20h Struckthrough Struckthrough 6 40h Color 1 None 7 80h Color 2 None As an example, a map entry with a video attribute mask of 45h and a GPS attribute mask of 11h means that the attribute of Color 1, Reverse Video and Half-Bright is to be printed as Bold and Italic. Request Block MapVidAttrToGPS is an object module procedure. NlsMsgStrCollate NlsMsgStrCollate (pNlsTableArea, iMsg, psbMsg, pbStr, cbStr, pbCollResRet, pbPrioResRet) Description NlsMsgStrCollate is similar to NlsCollate (See the CTOS Procedural Interface Reference Manual for details.), except that instead of comparing two strings, NlsMsgStrCollate compares a message with a string to determine if they are equal or if one is greater than the other. Procedural interface NlsMsgStrCollate (pNlsTableArea, iMsg, psbMsg, pbStr, cbStr, pbCollResRet, pbPrioResRet) where pNlsTableArea NlsMsgStrCollate returns a different value based on the following: l If pNlsTableArea is NIL and [Sys]Nls.sys was not present at system boot, an answer is returned based on the ordering of ASCII character codes, except that lowercase roman letters (a..z) are first converted to their uppercase equivalents (A..Z). l If pNlsTableArea is NIL and [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Collation tables. l If pNlsTableArea is the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Collation tables in the alternate set of NLS tables. iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is compared with the string. A zero psbMsg indicates that there is no linked-in message. pbStr cbStr describe the string. pbCollResRet is the memory address of a byte to which a code indicating the result of the string collation is placed. The code values are described as follows: Code Description 0 Msg < Str 1 Msg = Str 2 Msg > Str pbPrioResRet is the memory address of a byte to which a code indicating the result of the string collation based upon character priority is placed. If pbCollResRet equals 1 (string equality), pbPrioResRet determines string priority. Otherwise, pbPrioResRet equals pbCollResRet. The pbPrioResRet code values are the same as those shown above for pbCollResRet. Request Block NlsMsgStrCollate is an object module procedure. NlsMsgStringCollate NlsMsgStringCollate (iMsg, psbMsg, psbStr): Boolean Description NlsMsgStringCollate compares a message with a string and returns TRUE if they are equal. As a default pDefaultNlsTables (public pointer) is NIL. NlsMsgStringCollate returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the ordering of ASCII character codes, except that lowercase roman letters (a..z) are first converted to their uppercase equivalents (A..Z). l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS character collation table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS character collation table in the alternate set of NLS tables. Procedural interface NlsMsgStringCollate (iMsg, psbMsg, psbStr): Boolean where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is compared with the string. A zero psbMsg indicates that there is no linked-in message. psbStr is a pointer to the string. The first byte of this string is its length. Request Block NlsMsgStrCollate is an object module procedure. NlsMsgStringEqual NlsMsgStringEqual (iMsg, psbMsg, psbStr): Boolean Description NlsMsgStringEqual uses a case insensitive comparison to compare a message with a string and returns TRUE if they are equal. As a default pDefaultNlsTables (public pointer) is NIL. NlsMsgStringEqual returns a different value based on the following: l If [Sys]Nls.sys was not present at system boot, an answer is returned based on the ordering of ASCII character codes, except that lowercase roman letters (a..z) are first converted to their uppercase equivalents (A..Z). l If [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Uppercase to LowerCase table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Uppercase to LowerCase table in the alternate set of NLS tables. Procedural interface NlsMsgStringEqual (iMsg, psbMsg, psbStr): Boolean where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is compared with the string. A zero psbMsg indicates that there is no linked-in message. psbStr is a pointer to the string. The first byte of this string is its length. Request Block NlsMsgStrEqual is an object module procedure. NlsMsgStrULCmpB NlsMsgStrULCmpB (pNlsTableArea, iMsg, psbMsg, pbStr, cbStr, piNonCmpChrRet) Description NlsMsgStrULCmpB is similar to NlsULCmpB (See the CTOS Procedural Interface Reference Manual for details.), except that instead of comparing two strings, NlsMsgStrULCmpB compares a message with a string for equality. Procedural interface NlsMsgStrULCmpB (pNlsTableArea, iMsg, psbMsg, pbStr, cbStr, piNonCmpChrRet) where pNlsTableArea NlsMsgStrULCmpB returns a different value based on the following: l If pNlsTableArea is NIL and [Sys]Nls.sys was not present at system boot, an answer is returned based on the ordering of ASCII character codes, except that lowercase roman letters (a..z) are first converted to their uppercase equivalents (A..Z). l If pNlsTableArea is NIL and [Sys]Nls.sys was present at system boot, an answer is returned based on the NLS Uppercase to LowerCase table. l If pNlsTableArea is the memory address of an alternate set of NLS tables, an answer is returned based on the NLS Uppercase to LowerCase table in the alternate set of NLS tables. iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is compared with the string. A zero psbMsg indicates that there is no linked-in message. pbStr cbStr describe the string. piNonCmpChrRet is the memory address of a word to which the index of the first two characters in the message and the string that did not compare as equal is returned. If the message and the string are equal, 0FFFFh is returned. Request Block NlsMsgStrULCmpB is an object module procedure. NPrint NPrint (pbString, cbString) Description The NPrint procedure in the OutputWithListII.obj module is an enhanced version of the NPrint procedure found in CTOSToolKit.lib (See the CTOS Procedural Interface Reference Manual). The enhancements are as follows: l If line wrapping is enabled (see EnableLineWrap), the string printed by NPrint is broken up into words such that, if the current word will not fit on the current line, NPrint outputs a carriage return and a specified number of spaces or tabs before proceeding with the rest of the message. A word is defined as a string of characters up to a character that has a value of 20h or less. l The VideoStatus operation may be used to suppress output to the video. This is useful if a string is to be written only to the print file. Note: Disabling video output also disables line wrapping. l Video escape sequences are suppressed when writing to the video on an SRP below CTOS/XE 3.0 and when writing to a non-GPS print file. Note: Video escape sequences are not suppressed when the name of the print file ends with the suffix '.Vid'. For a GPS print file, video escape sequences are translated to GPS escape sequences when possible. As a default the Half-Bright video attribute is printed as Italic, Bold as Bold, Underline as UnderLine and Struckthrough as Struckthrough. The other video attributes are ignored. This default translation may be changed with the MapVidAttrToGPS operation. Procedural interface NPrint (pbString, cbString) where pbString cbString describe the character string to be written. Request Block NPrint is an object module procedure. OpenPrintFile OpenPrintFile (iParam, fRequired, fHeader) Description OpenPrintFile retrieves a print file specification from the Variable Length Parameter Block (VLPB), opens it in append mode so that output can be directed to this print file as well as to the video byte stream and optionally writes the program header (program name + version) to the print file. Subsequently, all output procedures using the NPrint and PutChar operations will write to both the video and the print file. (Also see the PrintFileStatus operation). Procedural interface OpenPrintFile (iParam, fRequired, fHeader) where iParam is the index of the VLPB parameter holding the print file specification. fRequired is FALSE if a print file specification is not required. If fRequired is TRUE and no print file has been specified, the program is terminated with ercNoSuchJParam (erc 2450). If fRequired is FALSE the error is ignored. fHeader If TRUE the program header is written to the print file. Request Block OpenPrintFile is an object module procedure. This page intentionally left blank POPLineWrap POPLineWrap Description POPLineWrap restores the current Line Wrap parameters with the values that have been pushed on the stack most recently (see PUSHAndEnableLineWrap) and then removes them from the stack. Procedural interface POPLineWrap Request Block POPLineWrap is an object module procedure. This page intentionally left blank POPPrintFileStatus POPPrintFileStatus Description POPPrintFileStatus restores the current status of the print file byte stream (previously opened with OpenPrintFile or PrintFileOpen) with the status that has been pushed on the stack most recently (see PUSHAndEnablePrintFile) and then removes it from the stack. POPPrintFileStatus requires that you link your program with OutputWithListII.obj. Procedural interface POPPrintFileStatus Request Block POPPrintFileStatus is an object module procedure. This page intentionally left blank POPVideoStatus POPVideoStatus Description POPVideoStatus restores the current status of the video byte stream with the status that has been pushed on the stack most recently (see PUSHAndEnableVideo) and then removes it from the stack. POPPrintVideo requires that you link your program with OutputWithListII.obj. Procedural interface POPVideoStatus Request Block POPVideoStatus is an object module procedure. This page intentionally left blank PrintFileClose PrintFileClose Description The PrintFileClose procedure in the OutputWithListII.obj module is similar to the PrintFileClose procedure found in CTOSToolKit.lib (See the CTOS Procedural Interface Reference Manual). It closes the print file byte stream opened with OpenPrintFile or PrintFileOpen. Procedural interface PrintFileClose Request Block PrintFileClose is an object module procedure. This page intentionally left blank PrintFileNPrint PrintFileNPrint (pbString, cbString) Description PrintFileNPrint writes the specified string to the print file opened with OpenPrintFile or PrintFileOpen. Procedural interface PrintFileNPrint (pbString, cbString) where pbString cbString describe the character string to be written. Request Block PrintFileNPrint is an object module procedure. This page intentionally left blank PrintFileOpen PrintFileOpen (pSdFileName): ercType Description PrintFileOpen opens a specified output byte stream in append mode so that output can be directed to this byte stream as well as to the video byte stream. Additional to the PrintFileOpen procedure found in CTOSToolKit.lib (See the CTOS Procedural Interface Reference Manual) the PrintFileOpen procedure in the OutputWithListII.obj module also sets the public bPrintDevType variable depending on the type of print file. Possible values are: Value Device type Meaning 0 VidDevice The print file name ends with the '.Vid' suffix. 1 PrintDevice Any print file that is not a VidDevice or GPSDevice. 2 GPSDevice The print file is a GPS Device. The NPrint procedure uses the bPrintDevType value to determine whether video escape sequences should be left alone, suppressed or translated when writing to the print file. Procedural interface PrintFileOpen (pSdFileName): ercType where pSdFileName is the memory address of an sd type structure describing the file name. The first 4 bytes of the structure contain the memory address of the file specification. The last two bytes contain the size of the specification. Request Block PrintFileOpen is an object module procedure. PrintFilePutChar PrintFilePutChar (ch) Description PrintFilePutChar writes a charecter to the print file opened with OpenPrintFile or PrintFileOpen. Procedural interface PrintFilePutChar (ch) where ch is a (byte) character to be written. Request Block PrintFilePutChar is an object module procedure. This page intentionally left blank PrintFilePutHeader PrintFilePutHeader (nNewLines) Description PrintFilePutHeader writes the program name and version to the print file opened with OpenPrintFile or PrintFileOpen. PrintFilePutHeader requires that the sbstring "sbHeader" is declared PUBLIC in one of the modules of the program calling PrintFilePutHeader. sbHeader should contain the program name and a space. The first byte of the string is its size. A version should also be specified when linking the program. Procedural interface PrintFilePutHeader (nNewLines) where nNewLines the number of line feeds printed after the header. Request Block PrintFilePutHeader is an object module procedure. This page intentionally left blank PrintFileSbPrint PrintFileSbPrint (pbString, cbString) Description PrintFileSbPrint writes a string in which the first byte is the size of the string to the print file opened with OpenPrintFile or PrintFileOpen. Procedural interface PrintFileSbPrint (psbString) where psbString points to a character string in which the first byte is the size of the string. Request Block PrintFileSbPrint is an object module procedure. This page intentionally left blank PrintFileStatus PrintFileStatus (bCode, bStatus): FLAG Description The PrintFileStatus procedure in the OutputWithListII.obj module is similar to the PrintFileStatus procedure found in CTOSToolKit.lib (See the CTOS Procedural Interface Reference Manual). It returns or sets the current status of the byte stream previously opened with OpenPrintFile or PrintFileOpen. Procedural interface PrintFileStatus (bCode, bStatus): FLAG where bCode is a byte value that allows the caller to either query or update the status of the print file byte stream. The allowed values are. Code Description 0 Allows the caller to query the status of the print file byte stream. PrintFileStatus returns TRUE when the output is being directed to the print file byte stream and FALSE when the output is not being directed to the print file byte stream. 1 Allows the caller to change the status of the print file byte stream. bStatus specifies wether the print file byte stream is be turned on or off. bStatus is ignored when bCode is zero. The allowed values are: Code Meaning 0 Suppress output to the print file byte stream. 1 Direct output to the print file byte stream. Request Block PrintFileStatus is an object module procedure. PUSHAndEnableLineWrap PUSHAndEnableLineWrap (cbWrap, fTab, nMaxCols, nColsRightMargin): ercType Description PUSHAndEnableLineWrap first pushes the current Line Wrap parameters on a stack and then changes them to the specified values. The stack is 15 entries deep. Procedural interface PUSHAndEnableLineWrap (cbWrap, fTab, nMaxCols, nColsRightMargin): ercType where cbWrap is the number of spaces or tabs to be printed as left margin after wrapping to the next line. fTab the left margin consists of tabs if TRUE and spaces if FALSE. nMaxCols is the maximum length of a line. nColsRightMargin If nMaxCols is zero or invalid (larger than the video frame width), nColsRightMargin specifies the number of character positions to be used as right margin. When using nMaxCols the text width is independent of the video frame width (80, 132 or 146 characters). But when using nColsRightMargin the right margin is fixed and the text width depends on the current video frame width. Request Block PUSHAndEnableLineWrap is an object module procedure. PUSHAndEnablePrintFile PUSHAndEnablePrintFile (fEnable): ercType Description PUSHAndEnablePrintFile first pushes the current status of the print file byte stream (previously opened with OpenPrintFile or PrintFileOpen) on a stack and then enables or disables the print file byte stream as specified by fEnable. The stack is 15 entries deep. PUSHAndEnablePrintFile requires that you link your program with OutputWithListII.obj. Procedural interface PUSHAndEnablePrintFile (fEnable): ercType where fEnable enables the print file byte stream if TRUE or disables it if FALSE. Request Block PUSHAndEnablePrintFile is an object module procedure. This page intentionally left blank PUSHAndEnableVideo PUSHAndEnableVideo (fEnable): ercType Description PUSHAndEnableVideo first pushes the current status of the video byte stream on a stack and then enables or disables the video byte stream as specified by fEnable. The stack is 15 entries deep. PUSHAndEnableVideo requires that you link your program with OutputWithListII.obj. Procedural interface PUSHAndEnableVideo (fEnable): ercType where fEnable enables the video byte stream if TRUE or disables it if FALSE. Request Block PUSHAndEnableVideo is an object module procedure. This page intentionally left blank PutChar PutChar (ch) Description The PutChar procedure in the OutputWithListII.obj module is similar to the PutChar procedure found in CTOSToolKit.lib (See the CTOS Procedural Interface Reference Manual), except that the VideoStatus operation may be used to suppress output to the video. This is useful if a character is to be written only to the print file. Procedural interface PutChar (ch) where ch is a (byte) character to be written. Request Block PutChar is an object module procedure. This page intentionally left blank PutExpandedMsg PutExpandedMsg (iMsg, psbMsg, pRgSd, sRgSd) Description PutExpandedMsg prints an expanded message to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsg (iMsg, psbMsg, pRgSd, sRgSd) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. pRgSd sRgSd is the memory address of an array of string descriptors. Each element of the array describes a string that is inserted in the message in place of a macro. (See the CTOS Procedural Interface Reference Manual Appendix F for details.) String descriptors are 6-byte blocks of memory. The first 4 bytes contain the memory address of the string; the last 2 bytes contain the string size. Request Block PutExpandedMsg is an object module procedure. PutExpandedMsgByte PutExpandedMsgByte (iMsg, psbMsg, b) Description PutExpandedMsgByte prints a message expanded with a byte (8-bit unsigned integer) value to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgByte (iMsg, psbMsg, b) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. b is a byte. Request Block PutExpandedMsgByte is an object module procedure. This page intentionally left blank PutExpandedMsgData PutExpandedMsgData (iMsg, psbMsg, pbData, cbData) Description PutExpandedMsgData prints a message expanded with a data item to the video or other device as specified by the NPrint and PutChar operations. The data item can be a byte, a word a quad or a string. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgData (iMsg, psbMsg, pbData, cbData) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. pbData cbData describe the data item. For a byte, word, quad or a string cbData is respectively 1, 2, 4 or n (where n is the actual string size). Request Block PutExpandedMsgData is an object module procedure. This page intentionally left blank PutExpandedMsgData2 PutExpandedMsgData2 (iMsg, psbMsg, pbData1, cbData1, pbData2, cbData2) Description PutExpandedMsgData2 prints a message expanded with two data items to the video or other device as specified by the NPrint and PutChar operations. The data items can be a byte, a word a quad or a string. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgData2 (iMsg, psbMsg, pbData1, cbData1, pbData2, cbData2) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. pbData1 cbData1 describe the first data item. For a byte, word, quad or a string cbData1 is respectively 1, 2, 4 or n (where n is the actual string size). pbData2 cbData2 describe the second data item. Request Block PutExpandedMsgData2 is an object module procedure. PutExpandedMsgData3 PutExpandedMsgData3 (iMsg, psbMsg, pbData1, cbData1, pbData2, cbData2, pbData3, cbData3) Description PutExpandedMsgData3 prints a message expanded with three data items to the video or other device as specified by the NPrint and PutChar operations. The data items can be a byte, a word a quad or a string. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgData3 (iMsg, psbMsg, pbData1, cbData1, pbData2, cbData2, pbData3, cbData3) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. pbData1 cbData1 describe the first data item. For a byte, word, quad or a string cbData1 is respectively 1, 2, 4 or n (where n is the actual string size). pbData2 cbData2 describe the second data item. pbData3 cbData3 describe the third data item. Request Block PutExpandedMsgData2 is an object module procedure. PutExpandedMsgQuad PutExpandedMsgQuad (iMsg, psbMsg, q) Description PutExpandedMsgQuad prints a message expanded with a quad (32-bit unsigned integer) value to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgQuad (iMsg, psbMsg, q) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. q is a quad. Request Block PutExpandedMsgQuad is an object module procedure. This page intentionally left blank PutExpandedMsgSbString PutExpandedMsgSbString (iMsg, psbMsg, psbString) Description PutExpandedMsgSbString prints a message expanded with an sbString to the video or other device as specified by the NPrint and PutChar operations.. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgSbString (iMsg, psbMsg, psbString) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. psbString points to a character string in which the first byte is the size of the string. Request Block PutExpandedSbString is an object module procedure. This page intentionally left blank PutExpandedMsgSbStrings PutExpandedMsgSbStrings (iMsg, psbMsg, psbString1, psbString2) Description PutExpandedMsgStrings prints a message expanded with two sbStrings to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgSbStrings (iMsg, psbMsg, psbString1, psbString2) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. psbString1 points to the first character string in which the first byte is the size of the string. psbString2 points to the second character string in which the first byte is the size of the string. Request Block PutExpandedMsgSbStrings is an object module procedure. PutExpandedMsgWord PutExpandedMsgWord (iMsg, psbMsg, w) Description PutExpandedMsgWord prints a message expanded with a word (16-bit unsigned integer) value to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutExpandedMsgWord (iMsg, psbMsg, w) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. w is a word. Request Block PutExpandedMsgWord is an object module procedure. This page intentionally left blank PutExpandedSbString PutExpandedSbString (psbMsg, pRgSd, sRgSd) Description PutExpandedSbString prints an expanded message string to the video or other device as specified by the NPrint and PutChar operations. Procedural interface PutExpandedSbString (psbMsg, pRgSd, sRgSd) where psbMsg is a pointer to a string containing macro(s). The first byte of this string is its size. pRgSd sRgSd is the memory address of an array of string descriptors. Each element of the array describes a string that is inserted in the message in place of a macro. (See the CTOS Procedural Interface Reference Manual Appendix F for details.) String descriptors are 6-byte blocks of memory. The first 4 bytes contain the memory address of the string; the last 2 bytes contain the string size. Request Block PutExpandedSbString is an object module procedure. This page intentionally left blank PutFlag PutFlag (f) Description PutFlag prints the value of a flag and a space to the video or other device as specified by the NPrint and PutChar operations. The Yes string is printed if the flag is TRUE and the No string if the flag is FALSE. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. PutFlag prints a different string based on the following: l If [Sys]Nls.sys was not present at system boot, the default Yes or No string is printed. l If [Sys]Nls.sys was present at system boot, the string is retrieved from the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, the string is retrieved from the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface PutFlag (f) where f is a flag. Request Block PutFlag is an object module procedure. PutHeader PutHeader (nNewLines) Description PutHeader prints the program name and version to the video or other device as specified by the NPrint and PutChar operations. PutHeader requires that the sbstring "sbHeader" is declared PUBLIC in one of the modules of the program calling PutHeader. sbHeader should contain the program name and a space. The first byte of the string is its size. A version should also be specified when linking the program. Procedural interface PutHeader (nNewLines) where nNewLines the number of line feeds printed after the header. Request Block PutHeader is an object module procedure. This page intentionally left blank PutMsg PutMsg (iMsg, psbMsg) Description PutMsg prints a message to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutMsg (iMsg, psbMsg) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. Request Block PutMsg is an object module procedure. This page intentionally left blank PutMsgDecQuad PutMsgDecQuad (iMsg, psbMsg, q, nNewLines) Description PutMsgDecQuad prints a message followed by a decimal quad (32-bit unsigned integer) value, a space and optionally a number of line feeds to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutMsgDecQuad (iMsg, psbMsg, q, nNewLines) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. q is a quad. nNewLines is the number of line feeds. Request Block PutMsgDecQuad is an object module procedure. PutMsgDecWord PutMsgDecWord (iMsg, psbMsg, w, nNewLines) Description PutMsgDecWord prints a message followed by a decimal word value, a space and optionally a number of line feeds to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutMsgDecWord (iMsg, psbMsg, w, nNewLines) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. w is a word. nNewLines is the number of line feeds. Request Block PutMsgDecWord is an object module procedure. PutMsgFlag PutMsgFlag (iMsg, psbMsg, f, nNewLines) Description PutMsgFlag prints a message followed by the value of a flag, a space and optionally a number of line feeds to the video or other device as specified by the NPrint and PutChar operations. The Yes string is printed if the flag is TRUE and the No string if the flag is FALSE. If the message file is not open or the message cannot be found, a linked-in message is used instead. The Yes and No strings are defined in the Native Language Support (NLS) Yes or No Strings table. (For details on the NLS tables, see "Native Language Support" in the CTOS Operating System Concepts Manual.) As a default pDefaultNlsTables (public pointer) is NIL. PutMsgFlag prints a different string based on the following: l If [Sys]Nls.sys was not present at system boot, the default Yes or No string is printed. l If [Sys]Nls.sys was present at system boot, the string is retrieved from the NLS Yes or No Strings table. l If pDefaultNlsTables is initialized to the memory address of an alternate set of NLS tables, the string is retrieved from the NLS Yes or No Strings table in the alternate set of NLS tables. Procedural interface PutMsgFlag (iMsg, psbMsg, f, nNewLines) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. f is a flag. nNewLines is the number of line feeds. Request Block PutMsgFlag is an object module procedure. PutMsgHexByte PutMsgHexByte (iMsg, psbMsg, b, nNewLines) Description PutMsgHexByte prints a message followed by a hexadecimal byte (8-bit unsigned integer) value, a 'h', a space and optionally a number of line feeds to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutMsgHexByte (iMsg, psbMsg, b, nNewLines) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. b is a byte. nNewLines is the number of line feeds. Request Block PutMsgHexByte is an object module procedure. PutMsgHexQuad PutMsgHexQuad (iMsg, psbMsg, q, nNewLines) Description PutMsgHexQuad prints a message followed by a hexadecimal quad (32-bit unsigned integer) value, a 'h', a space and optionally a number of line feeds to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutMsgHexQuad (iMsg, psbMsg, q, nNewLines) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. q is a quad. nNewLines is the number of line feeds. Request Block PutMsgHexQuad is an object module procedure. PutMsgHexWord PutMsgHexWord (iMsg, psbMsg, w, nNewLines) Description PutMsgHexWord prints a message followed by a hexadecimal word (16-bit unsigned integer) value, a 'h', a space and optionally a number of line feeds to the video or other device as specified by the NPrint and PutChar operations. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface PutMsgHexWord (iMsg, psbMsg, w, nNewLines) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. w is a word. nNewLines is the number of line feeds. Request Block PutMsgHexWord is an object module procedure. PutNewLines PutNewLines (nNewLines) Description PutNewLines prints a specified number of line feeds to the video or other device as specified by the NPrint and PutChar operations. Procedural interface PutNewLines (nNewLines) where nNewLines is the number of line feeds. Request Block PutNewLines is an object module procedure. This page intentionally left blank PutSpaces PutSpaces (nSpaces) Description PutSpaces prints a specified number of spaces to the video or other device as specified by the NPrint and PutChar operations. Procedural interface PutSpaces (nSpaces) where nSpaces is the number of spaces. Request Block PutSpaces is an object module procedure. This page intentionally left blank ReadKbdChar ReadKbdChar (bBatchChar): Byte Description ReadKbdChar reads one character from the keyboard. When running in a batch partition bBatchChar is returned. Procedural interface ReadKbdChar (bBatchChar): Byte where bBatchChar is the default keyboard character returned when running in a Batch Partition. If bBatchChar = 0, the program running in a batch partition is terminated with ercNoCharactersInKeyboard (erc 602). Request Block ReadKbdChar is an object module procedure. This page intentionally left blank ResetExitMsg ResetExitMsg: ercType Description ResetExitMsg resets the pbMsgRet/cbMsgRet field in the caller's Application System Control Block (ASCB). Procedural interface ResetExitMsg: ercType Request Block ResetExitMsg is an object module procedure. This page intentionally left blank ResetMsg ResetMsg (fDeAllocMsgBuffers, fDeAllocGetMsgBuffer) Description ResetMsg closes the message file and deallocates the MsgBuffer, MsgCacheBuffer and GetMsgBuffer. Procedural interface ResetMsg (fDeAllocMsgBuffers, fDeAllocGetMsgBuffer) where fDeAllocMsgBuffers deallocates the MsgBuffer and MsgCacheBuffer if TRUE. fDeAllocGetMsgBuffer deallocates the GetMsgBuffer if TRUE and if the MsgBuffer and MsgCacheBuffer are not allocated. Request Block ResetMsg is an object module procedure. This page intentionally left blank ReturnExpandedMsg ReturnExpandedMsg (iMsg, psbMsg, pRgSd, sRgSd, ppMsgRet, pCbMsgRet) Description ReturnExpandedMsg returns a pointer to an expanded message and its size. If the message file is not open or the message cannot be found, an expanded linked-in message is returned instead. Procedural interface ReturnExpandedMsg (iMsg, psbMsg, pRgSd, sRgSd, ppMsgRet, pCbMsgRet) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. pRgSd sRgSd is the memory address of an array of string descriptors. Each element of the array describes a string that is inserted in the message in place of a macro. (See the CTOS Procedural Interface Reference Manual Appendix F for details.) String descriptors are 6-byte blocks of memory. The first 4 bytes contain the memory address of the string; the last 2 bytes contain the string size. ppMsgRet is the memory address to which the memory address of the message is to be returned. pCbMsgRet is the memory address of a word to which the size of the message is to be returned. Request Block ReturnExpandedMsg is an object module procedure. ReturnMsg ReturnMsg (iMsg, psbMsg, ppMsgRet, pCbMsgRet) Description ReturnMsg returns a pointer to a message and its size. If the message file is not open or the message cannot be found, a linked-in message is returned instead. Procedural interface ReturnMsg (iMsg, psbMsg, ppMsgRet, pCbMsgRet) where iMsg is the message number (word). psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. ppMsgRet is the memory address to which the memory address of the message is to be returned. pCbMsgRet is the memory address of a word to which the size of the message is to be returned. Request Block ReturnMsg is an object module procedure. SetExitMsg SetExitMsg (pbMsg, cbMsg): ercType Description SetExitMsg is similar to SetMsgRet (See the CTOS Procedural Interface Reference Manual for details.), except that SetExitMsg only allocates long-lived memory (256 bytes) the first time that it is called unless the message does not fit. SetExitMsg is useful to set an exit message before calling a procedure that might terminate the application in case of an error. For example, OpenPrintFile sets the name of the print file as an exit message before calling PrintFileOpen. This causes the name of the print file to be displayed when PrintFileOpen fails. If PrintFileOpen does not fail and returns, OpenPrintFile clears the exit message with ResetExitMsg. Procedural interface SetExitMsg (pbMsg, cbMsg): ercType where pbMsg cbMsg describe the message placed in the caller's long-lived memory. Request Block SetExitMsg is an object module procedure. This page intentionally left blank Tell Tell (osbString) Description Tell prints a string in which the first byte is the size of the string to the video or other device as specified by the NPrint and PutChar operations. Procedural interface Tell (osbString) where osbString is the offset to a character string in which the first byte is the size of the string. The string must reside in the DATA segment of the program. Request Block Tell is an object module procedure. This page intentionally left blank VideoStatus VideoStatus (bCode, bStatus): FLAG Description VideoStatus returns or sets the current status of the video device. It requires that you link your program with OutputWithListII.obj. Procedural interface VideoStatus (bCode, bStatus): FLAG where bCode is a byte value that allows the caller to either query or update the status of the video device. The allowed values are. Code Description 0 Allows the caller to query the status of the video device. VideoStatus returns TRUE when the output is being directed to the video device and FALSE when the output is not being directed to the video device. 1 Allows the caller to change the status of the video device. bStatus specifies wether the video device is to be turned on or off. bStatus is ignored when bCode is zero. The allowed values are: Code Meaning 0 Suppress output to the video device. 1 Direct output to the video device. Request Block VideoStatus is an object module procedure. XErrorExit XErrorExit (ercTermination) Description XErrorExit terminates the current application program and passes a specified status code to the exit run file. XErrorExit performs the following functions: 1. Prints the exit message and the status code to the video or other device as specified by the NPrint and PutChar operations. The exit message can be set with the SetMsgRet (See the CTOS Procedural Interface Reference Manual for details.), SetExitMsg, XErrorExitMsg or XErrorExitString operations. It is not passed to the exit run file. 2. Closes the print file if any. 3. Closes all files in the application partition. 4. Attempts to load the exit run file. If this is not possible the user is prompted to correct the problem first (e.g. reinsert the system floppy). When using XErrorExit, the program must be linked with FatalPro.obj instead of CTOS.lib(FtlPro). If you omit this the linker will report an unresolved external. Procedural interface XErrorExit (ercTermination) where ercTermination is a 16-bit status code to be passed to the exit run file. Request Block XErrorExit is an object module procedure. XErrorExitMsg XErrorExitMsg (ercTermination, iMsg, psbMsg) Description XErrorExitMsg returns a message to the exit run file. If the message file is not open or the message cannot be found, a linked-in message is used instead. Procedural interface XErrorExitMsg (ercTermination, iMsg, psbMsg) where ercTermination is a 16-bit status code to be used as a parameter to a call to FatalError. (See the CTOS Procedural Interface Reference Manual for details.) iMsg is the message number (word) of the message to be placed in the caller's Application System Control Block (ASCB) for examination by the exit run file. psbMsg is a pointer to a linked-in message. The first byte of this message is its size. If the message file is not open or message iMsg can not be found, the linked-in message is used instead. A zero psbMsg indicates that there is no linked-in message. Request Block XErrorExitMsg is an object module procedure. This page intentionally left blank XErrorExitString XErrorExitString (ercTermination, pbString, cbString) Description XErrorExitString is similar to ErrorExitString (See the CTOS Procedural Interface Reference Manual for details.), except that it calls FatalError instead of ErrorExit. Procedural interface XErrorExitString (ercTermination, pbString, cbString) where ercTermination is a 16-bit status code to be used as a parameter to a call to FatalError. (See the CTOS Procedural Interface Reference Manual for details.) pbString cbString describe the string to be placed in the caller's Application System Control Block (ASCB) for examination by the exit run file. Request Block XErrorExitString is an object module procedure. This page intentionally left blank Appendix A Software Installation The CTOSKrivabo Library package consists of the files shown below: File Description CTOSKrivabo.Lib the library OutputWithListII.obj Some of the procedures require that you link your program with this file. FatalPro.obj Your program must be linked with this file instead of CTOS.lib(FtlPro) whenever it uses the XErrorExit procedure. If you omit this the linker will report an unresolved external. CTOSKrivaboLib.edf PL/M-86 include file containing the definitions for all of the procedures in CTOSKrivabo.Lib CTOSKrivaboLibMsg.txt message text file containing all the messages used by CTOSKrivabo.Lib. It is only needed if you want to nationalize these messages. CTOSKvboLbProcIntRefManual.def this manual in DEF format. PascalSampleProgram.pas Pascal sample program PlmSampleProgram.plm PL/M-86 sample program SampleProgMsg.txt message text file for the above sample programs. You install the CTOSKrivabo Library software package with the INSTALLATION MANAGER. Installation may be attended or unattended but can only be from Floppy. Attended Software Installation Enter INSTALLATION MANAGER in the Executive command line and press GO. The system then directs the software installation, prompting you when it requires a decision. (Refer to your CTOS System Software Installation and Configuration Guide for more information about the INSTALLATION MANAGER command, and for detailed installation procedures.) Once you begin the installation procedure, the Installation Manager presents you the following menu: Select which files you want to install r CTOSKrivabo.Lib r CTOSKrivaboLib.edf r CTOSKrivabo.Lib Reference Manual r Pascal Sample Program r PL/M-86 Sample Program r CTOSKrivabo.Lib message text file Use (Code) MARK and BOUND to (de)select items, then press GO If you select CTOSKrivabo.Lib, the files CTOSKrivabo.Lib, FatalPro.obj and OutputWithListII.obj are copied to the directory of your system volume (i.e. '[Sys]' if the installation is private and '[!Sys]' if it is public). If you select CTOSKrivaboLib.edf, the file CTOSKrivaboLib.edf will be copied to the directory on your system volume. If the directory does not exist it is created. If you select any of the last four options, Installation Manager will ask you to enter a Volume Name for the directory (default = system volume). Then the selected files are copied to the directory. When the installation is complete, the system displays a message that installation has completed successfully. Press any key to exit. Remove the distribution diskette and store it in a safe place. Unattended Software Installation Enter INSTALLATION MANAGER in the Executive command line and press RETURN. Then enter Yes in the [Non-interactive?] parameter and press GO. If they do not already exist, the system creates the and directories on the system volume and copies all the files of the CTOSKrivabo Library sofware package to their respective directories (refer to Attended Software installation above). When the installation is complete, the system displays a message that installation has completed successfully. Press any key to exit. Remove the distribution diskette and store it in a safe place. This page intentionally left blank Appendix B CTOSKrivabo.Lib messages This appendix shows the messages used by CTOSKrivabo.Lib. $TITLE('CTOSKrivaboLibMsg.txt V12.1.0 M01 === 10/04/91') ;**************************** MODULE HEADER ***************************; ;**********************************************************************; ;* *; ;* MACHINE: B26/B27/B28/B38/B39/XE520/XE530 *; ;* OS: BTOS, BTOS II and CTOS *; ;* *; ;* CREATED: Kris Van Bogaert *; ;* UNISYS BELGIUM CSE SUPPORT *; ;* Zaventem April 14, 1991 *; ;* *; ;* *; ;* DESCRIPTION: Messages used by the modules in CTOSKrivabo.Lib *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVVVV/MM PROGRAMMER / DESCRIPTION OF CHANGE *; ;* *; ;* 10/04/91 12.1.0/01 K. Van Bogaert / Added messages 60158-60161 *; ;* 04/14/91 12.0.0/00 K. Van Bogaert / Created *; ;* *; ;* *; ;************************ END OF MODULE HEADER **********************; ;**********************************************************************; ; ; ; ; CTOSKrivabo.Lib Message File ; ; This file contains the error and text messages used by some of the ; modules in CTOSKrivabo.Lib. They are each time preceded by the name ; of the module that uses them. If you are using any of these ; modules, then you should copy the corresponding messages to the ; message file of your application. This file may be edited to change ; the text of any of the messages. ; ; The syntax of this is described below. Each message in the file ; is defined by-- ; ; nnnnn Text ; ; ; Macro expansion syntax-- ; ; ; Macro String to be inserted ; ; %U workstation user name. ; %Dn system date/time formatted with template number n. ; %Kn keycap text for key number n. ; %nD nth parameter as date/time ; %nN nth parameter as unsigned integer ; %nS nth parameter as a string ; %n nth parameter as a string ; ; Date Time Template Definitions. ; ; ; Type # Examples Max. Length. ; ____________________________________________________________________ ; Columnar 0000h 7/18/85 9:03AM 16 ; numeric 10/08/85 11:13PM ; date and ; time of ; day ; ; Numeric 0001h 7/18/85 9:03AM 16 ; date and 10/08/85 11:13PM ; time of ; day ; ; Columnar 0002h Jul 1, 1985 9:03 AM 26 ; date and Jul 18, 1985 11:13 PM ; time of day ; ; Date and 0003h Jul 1, 1985 9:03AM 26 ; time of Jul 18, 1985 11:13PM ; day ; ; Columnar 0004h Mon Jul 1, 1985 9:03 AM 30 ; day, date, Mon Jul 18, 1985 11:13 PM ; and time ; of day ; ; Day, date, 0005h Mon Jul 1, 1985 9:03 AM 30 ; and time Mon Jul 18, 1985 11:13 PM ; of day ; Columnar 0006h 23:43 5 ; 24-hour 07:00 ; time of ; day* ; ; 24-hour 0007h 23:43 5 ; time of 7:00 ; day* ; ; *For applications that want 24-hour time regardless of country. ; Columnar 0008h 11:43PM 8 ; time of 7:00AM ; day ; ; Time of 0009h 11:43PM 8 ; day 7:00AM ; ; Columnar 000Ah 11/18/85 8 ; numeric 01/01/01 ; date ; ; Numeric 000Bh 11/18/85 8 ; date 1/1/01 ; ; Time 000Ch 09:03:05 8 ; ; Temporary 000Dh 09:03:05.tmp 30 ; file name 23:03:05.tmp ; ; Long day 000Eh Monday June 3, 1985 5 ; and date ; ; Long date 000Fh June 3, 1985 30 ; ; Columnar 0010h 01/01/01-07:09:05AM 40 ; date/time ; for file ; names** ; ; **Various strings are normally appended to construct file names. No ; spaces should be allowed. ; ; ; Keycap Text definitions ; ; Name Number Text ; ============================================ ; Action 1 "ACTION" ; Backspace 2 "BACK SPACE" ; Bound 3 "BOUND" ; Cancl 4 "CANCEL" ; Code 5 "CODE" ; Copy 6 "COPY" ; Delete 7 "DELETE" ; Finish 8 "FINISH" ; Go 9 "GO" ; Help 10 "HELP" ; Lock 11 "LOCK" ; Mark 12 "MARK" ; Move 13 "MOVE" ; Next 14 "NEXT" ; NextPage 15 "NEXT PAGE" ; OverType 16 "OVER TYPE" ; PrevPage 17 "PREV PAGE" ; Return 18 "RETURN" ; ScrlDown 19 "SCROLL DOWN" ; ScrlUp 20 "SCROLL UP" ; Shift 21 "SHIFT" ; Tab 22 "TAB" ; ======================================================================== Messages used by SysExit.obj ============================ :60000: " ***** CANNOT LOAD THE EXIT RUN FILE %0S (ERROR %1N). (Please correct the problem and press %K9 or %K18 to exit) " :60001: " ***** TERMINATION ERROR: %3%1%0N " RESERVE MESSAGE NUMBERS 60002 THROUGH 60100 FOR CTOSKrivabo.lib. ________________________________________________________________________ Messages used by AskProceed.obj =============================== :60101: " (Press %K9 to confirm, %K4 to deny, %K8 to exit) " :60102: " (Press %K8 or %K9 to exit, or any other key to continue) " RESERVE MESSAGE NUMBERS 60102 THROUGH 60149 FOR CTOSKrivabo.lib. ________________________________________________________________________ Messages used by GetParam.obj ============================= :60150: "Parameter on line %0N of the form is missing." :60151: "SubParameter %1N on line %0N of the form is missing." :60152: "%0S: Is not a numeric string." :60153: "%0S: Is not between %1N and %2N." :60154: "%0S: Is not between %1Hh and %2Hh." :60155: "%0S: Is neither %1S or %2S." :60156: "%0S: Is too long (max. %1N characters)." :60157: "Case value must be two characters." :60158: "Parameter on line %0N of the form: Password is too long (max. 12 characters). " :60159: "SubParameter %1N on line %0N of the form: Password is too long (max. 12 characters). " :60160: "Parameter on line %0N of the form: File specification is missing." :60161: "SubParameter %1N on line %0N of the form: File specification is missing." RESERVE MESSAGE NUMBERS 60162 THROUGH 65534 FOR CTOSKrivabo.lib. MESSAGE NUMBER 65535 WILL NEVER BE USED. THIS ALLOWS US TO USE THIS NUMBER TO INDICATE THAT THE LINKED-IN MESSAGE SHOULD BE USED. ________________________________________________________________________ Appendix C PL/M-86 and Pascal Sample Programs This appendix lists a PL/M-86 and a Pascal sample program, and their message file. This message file is only needed if you want to nationalize the messages. PL/M-86 Sample Program $MEDIUM OPTIMIZE(2) $MOD186 /************************** PROGRAM HEADER *************************** ************************************************************************ ** ** ** MACHINE: B26/B27/B28/B38/B39/XE520/XE530 ** ** LANGUAGE: PLM86 V2.3 ** ** OS: BTOS, BTOS II and CTOS ** ** ** ** MODULE: PlmSampleProg.plm V12.0.0 M00 == 04/20/91 ** ** ** ** CREATED: Kris Van Bogaert ** ** UNISYS BELGIUM CSE SUPPORT ** ** Zaventem April 20, 1991 ** ** ** ** ** ** DESCRIPTION: ** ** ** ** Sample program showing: ** ** ** ** - how program output can easily be directed to both the video ** ** and a print file. ** ** ** ** - how to implement the use of both linked-in messages and a ** ** .bin message file. ** ** ** ** ** ** HISTORY: ** ** ** ** MM/DD/YY VVVVVV/MM PROGRAMMER / DESCRIPTION OF CHANGE ** ** ** ** 04/20/91 12.0.0/00 K. Van Bogaert / Created. ** ** ** ** ** ************************* END OF PROGRAM HEADER ********************** ***********************************************************************/ SampleProg: DO; $INCLUDE(:f0:CtosStructures.edf) $SET(Beep) $INCLUDE(:f0:CtosLib.edf) $SET(AskOptionalWord, fPutMsgAskProceed, InitMsg, OpenPrintFile) $SET(PutExpandedMsg, PutHeader, PutMsg, PutMsgDecWord, PutNewLines) $SET(XErrorExitMsg) $INCLUDE(:f0:CtosKrivaboLib.edf) DECLARE lCancel LITERALLY '07h' ,lCr LITERALLY '0Ah' /** Carriage return **/ ; DECLARE rgEnterOptWord (32) BYTE DATA (31, 'Enter a word ', '(default = %0N) : ') ,rgEndOfSampleProgMsg (25) BYTE DATA (24,lCr,lCr, 'End of sample program.') ,rgLinkedInMsg (29) BYTE DATA (28, 'This is a linked-in ', 'message.') ,rgNumberOfCylinders (22) BYTE DATA (21, 'Number of cylinders: ') ,rgShouldIBeep (28) BYTE DATA (27, 'Do you want to hear a ', 'beep?') ,rgTodaysDate (24) BYTE DATA (23, 'Today''s date is %D14.', lCr, lCr) ,sbHeader (15) BYTE PUBLIC DATA (14, 'SampleProgram ') ; DECLARE lrgEnterOptWord LITERALLY '40000' ,lrgNumberOfCylinders LITERALLY '40001' ,lrgShouldIBeep LITERALLY '40002' ,lrgTodaysDate LITERALLY '40003' ,lrgEndOfSampleProgMsg LITERALLY '40004' ,lrgNotInBinFile LITERALLY '65535' ; DECLARE erc ercType ,i WORD ,rgSampleProgBin (*) BYTE DATA ('SampleProgMsg.bin') ; /**** Display the program header (program name + version) ****/ CALL PutHeader(3); /**** Open the print file if command parameter 1 is not empty ****/ /**** and output the program header to the print file. If the ****/ /**** print file cannot be opened then display the print file ****/ /**** name and pass the error code to the exit run file. ****/ CALL OpenPrintFile(1, False, TRUE); /**** From now on all output procedures that use NPrint or ****/ /**** PutChar will write to both the video and the print file. ****/ /**** Allocate buffers and open the .bin message file. Use ****/ /**** linked-in messages if the message file does not exist, ****/ /**** cannot be opened for any reason, or later in the program ****/ /**** a message cannot be read (for whatever reason). ****/ CALL InitMsg(@rgSampleProgBin, SIZE(rgSampleProgBin), TRUE); /**** Print todays date in the following format: ****/ /**** ****/ /**** Today's date is Monday February 25, 1991. ****/ CALL PutExpandedMsg(lrgTodaysDate, @rgTodaysDate, 0, 0); /**** Ask the user to enter a word value, read the user's ****/ /**** input and convert the input to a word. Default to 23 ****/ /**** if the user only presses the RETURN or GO key. Print 1 ****/ /**** carriage return when the input is valid. The value ****/ /**** can be entered in decimal or hexadecimal and it cannot ****/ /**** be greater than 65535. ****/ /**** ****/ /**** If, while entering the word value, the user ****/ /**** (accidentally) hits the FINISH key, ask for ****/ /**** confirmation to exit. If the user selects to continue, ****/ /**** remove the confirmation prompt and let him continue ****/ /**** with the word input. ****/ i = AskOptionalWord(lrgEnterOptWord, @rgEnterOptWord, 23, 1); /**** Display a message followed by a decimal value and 2 ****/ /**** blank lines. ****/ CALL PutMsgDecWord(lrgNumberOfCylinders, @rgNumberOfCylinders, i, 3); /**** Ask confirmation to beep. In a batch partition default ****/ /**** to FALSE. ****/ IF fPutMsgAskProceed(lrgShouldIBeep,@rgShouldIBeep,lCancel) THEN erc = Beep; /**** Print two line feeds. ****/ CALL PutNewLines(2); /**** Print a linked-in message, i.e. a message that does not ****/ /**** exist in the SampleProgMsg.bin message file. ****/ CALL PutMsg(lrgNotInBinFile, @rgLinkedInMsg); /**** Print an exit message, close the print file and ****/ /**** terminate the program. ****/ CALL XErrorExitMsg(0, lrgEndOfSampleProgMsg, @rgEndOfSampleProgMsg); END SampleProg; Pascal Sample Program {************************** PROGRAM HEADER *************************** ************************************************************************ ** ** ** MACHINE: B26/B27/B28/B38/B39/XE520/XE530 ** ** LANGUAGE: Pascal ** ** OS: BTOS, BTOS II and CTOS ** ** ** ** MODULE: PascalSampleProg.pas V12.0.0 M00 == 04/20/91 ** ** ** ** CREATED: Kris Van Bogaert ** ** UNISYS BELGIUM CSE SUPPORT ** ** Zaventem April 20, 1991 ** ** ** ** ** ** DESCRIPTION: ** ** ** ** Sample program showing: ** ** ** ** - how program output can easily be directed to both the video ** ** and a print file. ** ** ** ** - how to implement the use of both linked-in messages and a ** ** .bin message file. ** ** ** ** ** ** HISTORY: ** ** ** ** MM/DD/YY VVVVVV/MM PROGRAMMER / DESCRIPTION OF CHANGE ** ** ** ** 04/20/91 12.0.0/00 K. Van Bogaert / Created. ** ** ** ** ** ************************* END OF PROGRAM HEADER ********************** ***********************************************************************} PROGRAM SampleProg; TYPE ercType = WORD; POINTER = ADS OF WORD; VAR erc : ercType; i : WORD; VAR [READONLY,PUBLIC] sbHeader : LSTRING(14); VALUE sbHeader := 'SampleProgram '; {**** Linked-in messages ****} VAR [READONLY] rgEnterOptWord : LSTRING(31); rgEndOfSamplProgMsg : LSTRING(24); rgLinkedInMsg : LSTRING(28); rgNumberOfCylinders : LSTRING(21); rgShouldIBeep : LSTRING(27); rgTodaysDate : LSTRING(23); VALUE rgEnterOptWord := 'Enter a word (default = %0N) : '; rgEndOfSamplProgMsg := CHR(#A)*CHR(#A)*'End of sample program.'; rgLinkedInMsg := 'This is a linked-in message.'; rgNumberOfCylinders := 'Number of cylinders: '; rgShouldIBeep := 'Do you want to hear a beep?'; rgTodaysDate := 'Today''s date is %D14.'*CHR(#A)*CHR(#A); CONST lCance l = #7; {**** Message numbers ****} lrgEnterOptWord = 40000; lrgNumberOfCylinders = 40001; lrgShouldIBeep = 40002; lrgTodaysDate = 40003; lrgEndOfSamplProgMsg = 40004; lrgNotInBinFile = 65535; {**** Message file ****} rgSampleProgBin = 'SampleProgMsg.bin'; FUNCTION AskOptionalWord(iMsg: WORD; psbMsg:POINTER; wDefault:WORD; nNewLines:WORD):WORD; EXTERN; FUNCTION Beep:WORD; EXTERN; FUNCTION fPutMsgAskProceed(iMsg: WORD; psbMsg:POINTER; bBatchChar:BYTE):BOOLEAN; EXTERN; PROCEDURE InitMsg(pbMsgFileName:POINTER; cbMsgFileName:WORD; fInternalMsg:BOOLEAN); EXTERN; PROCEDURE OpenPrintFile(iParam:WORD; fRequired:BOOLEAN; fHeader:BOOLEAN); EXTERN; PROCEDURE PutExpandedMsg(iMsg: WORD; psbMsg:POINTER; pRgSd:POINTER; sRgSd:WORD); EXTERN; PROCEDURE PutHeader(nNewLines:WORD);EXTERN; PROCEDURE PutMsg(iMsg: WORD; psbMsg:POINTER); EXTERN; PROCEDURE PutMsgDecWord(iMsg: WORD; psbMsg:POINTER; w:WORD; nNewLines:WORD); EXTERN; PROCEDURE PutNewLines(nNewLines:WORD);EXTERN; PROCEDURE XErrorExitMsg(ercTermination:ercType; iMsg:WORD; psbMsg:POINTER); EXTERN; BEGIN {Main program} {**** Display the program header (program name + version) ****} PutHeader(3); {**** Open the print file if command parameter 1 is not empty ****} {**** and output the program header to the print file. If the ****} {**** print file cannot be opened then display the print file ****} {**** name and pass the error code to the exit run file. ****} OpenPrintFile(1, False, TRUE); {**** From now on all output procedures that use NPrint or ****} {**** PutChar will write to both the video and the print file. ****} {**** Allocate buffers and open the .bin message file. Use ****} {**** linked-in messages if the message file does not exist, ****} {**** cannot be opened for any reason, or later in the program ****} {**** a message cannot be read (for whatever reason). ****} InitMsg(ADS rgSampleProgBin, UPPER(rgSampleProgBin), TRUE); {**** Print todays date in the following format: ****} {**** ****} {**** Today's date is Monday February 25, 1991. ****} PutExpandedMsg(lrgTodaysDate, ADS rgTodaysDate, ADS NULL, 0); {**** Ask the user to enter a word value, read the user's ****} {**** input and convert the input to a word. Default to 23 ****} {**** if the user only presses the RETURN or GO key. Print 1 ****} {**** carriage return when the input is valid. The value ****} {**** can be entered in decimal or hexadecimal and it cannot ****} {**** be greater than 65535. ****} {**** ****} {**** If, while entering the word value, the user ****} {**** (accidentally) hits the FINISH key, ask for ****} {**** confirmation to exit. If the user selects to continue, ****} {**** remove the confirmation prompt and let him continue ****} {**** with the word input. ****} i := AskOptionalWord(lrgEnterOptWord, ADS rgEnterOptWord, 23, 1); {**** Display a message followed by a decimal value and 2 ****} {**** blank lines. ****} PutMsgDecWord(lrgNumberOfCylinders, ADS rgNumberOfCylinders, i, 3); {**** Ask confirmation to beep. In a batch partition default ****} {**** to FALSE. ****} IF fPutMsgAskProceed(lrgShouldIBeep,ADS rgShouldIBeep,lCancel) THEN erc := Beep; {**** Print two line feeds. ****} PutNewLines(2); {**** Print a linked-in message, i.e. a message that does not ****} {**** exist in the SampleProgMsg.bin message file. ****} PutMsg(lrgNotInBinFile, ADS rgLinkedInMsg); {**** Print an exit message, close the print file and ****} {**** terminate the program. ****} XErrorExitMsg(0, lrgEndOfSamplProgMsg, ADS rgEndOfSamplProgMsg); END. Sample Program Message File $TITLE('SampleProgMsg.txt V12.1.0 M01 === 10/04/91') ;**************************** MODULE HEADER ***************************; ;**********************************************************************; ;* *; ;* MACHINE: B26/B27/B28/B38/B39/XE520/XE530 *; ;* OS: BTOS, BTOS II and CTOS *; ;* *; ;* CREATED: Kris Van Bogaert *; ;* UNISYS BELGIUM CSE SUPPORT *; ;* Zaventem April 20, 1991 *; ;* *; ;* *; ;* DESCRIPTION: Messages used by PascalSampleProg.run and *; ;* PlmSampleProg.run. *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVVVV/MM PROGRAMMER / DESCRIPTION OF CHANGE *; ;* *; ;* 10/04/91 12.1.0/01 K. Van Bogaert / Added messages 60158-60161 *; ;* 04/20/91 12.0.0/00 K. Van Bogaert / Created *; ;* *; ;* *; ;************************ END OF MODULE HEADER **********************; ;**********************************************************************; Messages used by SampleProg.obj =============================== :40000: "Enter a word (default = %0N) : " :40001: "Number of cylinders: " :40002: "Do you want to hear a beep?" :40003: "Today's date is %D14. " :40004: " End of sample program." ________________________________________________________________________ Messages used by SysExit.obj ============================ :60000: " ***** CANNOT LOAD THE EXIT RUN FILE %0S (ERROR %1N). (Please correct the problem and press %K9 or %K18 to exit) " :60001: " ***** TERMINATION ERROR: %3%1%0N " RESERVE MESSAGE NUMBERS 60002 THROUGH 60100 FOR CTOSKrivabo.lib. ________________________________________________________________________ Messages used by AskProceed.obj =============================== :60101: " (Press %K9 to confirm, %K4 to deny, %K8 to exit) " :60102: " (Press %K8 or %K9 to exit, or any other key to continue) " RESERVE MESSAGE NUMBERS 60102 THROUGH 60149 FOR CTOSKrivabo.lib. ________________________________________________________________________ Messages used by GetParam.obj ============================= :60150: "Parameter on line %0N of the form is missing." :60151: "SubParameter %1N on line %0N of the form is missing." :60152: "%0S: Is not a numeric string." :60153: "%0S: Is not between %1N and %2N." :60154: "%0S: Is not between %1Hh and %2Hh." :60155: "%0S: Is neither %1S or %2S." :60156: "%0S: Is too long (max. %1N characters)." :60157: "Case value must be two characters." :60158: "Parameter on line %0N of the form: Password is too long (max. 12 characters). " :60159: "SubParameter %1N on line %0N of the form: Password is too long (max. 12 characters). " :60160: "Parameter on line %0N of the form: File specification is missing." :60161: "SubParameter %1N on line %0N of the form: File specification is missing." RESERVE MESSAGE NUMBERS 60162 THROUGH 65534 FOR CTOSKrivabo.lib. MESSAGE NUMBER 65535 WILL NEVER BE USED. THIS ALLOWS US TO USE THIS NUMBER TO INDICATE THAT THE LINKED-IN MESSAGE SHOULD BE USED. ________________________________________________________________________ 2 Footer Contents Contents # # CTOSKrivabo.Lib Procedural Interface Reference About This Manual About This Manual # # CTOSKrivabo.Lib Procedural Interface Reference 1 Operations by Function Operations by Function -# Figure 1-1. Operations by Function (Page 1 of 3) -# CTOSKrivabo.Lib Procedural Interface Reference Figure 1-1. Operations by Function (Page 2 of 3) Operations by Function -# Figure 1-1. Operations by Function (Page 2 of 2) Operations by Function -# Figure 1-1. Operations by Function (Page 3 of 3) -# CTOSKrivabo.Lib Procedural Interface Reference 2 Operations Operations -# -# CTOSKrivabo.Lib Procedural Interface Reference AskByte AskByte ________(continued) AskByteX AskByteX ________(continued) AskConfirmFinish AskLfa AskLfa ________(continued) AskLfaX AskLfaX ________(continued) AskOptionalByte AskOptionalByte ________(continued) AskOptionalLfa AskOptionalLfa ________(continued) AskOptionalQuad AskOptionalQuad ________(continued) AskOptionalWord AskOptionalWord ________(continued) AskQuad AskQuad ________(continued) AskQuadX AskQuadX ________(continued) AskSbString fAllocMsgBuffers AskSbString ________(continued) _______(continued) AskSbString InitMsg ________(continued) AskWord AskWord ________(continued) AskWordX AskWordX ________(continued) CheckFileName CheckFileName ________(continued) CheckFileSpec CheckFileSpec ________(continued) ClosePrintFile DecQdOut EnableLineWrap EnableLineWrap ________(continued) fAllocGetMsgBuffer fAskProceed fAskYesOrNoBlank fAskYesOrNoBlank ________(continued) _______(continued) fAskYesOrNoBlank fGetByteParamX fGetByteParamX ________(continued) fGetFileAndPswdParam fGetFileAndPswdParam ________(continued) fGetOptByteParam fGetOptByteParam ________(continued) fGetOptLfaParam fGetOptLfaParam ________(continued) fGetOptQuadParam fGetOptQuadParam ________(continued) fGetOptSbStringParam fGetOptSbStringParam ________(continued) fGetOptWordParam fGetOptWordParam ________(continued) fGetOptYesOrNoParam fGetOptYesOrNoParam ________(continued) fGetParam fGetParam ________(continued) fGetProceed fGetPswdParam fGetPswdParam ________(continued) fGetQuadParamX fGetQuadParamX ________(continued) fGetStringParamX fGetStringParamX ________(continued) fGetWordParamX fGetWordParamX ________(continued) fGetYesOrNoBlankParam GetYesOrNoBlankParamX fGetYesOrNoBlankParam ________(continued) fPutExpMsgAskProceed fPutExpMsgAskProceed ________(continued) fPutMsgAskProceed fPutMsgAskProceed ________(continued) fRqExists fRqServed GetByteParam GetCaseParam GetLfaParam GetMsgX GetMsgX ________(continued) GetQuadParam GetSbStringParam GetSbStringParam ________(continued) GetWordParam GetYesOrNoBlankParam GetYesOrNoBlankParam ________(continued) GetYesOrNoBlankParamX ________(continued) HexDump HexQdWithHOut HexWdWithHOut HexWithHOut InitLocalMsgTable InitLocalMsgTable ________(continued) InitMsg MapVidAttrToGPS MapVidAttrToGPS ________(continued) NlsMsgStrCollate NlsMsgStrCollate ________(continued) NlsMsgStringCollate NlsMsgStringCollate ________(continued) NlsMsgStringEqual NlsMsgStringEqual ________(continued) NlsMsgStrULCmpB NlsMsgStrULCmpB ________(continued) NPrint NPrint ________(continued) OpenPrintFile POPLineWrap POPPrintFileStatus POPVideoStatus PrintFileClose PrintFileNPrint PrintFileOpen PrintFileOpen ________(continued) PrintFilePutChar PrintFilePutHeader PrintFileSbprint PrintFileStatus PrintFileStatus ________(continued) PUSHAndEnableLineWrap PUSHAndEnableLineWrap ________(continued) PUSHAndEnablePrintFile PUSHAndEnableVideo PutChar PutExpandedMsg PutExpandedMsg ________(continued) PutExpandedMsgByte PutExpandedMsgData PutExpandedMsgData2 PutExpandedMsgData2 PutExpandedMsgData2 ________(continued) PutExpandedMsgData3 PutExpandedMsgData3 ________(continued) PutExpandedMsgQuad PutExpandedMsgSbString PutExpandedMsgSbStrings PutExpandedMsgSbStrings ________(continued) PutExpandedMsgWord PutExpandedSbString PutFlag PutFlag ________(continued) PutHeader PutMsg PutMsgDecQuad PutMsgDecQuad ________(continued) PutMsgDecWord PutMsgDecWord ________(continued) PutMsgFlag PutMsgFlag ________(continued) PutMsgHexByte PutMsgHexByte ________(continued) PutMsgHexQuad PutMsgHexQuad ________(continued) PutMsgHexWord PutMsgHexWord ________(continued) PutNewLines PutSpaces ReadKbdChar ResetExitMsg ResetMsg ReturnExpandedMsg ReturnMsg ReturnExpandedMsg ________(continued) ReturnMsg ________(continued) SetExitMsg Tell VideoStatus VideoStatus ________(continued) XErrorExit XErrorExit ________(continued) XErrorExitMsg XErrorExitString A Software Installation Software Installation -# Software Installation -# B CTOSKrivabo.Lib Messages CTOSKrivabo.Lib messages -# CTOSKrivabo.Lib messages -# C PL/M-86 and Pascal Sample Programs PL/M-86 and Pascal Sample Programs -# "HI"HY'@  @G H)@  G HGHG HG H@*(Ah. !"#%&')+,U CEPQCDEFGH@  GH@  GH@  @  GH@  @G H)G H@G H5Ah. ! #$%&'K)*+K,>?U'Ah. !#%&')+,UFGH !$7:WYxyً$:Yy GH GH GH GH@  X (( 1=GH G H@ X 1=G H5898IS G H G H@ X 1=G H GH@  X (( 1=GH GH  &);>FIR)>IV  GH  GH  GH  GH@  X (( 1=GH  G HG H  G H)->BSW`dnr̃-BWdrه GH GH GH GH GH GH@  X (( 1=GH GH  .2AE2FE GH GH GH GH@  X (( 1=GH GH#37K#7O GH GH GH@  X (( 1=0Ah. !#$%&'K)*+K,>?UGH'+=AQUkoʁʖ+AUoׅך #GH "GH !GH  GH GH GH@  X (( 1=GH GH04FJ_cnr̒4Jcrكٖ *GH )GH (GH 'GH &GH %GH@  X (( 1=GH $GH*.>BY]sẘ̙.B]wَٝo 1GH 0GH /GH .GH -GH ,GH@  X (( 1=GH +GH!%37DHQUcgy%7HUg~ 8GH 7GH 6GH 5GH 4GH 3GH@  X (( 1=GH 2GH .3JOX]3O^] =GH <GH ;GH :GH@  X (( 1=GH 9GH$)6;N);S5 @GH ?GH >GH@  X (( 1=-Ah. !#%&'K)*+K,>?UGH$);@UZmrʃʐ)@Zr׈ו GGH FGH EGH DGH CGH BGH@  X (( 1=GH AGH&+?DTYin̓+DYnل٘W NGH MGH LGH KGH JGH IGH@  X (( 1=GH HGH05GL]by~̖̯5Lb~ٛٴ UGH TGH SGH RGH QGH PGH@  X (( 1=GH OGH#(<AUZot̢̉(AZtَ٧ \GH [GH ZGH YGH XGH WGH@  X (( 1=GH VGH ";@TYns"@Yts aGH `GH _GH ^GH@  X (( 1=GH ]GH ',;,@ dGH cGH bGH@  X (( 1=0Ah. !#$%&'K)*+K,>?UGH%*9>MRafsxʃ*>Rfx׈ kGH jGH iGH hGH gGH fGH@  X (( 1=GH eGH%*49LQ\amrx*9Qar}Y rGH qGH pGH oGH nGH mGH@  X (( 1=GH lGH #(7<NS(<SG H wGH vGH uGH tGH@  X (( 1=GH sGH  '*7:TWd*:WgŽ {GH zG H yGH@  X (( 1=GH xG H@ X 1=G H'*++*/Ah. ! #$%&'K)* +K,?UFGH }GH@  X (( 1=GH |G H 7߲87@ T GH GH@GHGH@= GH BGH@,=BGH ƤRƆʘʥ9Rʇ¤@ GGH @ T *Ah. !#%&'=)* +=,?UGHFGH@ `GH #$UVĉĥ67IJF"Tܥ5ڲGH@= GHGH!@ H @*Ah. !#%&'=)* +=, ?UGH @AijĐĺ?hGH@= GH@ 1GH!@ H *Ah. !#%&'=)* +=, ?UGH YZo=ͶͭYo GH@= GH*Ah. !#%&'=)* +=, ?UGH@ 1@GH  (ŔTUVWXYZ[\]S@@,Ah. !#%&'=)* +=, ?UGHFGHGHޫGH BGH BGHO@ ,=P BH*/Ah. ! #$ %& '=)+=,@UFGHđ˓Ɠ5Ah. !" #%')* +,7p@IU,Ah. !" #%')* +,@UFGH@GH%3qr҆΋):A`jҏΕ%3׆ɋ*:A`j׏ɕ)5Ah. !" #%')* +,67p@IU@ GHGH"@GH$%$GH@3Ah. !" #%& ')+,7p@IUGH $gx$gx@ GH@GH"@5Ah. !" #%& ')+,67p@IUGH =>=@ GHFGH#@6Ah. !" #%&')*+,7p@IUGH"  ! FGH@ GH@8Ah. !" #%&')*+,67p@IUGH"k@ BGH BGHO@ ,=P  BH*2Ah. ! #$%&'=)*+=,@UFGH ċ^_`abcdefg]݋FGH@@,Ah. !#%&'=)*+=,@U@GH 2> 2>@GH@ BGH@= BGH/Ah. !#$%&'K)*+K,@UFGH 3[ahąЎ%L3[a%ML0Ah. !#$%&'K()*+K,@U@ L @@GHFGHGH$@GH b bݒ@  FGH BGH@= BGH/Ah. !#$%&'K)*+K,@UGH DNXYZo0 "Zo10@ L @  FGHGH$@GH@GH rx|~ŏ:Exń[:x[@ d6@c@@GH"GH$GH@ L 3Ah. !"#$%&'K()*+K,@UFGHĸݺ &؛  @GH@GHGH"@ h -f @ L-f GH55`GH@FGH BGH@= BGH/Ah. !#$%&'K)*+K,@UGH  <BFH34|͍Ţ+ |ɢ,+@ L @FGH@GH GH"GH$@0GH@GH ./ /.:/Ah. !#$%&'K)*+K, @UGH@@,Ah. !#%&'K)*+K,@UGH .:OYcdezؠح .:/ezܠ   @ L GH$@GH@GH@FGH BGH@= BGH JX~JX~@@GHGH@ L 0Ah. !#$%&'K()*+K, @UFGH a aݞ@  FGH BGH@=BGH/Ah. !#$%&'K)*+K, @UGH Q[efg|= 0g|>=@ L @  FGHGH$@GH@GHtz~ő<GzņV~<zV~@ d6@c@@GH"GH$GH@ L 3Ah. !"#$%&'K()*+K, @UFGHĺݼ &؝  @GH@GHGH"@ h -f @ L-f GHLL@@FGH BGH@=BGH2Ah. !#$%&'K()*+K, @UGH mswy'1;<=Rٌ͒ٙ͹@L͐Ş =R݌ϒ@ɞ0Ah. !#$%&'K()*+K,@U@ L @FGHGH$@GH@GHKKGH@FGH BGH@=BGH/Ah. !#$%&'K)*+K,@UGH y̓ԅ2<FGH]ٗ͝٤MY͖Ť  H]ݗϝMɤ0Ah. !#$%&'K()*+K,@U@ L @FGHGH$@GH@GHLL@@FGH BGH@=BGH2Ah. !#$ %&'K()*+K,@UGH }ԃ͇ԉ7AKLMbٜ͢٩ P\͠Ů MbݜϢ Pɮ0Ah. !#$ %&'K(!)*+K,@U@ L @FGHGH$@GH@GHLL @@FGH BGH@=BGH2Ah. !#$"%&'K()*+K,@UGH rx|~,6@ABWّ͗ٞ; EQ͕ţ BWݑϗEɣ0Ah. !#$"%&'K(#)*+K,@U@ L @FGHGH$@GH@GH 2 2@@FGH BGH@=BGH2Ah. !#$$%&'K()*+K,@UGH  $.89:Ow}ل͡٪3Ah :Ow}3Aih0Ah. !#$$%&'K(%)*+K,@U@ L @FGHGH$@GH@GH b bݢ@  FGH BGH@=BGH/Ah. !#$&%&'K)*+K,@UGH T^hij @ 2jA@@ L @  FGHGH$@GH@GH rx|~ŏ:Exń[:x[@ d6@c@@GH"GH$GH@ L 3Ah. !"#$%&'K(')*+K,@UFGHĸݺ &؛  @GH@GHGH"@ h -f @ L-f GHaaݜ@  FGH BGH@=BGH/Ah. !#$(%&'K)*+K,@UGH  .LSYٞ٤'-egj; Ϟ.L ^ <;FGH#@  8GH@ L@GH"@ L @GH@GH)/6S\ē)/S݄@ L @  FGH@GH@0Ah. !#$)%&'K(*)*+K,@UGH yŅ͆y؆GH"0Ah. !#$+%&'K(,)*+K,@UGH$@ L @ LGH@FGH( C(N DC@GH@GH@ h -f @ L-f GH@ d6@c@@GH" ./ /.72Ah. !#$-%&'K()*+K,@UGH@@,Ah. !#%&'K)*+K,@UGH 1= JT^_`u؝ت1=)`uܝ @ L GH$@GH@GH@FGH BGH@=BGH Q_Q_ކ@@GHGH@ L 0Ah. !#$-%&'K(.)*+K,@UFGH b bݗ@  FGH BGH@=BGH/Ah. !#$/%&'K)*+K,@UGH IS]^_t5 '_t65@ L @  FGHGH$@GH@GH rx|~ŏ:Exń[:x[@ d6@c@@GH"GH$GH@ L 3Ah. !"#$%&'K(0)*+K, @UFGHĸݺ &؛  @GH@GHGH"@ h -f @ L-f GH\[\@  FGH BGH@=BGH2Ah. !#$1%&'K(2)*+K,!@UGH  z{܇ag} Փz{ag}@ L @ L@@  @GH@GHGH@ @ FGH޼@@GHGH@ L 0Ah. !#$1%&'K(2)*+K,"@UFGH]]F@  FGH BGH@=BGH2Ah. !#$3%&'K(4)*+K,#@UGH  /|͂Ԙ%0 /|ςߘ%GH"@ L @ L@@  FGH@GH@GH !RSŀů12g R1g+FGH@ h N@GH@ dN@0Ah. !#$3%&'K(4)*+K,$@UGH"Љ՗̉ٗBGH/Ah. !#$5%&'K)*+K,%@U@@GHGH@ L FGH +*++*@GH@GH@FGH BGH@=BGH / /.c@=/Ah. !#$6%&'K)*+K,'@U@@,Ah. !#%&'K)*+K,&@UGH  # 4 # 54@ L @GH@GH@FGH BGH@=BGH / /.@=/Ah. !#$7%&'K)*+K,)@U@@,Ah. !#%&'K)*+K,(@UGH S_TZc,7ZS_TZ,WXY[Z@ L @GH@GH@FGH BGH@=BGH@@GHGH@ L 0Ah. !#$6%&'K(8)*+K,*@UFGHAAݲGH@FGH BGH@=BGH/Ah. !#$9%&'K)*+K,+@UGH  ͸1?͟ Wϸ1?rstuvwxyz{q@@,Ah. !#%&'K)*+K,,@U@ L @FGH@GH@GHKKaGH@FGH BGH@=BGH/Ah. !#$)%&'K)*+K,-@UGH  $9qwԄ͢ԴD ϊϲ$9qwߢ ED@@,Ah. !#%&'K)*+K,.@U@ L @FGH@GH@GH 0 0 @@FGH BGH@=BGH2Ah. !"8#$:%&'K)*+K,/@UGH  79NThnyz.0DJqw͈ŝ"-/ͤŲ Һɝɲ@ L @FGH@GH GH"GH$@0GH@GH / /.+@=/Ah. !#$;%&'K)*+K,1@U@@,Ah. !#%&'K)*+K,0@UGHt8;QSرؽ%'Pjt}Pj@ L@@GH"GH%@GH@GH@  FGH BGH@= BGH]^_cfkm+Ϫ !ϒ^-֩’GH!@ @ GH%@FGHGH@  8GHeFGH@GHGH!@ @ 0Ah. !#$%&'K(<)*+K,2@UGHbhoЌŕ)7RUlnЪдл!Хbhٌ)ٻ٥0Ah. !#$=%&'K(<)*+K,3@UGH$GH%@ L @GH@  FGH(ҿ(N@GH@GH@ h -f @ L-f GH@ d6@c@@GH" / /.:@=/Ah. !#$>%&'K)*+K,5@U@@,Ah. !#%&'K)*+K,4@UGH Wc*3Rgخؽ Wc&Rg߮2 @ L @GH@GH@  FGH BGH@=!BGH '.S_Ţ"0^'S"0_^@@GH@ L GH0Ah. !#$%&'K(?)*+K,6@UFGHbb@  FGH BGH@="BGH/Ah. !#$@%&'K)*+K,7@UGH "7Ԃ͈ԑͰԺ*ͺFT͈ m"7ۂψFTω0Ah. !#$%&'K(A)*+K,8@U@ L @  FGH@GH@GHEE@  FGH BGH@=#BGH/Ah. !#$B%&'K)*+K,9@UGH  ͚ů:F ϒϚɯ89;:0Ah. !#$%&'K(C)*+K,:@U@ L @  FGH@GH@GHBB݆@  FGH BGH@=$BGH/Ah. !#$D%&'K)*+K,;@UGH  ͦŻ!DO  Ϡ+ϦɻBCE D 0Ah. !#$%&'K(E)*+K,<@U@ L @  FGH@GH@GHEEݏ@  FGH BGH@=%BGH/Ah. !#$F%&'K)*+K,=@UGH  ͪſ'JV Ϣ-ϪɿHIKJ0Ah. !#$%&'K(G)*+K,>@U@ L @  FGH@GH@GHgg?@  FGH BGH@=&BGH/Ah. !#$H%&'K)*+K,?@UGH  >SԣͩԲ I yϻ>SۣϩIA0Ah. !#$%&'K(I)*+K,@@U@ L @  FGH@GH@GHͶѶ|'BGH/Ah. !#$J%&'K)*+K,A@U@@GH@ LGH@FGH DP*09W`DPf*0W@ L @GH@GH@  FGH BGH@='BGH @@GHGH@ L 0Ah. !#$%&'K(K)*+K,B@UFGHMM@  FGH BGH@=(BGH/Ah. !#$L%&'K)*+K,C@UGH  ͡ӤͼӾ̈́؅͉ӌ͑ӓ,Q=@EGIJͼ~Ŕ xτSHɔ~0Ah. !#$%&'K(M)*+K,D@UGH!@ @ FGHGH%@GH@GH7=FdmЎś=K~7=dَ=K~@GHGH%@ L @GH@  FGH @ @@  FGH BGH@=)BGH/Ah. !#$N%&'K)*+K,E@UGH  @FOmv͗ԣ̓őͺ l @Fmɑϻ0Ah. !#$%&'K(O)*+K,F@U@ L @  FGH@GH@GH 0 0GH@FGH BGH@=*BGH/Ah. !#$P%&'K)*+K,G@UGH >@TŹԇ͘ŭ$,2=?ʹ Ϙɭ,Ah. !#%&'K)*+K,H@U@ L @FGHGH$@GH@GH ./< .<-FGH BGH@=+BGH/Ah. !#$Q%&'K)*+K,I@U@@GH9EXaـѕ$0hq\jٗ9EQۀՕ$i\jۘh0Ah. !#$%&'K(R)*+K,J@U@ L @GH@GH@  FGHXX@  FGH BGH@=,BGH/Ah. !#$S%&'K)*+K,K@UGH   gmv͔ԝ;#[f" j  gm[#"0Ah. !#$%&'K(T)*+K,L@U@ L @  FGH@GH@GHqq @  FGH BGH@=-BGH/Ah. !#$U%&'K)*+K,M@UGH  ͝ԫekt͒ԜͽO ϙMekO0Ah. !#$%&'K(V)*+K,N@U@ L @  FGH@GH@GH ͎ŗO юONY/Ah. !#$W%&'K)*+K,O@U@@GH@ L @ LGH@FGH Wc/8Wlس Wc+Wl߳  @ L @GH@GH@  FGH BGH@=.BGH -4YeŨ(6d-Y(6ed@@GHGH@ L 0Ah. !#$%&'K(X)*+K,P@UFGHEE9@  FGH BGH@=/BGH/Ah. !#$Y%&'K)*+K,Q@UGH ͍ӐͨӪ͠IJͳӶͻӽͿ23 nH1GH!@ @ FGHGH%@GH@GH CIRpyěCIp@ L @@  FGH@GH2Ah. !#$Z%&'K([)*+K,R@UGH]]݅@  FGH BGH@=0BGH/Ah. !#$\%&'K)*+K,S@UGH  ͮװ͉܊GI]c͊א͡Ŷ (  ɶ&)(@ L @  FGH@GH GH"GH$@0GH@GH ŝooޱGHGH$@ L@GH@ L 0Ah. !#$:%&'K(])*+K,T@UFGHCDUCUB BGH@=1BGH/Ah. !#$^%&'K)*+K,U@U@GH@GH 7C ֳnpքֱ ?7C6=>@?@ L @GH GH"GH$@0GH@GH@FGH  KQY_jl ! @@GHGH$GH@ L 0Ah. !#$:%&'K(_)*+K,V@UFGH - -GH@FGH BGH@=2BGH/Ah. !#$`%&'K)*+K,W@UGH  ZoԐ͖Ԥ͹ Zoؐϖ߹@@,Ah. !#%&'K)*+K,X@U@ L @FGH@GH@GH - -GH@FGH BGH@=3BGH/Ah. !#$a%&'K)*+K,Y@UGH  DYz̀Ԏͣű DYzπߣɱ @@,Ah. !#%&'K)*+K,Z@U@ L @FGH@GH@GH77s@  FGH BGH@=4BGH2Ah. !"8#$b%&'K)*+K,[@UGH  !6^dm͋Ԕ͵j ϕ!6^d=>?@ABCDEFk<j@@,Ah. !#%&'K)*+K,\@U@ L @  FGH@GH@GH77@  FGH BGH@=5BGH/Ah. !#$c%&'K)*+K,]@UGH   Xf ? Xfϓ@@,Ah. !#%&'K)*+K,^@U@ L @  FGH@GH@GH 4 4y@  FGH BGH@=6BGH2Ah. !"8#$d%&'K)*+K,_@UGH  /Djpy͗Ԡ s ϣ/Djp FGHIJKLMNOtEs@@,Ah. !#%&'K)*+K,`@U@ L @  FGH@GH@GH K KݻGH@FGH BGH@=7BGH/Ah. !#$e%&'K)*+K,a@UGH  +jbw׸;͍p ҝbw۸ݾqp@ L@ L @@FGH@0GH@GH Wa{ńW{@@GHGH@ L 0Ah. !#$:%&'K(f)*+K,b@UFGH77ރ@  FGH BGH@=8BGH2Ah. !"8#$g%&'K)*+K,c@UGH  1Fnt}͛Ԥ z ϥ1Fnt MNOPQRSTUV{Lz@@,Ah. !#%&'K)*+K,d@U@ L @  FGH@GH@GHYY@  FGH BGH@=9BGH/Ah. !#$h%&'K)*+K,e@UGH  ͻ%CLm~ͻԼ |ϻCmm0Ah. !#$%&'K(i)*+K,f@U@ L @  FGH@GH@GHsցͲsځܲ):BGH2Ah. !"8#$j%&'K)*+K,g@U@@GH@ LGH@FGH  6B\qؙب=Kw 6B\qߙ=Kxw@ L @GH@GH@  FGH BGH@=:BGH / /.@=/Ah. !#$k%&'K)*+K,i@U@@,Ah. !#%&'K)*+K,h@UGHBNBNGH@ L@@GH"@GH@GH@  FGH BGH@=;BGH_`dgln,ϯ!#%<y_.Ѯ&%GH!@ @ GH%FGH@GH@  8GHuv7Lt7LFGH@GHGH!@ @ 0Ah. !#$%&'K(l)*+K,j@UGH,2;YbЄޒ,2Yل/Ah. !#$Z%&'K)*+K,k@U@GH@ L @GH@  FGH P\+- P\ ?@ L@@GH"GH%@GH@GH@  FGH BGH@=<BGH_`dgln,ϰ"$%<y_.ѯ&%GH!@ @ GH%FGH@GH@  8GHuv7Lt7LFGH@GHGH!@ @ 0Ah. !#$%&'K(m)*+K,l@UGH9?HfoАŝHVЋ9?fِHVҌGH@GHGH%@ L @GH@  FGH 3 3ݍGH@FGH BGH@==BGH/Ah. !#$n%&'K)*+K,m@UGH  ͔ũW^%3͈ ϔɩW%3[\]^_`abcdZ@@,Ah. !#%&'K)*+K,n@U@ L@ L @FGH@GH@GH""]GH@FGH BGH@=>BGH/Ah. !#$o%&'K)*+K,o@UGH  i <=>?@ABCDEj;i@@,Ah. !#%&'K)*+K,p@U@ L @FGH@GH@GH""]GH@FGH BGH@=?BGH/Ah. !#$p%&'K)*+K,q@UGH  i <=>?@ABCDEj;i@@,Ah. !#%&'K)*+K,r@U@ L @FGH@GH@GH  9GH@FGH BGH@=@BGH/Ah. !#$q%&'K)*+K,s@UGH  ͨŽI Ϩɽ !"#$%JI@@,Ah. !#%&'K)*+K,t@U@ L @FGH@GH@GHOO-GH@FGH BGH@=ABGH/Ah. !#$r%&'K)*+K,u@UGH  "͒Ԛ%3d tS"ܒ%3ed0Ah. !#$)%&'K(s)*+K,v@U@ L @ L@FGH@GH@GH 7 7JGH@FGH BGH@=BBGH/Ah. !#$t%&'K)*+K,w@UGH  ͤԷ'<ioك {'<io݃0Ah. !#$)%&'K(,)*+K,x@U@ L@FGHGH$@GH@GHМժ̜٪CBGH/Ah. !#$u%&'K)*+K,y@U@@GHGH@ L FGH 5A 5A{ @ L@@GH@GH@  FGH BGH@=CBGH 7OPijĶ6Oi@GH@ LGH@ dN@GH"2Ah. !#$u%&'K(v)*+K,z@UGH01A0A/@  FGH BGH@=DBGH/Ah. !#$w%&'K)*+K,{@U@GH  8w3Ԍ͒Ԣfgkx 1 3یϒe 21GH!@ @ @ L @  FGH@GH@GH />/ @ L T@ L@GH@ L 3Ah. !x"#$%&'K(x)*+K,|@UFGH+,8G0<DPWcɖ΢ɣۤ8פ@@GHGH@ L TFGHGHGH$JJ@  FGH BGH@=EBGH/Ah. !#$y%&'K)*+K,}@UGH  =>KQXx e<KQvyx@ L @  FGHGH!@ @ @GH@GH `aoaoޟ@@GHGHGH@ L 0Ah. !#$%&'K(z)*+K,~@UFGHFF@  FGH BGH@=FBGH/Ah. !#${%&'K)*+K,@UGH  ab(=ou|͜ ψ`(=ou@ L @  FGHGH!@ @ @GH@GH `aoaoޝ@@GHGHGH@ L 0Ah. !#$%&'K(|)*+K,@UFGH^^=@  FGH BGH@=GBGH/Ah. !#$}%&'K)*+K,@UGH  6uFL\ͣ͞԰͚͟Ԭ+,0= FL*GH!@ @ @ L @  FGH@GH@GH%.2>Sd:%2>S:w@@ L T@ L@GH@ L 0Ah. !#$%&'K(~)*+K,@UFGH>?E>E= BGH@=HBGH/Ah. !#$%&'K)*+K,@U@GH@GH )ֳ!3ֆMOPE֭)߅NE@ x3 FGH&@  3GH!@ H @GH@GH@FGH28Jxņ28Jxެ@ L@GH@FGH@0Ah. !#$)%&'K()*+K,@UGH;;@@FGH BGH@=IBGH2Ah. !"X#$%&'K)*+K,@UGH "+sͻ2;Zd͝ū "sZߝɫ@@,Ah. !#%&'K)*+K,@U@ L @FGH@GH@GH  ;GH@FGH BGH@=JBGH/Ah. !#$%&'K)*+K,@UGH O "#$%&'()*+P!O@@,Ah. !#%&'K)*+K,@U@FGH@GH@GH((GH@FGH BGH@=KBGH/Ah. !#$%&'K)*+K,@UGH ezԍ͎Ŝ ez؎ɜ@@,Ah. !#%&'K)*+K,@U@FGH@GH@GH  ݜGH@FGH BGH@=LBGH/Ah. !#$%&'K)*+K,@UGH 0?@Nͪ 0@N}~|@@,Ah. !#%&'K)*+K,@U@FGH@GH@GH  ݚGH@FGH BGH@=MBGH/Ah. !#$%&'K)*+K,@UGH  ͚.=>Lͨ .>L{|}~z@@,Ah. !#%&'K)*+K,@U@FGH@GH@GH77kGH@FGH BGH@=NBGH/Ah. !#$%&'K)*+K,@UGH  wŌԱͷb wɌرϷ56789:;<=>c4b@@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH55n@@FGH BGH@=OBGH2Ah. !#$%&'K()*+K,@UGH ^_9 Ϧ^:9@ P <GH$@ X<FGH@GH@GH;AO,:g;A,:hg@ L @@FGH@GH2Ah. !#$%&'K()*+K,@UGH))0GH@FGH BGH@=PBGH/Ah. !#$%&'K)*+K,@UGH  ońԚ͠Ԥ5 oɄؚϠأ     65@@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH44ݚGH@FGH BGH@=QBGH/Ah. !#$%&'K)*+K,@UGH  ͱչͮ&4͔ ρϮ&4ghijklmnopf@@,Ah. !#%&'K)*+K,@U@ L@FGH FGH&@GH@GH99ݨGH@FGH BGH@=RBGH/Ah. !#$%&'K)*+K,@UGH  ͞ų1?͝ Ϟɳ1?pqrstuvwxyo@@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH99ސ@@FGH BGH@=SBGH2Ah. !#$%&'K()*+K,@UGH  ͜:Ov|ԃ  W :Ov| XW@  pT@  lTGH$@ LT@ L @FGH@GH@GH  Őŝ;@  lTGH$@ LTGH@ L 0Ah. !#$%&'K()*+K,@UFGH>?T>T= BGH@=TBGH/Ah. !#$%&'K)*+K,@U@GH@GHKW TZc3GKW TZ/0124 30Ah. !#$%&'K()*+K,@U@ L @GH@GH@  FGHCC݅@  FGH BGH@=UBGH/Ah. !#$%&'K)*+K,@UGH  kŀԪͰԺ p kɀ۪ϰ CDEFGHIJKLqBp@@,Ah. !#%&'K)*+K,@U@ L @  FGH@GH@GH;;&@  FGH BGH@=VBGH/Ah. !#$%&'K)*+K,@UGH  !6\blͫŹ !6\bɹ@@,Ah. !#%&'K)*+K,@U@ L @  FGH@GH@GH  GH@FGH BGH@=WBGH/Ah. !#$%&'K)*+K,@UGH  ͌ԶTiv|ͥų Tiv|ܥɳ @@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH==@  FGH BGH@=XBGH/Ah. !#$%&'K)*+K,@UGH  .4;XaYeN͜ .4XYe@ L@@ L @@  FGH@0GH@GHLZĈLZ݈@@GH0Ah. !#$:%&'K()*+K,@UGH::@  FGH BGH@=YBGH/Ah. !#$%&'K)*+K,@UGH  0U[b׈ׂ͎̀Ŝ 0U[ɜ@ L@@ L @@  FGH@0GH@GH / /.@=2Ah. !"#$%&'K)*+K,@U@@,Ah. !#%&'K)*+K,@UGH FRFR@@ L @@0GH@GH@  FGH BGH@=ZBGH ƆϔʆӔ@@,Ah. !#%&'K)*+K,@U@@GH@ LGH]]@  FGH BGH@=[BGH/Ah. !#$%&'K)*+K,@UGH  ?Tכ͡רc ?Tޛdc@ L@@ L @@  FGH@0GH@GH1?r1?sr@@GH@ LGH@0Ah. !#$%&'K()*+K,@UFGHoo@  FGH BGH@=\BGH/Ah. !#$%&'K)*+K,@UGH  AVׯ͵׼w AVޯxw@ L@@ L @@  FGH@0GH@GH0@_m0@_mޠ@@GH@ LGH@0Ah. !#$%&'K()*+K,@UFGH:: @  FGH BGH@=]BGH/Ah. !#$%&'K)*+K,@UGH  1V\c̀׉́׃͏ŝ 1V\ɝ@ L@@ L @@  FGH@0GH@GH / /.@=/Ah. !#$%&'K)*+K,@U@@,Ah. !#%&'K)*+K,@UGH IUOdؕآIUOdߕ\@@ L @@0GH@GH@  FGH BGH@=^BGH Q_Q_ړ’@@,Ah. !#%&'K)*+K,@U@@GHGH@ LFGHYYC@  FGH BGH@=_BGH/Ah. !#$%&'K)*+K,@UGH  Z`g̈́׍ͅב Z`@ L@@ L @@  FGH@0GH@GH ft ftޫ@@GHGH@ L@0Ah. !#$%&'K()*+K,@UFGH:: @  FGH BGH@=`BGH/Ah. !#$%&'K)*+K,@UGH  1V\c̀׉́׃͏ŝ 1V\ɝ@ L@@ L @@  FGH@0GH@GH / /.z@=/Ah. !#$%&'K)*+K,@U@@,Ah. !#%&'K)*+K,@UGH @L"{؇@L{K@@ L @@0GH@GH@  FGH BGH@=aBGH Ɵƃԑʃؑ@@,Ah. !#%&'K)*+K,@U@@GHFGH@ LGH  @  FGH BGH@=bBGH/Ah. !#$%&'K)*+K,@UGH  ͑Ӕ͊د%&hkoqͅͶ ϱ$@ L @  GH!@ @ FGHGH%@GH@GH676@GH@0Ah. !#$;%&'K()*+K,@UGH " "mGH@FGH BGH@=cBGH/Ah. !#$%&'K)*+K,@UGH  ͱչͥź"y ϊϥɺ"LMNOPQRSTUzKy@@,Ah. !#%&'K)*+K,@U@ L@FGH FGH&@GH@GH݅@  FGH BGH@=dBGH/Ah. !#$%&'K)*+K,@UGH   092@g  02@gf,Ah. !#%&'K)*+K,@U@ L @@  FGH@0GH@GH ./< .<-UFGH BGH@=eBGH/Ah. !#$%&'K)*+K,@U@@GH ,8xэŸپ,8xՍ̸@ L@@ L @@0GH@GH@  FGH<=<@GH@0Ah. !#$%&'K()*+K,@UGH;;@  FGH BGH@=fBGH/Ah. !#$%&'K)*+K,@UGH  2Grx͜ץ͝סͫ׶ 2Grx@ L@@ L @@  FGH@0GH@GH<=<@GH@0Ah. !#$%&'K()*+K,@UGH 5 5@  FGH BGH@=gBGH/Ah. !#$%&'K)*+K,@UGH  ̈́ۅ͉֌͑֓,Q *+͛[pۘۤ͞ ҄S)[pݞ@ L @  GH!@ @ @FGHGH%@0GH@GH ( $.9Vd .8Vdގ@@GH@ L@@ L GH0Ah. !#$;%&'K()*+K,@UFGH;;2@  FGH BGH@=hBGH/Ah. !#$%&'K)*+K,@UGH  Vkז͜ף Vkޖ@ L@@ L @@  FGH@0GH@GH<=<@GH@0Ah. !#$%&'K()*+K,@UGH;;3@  FGH BGH@=iBGH/Ah. !#$%&'K)*+K,@UGH  Wlח͝פ Wlޗ@ L@@ L @@  FGH@0GH@GH<=<@GH@0Ah. !#$%&'K()*+K,@UGH;;3@  FGH BGH@=jBGH/Ah. !#$%&'K)*+K,@UGH  Wlח͝פ Wlޗ@ L@@ L @@  FGH@0GH@GH<=<@GH@0Ah. !#$%&'K()*+K,@UGH & &JGH@FGH BGH@=kBGH/Ah. !#$%&'K)*+K,@UGH  ͐ťԽR ϐɥؽ%&'()*+,-.S$R@@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH  2GH@FGH BGH@=lBGH/Ah. !#$%&'K)*+K,@UGH  ͊şԳ͹@ ϊɟسϹA@@@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH - -GH@FGH BGH@=mBGH/Ah. !#$%&'K)*+K,@UGH  {Őׯ͵ͅœͿ {ɐۯݵɓݿ,Ah. !#%&'K)*+K,@U@ L @@FGH@0GH@GH ./; .;-.FGH BGH@=nBGH/Ah. !#$%&'K)*+K,@U@@GH#ٍѢŸٹ!#ۍբ̹"!@@,Ah. !#%&'K)*+K,@U@GH@GH@  FGH ? ?GH@FGH BGH@=oBGH/Ah. !#$%&'K)*+K,@UGH  oń׸;̀Ŏͷ oɄ۸ݾɎݷ,Ah. !#%&'K)*+K,@U@ L @@FGH@0GH@GH ./@ .@-@FGH BGH@=pBGH/Ah. !#$%&'K)*+K,@U@@GH  #)0MVNZC͑ #)MNZ@ L@ L @@FGH@0GH@GHLWĪ IL JI@@GH@ L FGH0Ah. !#$%&'K()*+K,@UGH : :GH@FGH BGH@=qBGH/Ah. !#$%&'K)*+K,@UGH  ͮ$'z׆ Үz0Ah. !#$%&'K()*+K,@U@ L @@FGH@0GH@GH 0 0ݑ@  FGH BGH@=rBGH/Ah. !#$%&'K)*+K,@UGH  1p͟Ŵ)7͏ ϟɴ)7bcdefghijka@@,Ah. !#%&'K)*+K,@U@ L@@  FGH@GH@GHݷGH@FGH BGH@=sBGH/Ah. !#$%&'K)*+K,@UGH  ͣŸm{ ϣɸm{Ϡ@@,Ah. !#%&'K)*+K,@U@ L@FGH@GH@GH 1 1ު@@FGH BGH@=tBGH2Ah. !#$%&'K()*+K,@UGH  ͔ũSTXYdey ϔɩSd6wxzy@  pT@  lTGH$@ LT@ L @FGH@GH@GH  ʼnŖž@  lTGH$@ LTGH@ L 0Ah. !#$%&'K()*+K,@UFGH:;E:E9 BGH@=uBGH/Ah. !#$%&'K)*+K,@U@GH@GH )wŶ֦λ(6`);mئһ(6a`@ L2Ah. !#$%&'K()*+K,@U@ @ d@GH@GH@FGH==ݥ@  FGH BGH@=vBGH/Ah. !#$%&'K)*+K,@UGH  ͩžNԍ͎ԕ+4-;h ϩɾ+-;ih@ L @ L@@  FGH@GH@GH / /.@=/Ah. !#$%&'K)*+K,@U@@,Ah. !#%&'K)*+K,@UGH HTHN^}HTHN]}@ L@@GH@GH@  FGH BGH@=wBGH . /.FGH@@,Ah. !#%&'K)*+K,@UGH  #@= yBH* BGH@,= xBH*4Ah. ! #$%&'=)*+=,@AUFGH Yjވ'YjD'/Ah. !#$%&'=)*+=,@AU@  $GH@  $GH"@GH BGH ce-.PQhisxrts@ >GGH'@ W@ 0 @GH FGHGH$@GHGH@H* ĭ%(WY7U$ݭZ]%$FGHGH$GH@H*@,Ah. !#%&'=)*+=,@AUGH . /.FGH@@.Ah. !#%&'K)*+K,@AUGH  : {BH* BGH@,= zBH*7Ah. ! "#$%&'=)*+=,@AUFGHT-TF-@ 0Pp@  @`GH(@GH BGH@= {BH* ޿ /Ah. !"#%&'=)*+=,@AU2Ah. !"#$%&'=)*+=,@AUGH(FGH/Ah. !"#%&'=)*+=,@AUGH(F  ] }BH* BGH@,= |BH*7Ah. ! "#$%&'=)*+=,@AUFGHF#P# P@  @`GH(GH@H*@GH BGH@= }BH*qnokq@  @`2Ah. !"#$%&'=)*+=,@AUGH( ] H*/Ah. !"#%&'=)*+=,@AU/Ah. !"#%&'=)*+=,@AUGH(@  @`GH(GH@1Ah. !"#%&'=)*+=,@AUH*K66@  @`,Ah. !#%&'=)*+=,@AUGH(X Y ۻX H*,Ah. !#%&'=)*+=,@AU,Ah. !#%&'=)*+=,@AUGH( ޑ@  @`GH(GH@.Ah. !#%&'=)*+=, @AUH*N*,-45?@*@-@5@*,4?NFGH,@T ! FGH,,FGH+,,Ah. !#%&'=)*+=, @AUGH(  BCGJKOCGKOBJR,@  X (( 1GH@ X 1G H,@, FGH@ !FGH ./012cd0d/c, @, FGH@ !FGH,@ T != FGH,,@  X   1GH 789:;n;n:GH@ @GH$, FGH@ !FGH, FG H/ GH.@ ! FGH-!78klmnψՉϊՋݿJK8klmʿK7؋JZ FGH-,,,@!!FGH+@ @GH$, FGHFGH@ @GH !"#$%&'XYb#Yb"Xb@ ! G H0,@, FGH@ !FGH,FG H/ GH.@ ! FGH-$ #$./AGRSefno҅אȚȬҲ׽  $*5$/Sfo͑ߛ; 5#.Ren 5,,,,,,,,,,@ !,FGH#FGH1@ G H0,% ,2=>OPioz{ȄȖڜߧȲ '.9E>P{ͅըͳE=OzE,+,*,),(,',&,%,$,#,"FGH#FGH1@,!@ ! G H0, " #$-.?EPQ[\ntȏȧҭ׸ $.Q\̀ߐ͹#-P[ ,7,6,5,4,3,2,1,0,/,.@ !,-FGH#FGH1@ G H0,,% *+?@MN`a{ҁ׌ȕҜקȸ  )/:;MNhny+@Na͍߹ ;Ny*?M` :My,C,B,A,@,?,>,=,<,;,:@ !,9FGH#FGH1@ G H0,8$ ,2=>PQkq|}ȓȲڸ6<GHSTgmx>Q}͔HTx=P|GSx,O,N,M,L,K,J,I,H,G,FFGH#FGH1@,E@ ! G H0,D" 6<GHXYqwȕȰݶ,-LR]HY؃͖-]GX,],[,Z,Y,X,W,V,U,T,SFGH#FGH1@,R,Q@ ! G H0,P 6<GH[\w}߈ȔȠȯȾH\Չ͕͡ͰͿG[,g,f,e,d,c,b,a,`,_,^FGH#FGH1@,]@ ! G H0,\ .4?@NOefȄڊߕȵڻ.4?@OfՖ??Ne?,s,r,q,p,o,n,m,l,k,jFGH#FGH1@,i@ ! G H0,h"  6<GHZ[u{ȜȺ  8>IJR H[؇͝ JR GZ IR,,~,},|,{,z,y,x,wFGH#FGH1@,v,u@ ! G H0,t "#23@AUVfgwxȉșȱҷ#3AVgxߊߚ"2@Ufw,,,,,,,,,,@ !,FGH#FGH1@ G H0, ,2=>UVu{߆ȟȴȾ#$9>VՇ͠͵Ϳ$9=U#9,,,,,,,,,,FGH#FGH1@,@ ! G H0, 4:EF[\yߊȟȸ01:;LR]F\Ջ͠͹1;]E[0:],,,,,,,,,,FGH#FGH1@,@ ! G H0,"  %&=CNO^_v|Ȕȩ!, &O_ۈ͕ۻ, %N^,,,,,,,,,FGH#FGH1@,,,@ ! G H0, (.9:GHSTabpq{|ȏțȷڽ:HTbq|͐͜9GSap{,,,,,,,,,,FGH#FGH1@,@ ! G H0, +1<=IJ^dopȒ=Jp͓̀<Io@ ! FGH-,,,,,FGH#FGH1@,,@ ! G H0,#45678RSTUVWYstґݒғݔҲݳҴݵŹ8Vtו׶7Us,,,,@ ! FGH-,, FGH@ !FGH,FG H/ GH.  */=2h@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@CourierTimes5Times1TimesI Helvetica0 Helvetica) Helvetica! HelveticaGreekTimes$Times HelveticaM HelveticaI HelveticaTimes HelveticaITC Zapf Dingbats Helvetica HelveticaTimes HelveticaTimesITC Zapf Dingbats Courier Helvetica( HelveticaTimes" HelveticaR Helveticab Helvetica` Helvetica* Helvetica$ Helvetica JKJ"  Jn nonnz>%>>% VVV%>V V>%>>>>%zzzo>annnn>>VV>>IIz   ,-,,ddMddot! !! 777 z!77! !!!! oooM!Xd``ddd!!77!!++oA[AWWWWAWAHWWeWHWWssWHWHseWsf9fWWA22AAAVWssssWWHWWddddN-NNoood Yooooo  !! 7!o M!7 7! ! z  oooYoYYYMo!hoooo  77!d''L  <<< <YpYkYkk|YkYYkk8Y .kYkYkYYY|k|Z|kkY@@YYYtk@k@kLkk@@@{{{{wCTCPrCPP]CPCCPPCPCPCPCCC]Px]C]PPCCCCWPPPxx9xPP\\\\mdYvmmddd2cmdcca?iccc22@ddx(<<Fi2<22dddddddddd22iiidxxxn2Zxdxxnxxxn222Td(ddZdd2dd((Z(dddd<Z2dZZZZ</<i<<2dad222A<xdxddndZdddnd<<n<<"<<<dmmmEEEEmZYvmmZZZ-cmZccRSccc-<ZZc<<Zc-c-2ZZZZZZZZZZ22cccPcxnnm<r{dkn|Otn<<vZZrccYO^Jm;ccch^cc^cmOh{Y{YV$Vccc-ZadY---cp,cZmmHcJccYSccccmv{c-mmmmY;EEEEEEYYYY;1{{{EEEEEEYYYFbF]r]]]F]FNNN|]m]N]]|||]NNN]mN|8]]F]]FFF\]||||||]]|||2|]]llllnmnnn7ynyydM|yyy7IZnnIIIn|7I7=nnnnnnnnnn==|||bzIVzzI=IgnIbnbnbInn==n=nnnnIV=nnnnbj,jwII7ndn777IIbbnnnbbbbnnIIbbb(bIInTTTT((((SiSd SdduSdSSdd%SdSdSdSSS uduTuddS,,SSSmd, d,dGdd,,,ssssH[HW{HWWeHWHHWWHWHWHWHHHeWeIeWWHHHH^WWW>WWddddzmzzz=yzyyzMyyy=Ihzz=IIV=I==zzzzzzzzzzII=zI=Iz=zzzI==z=VzIzzznV>VII=zzz===PIzzzzzzzIInn4nIIzTTTTnmnnn7ynyysMyyy7I\nnIIIn7I7=nnnnnnnnnnIInIbznzzzV=V]nInnbnb=nn==b=nnnnVV=nbbbVX=XwII7nsn777IInnnnnbbbbnnIVnzz/zIInTTTTyocyyooo8nyonnoFunnn8C_oo8CCNu8C88ooooooooooCCuuuzz8ozzzC8Cuo8ozozoCzz88o8zzzzNoCzooodN8NuCC8ooo888HCoozzzoooozoCCzdd0dCCoyyyMMMMHZ<Z;ZvvOHHv<Z<v<BH<BB6*DBBBusuvV___SsqBgmpmqu[f[[EQ\[[Z;B@ES^_____bc_ecdbdoYWZ__S]\_[UURTcb__URTS^^V_^_i[[[[[kk_^5!2//PP((<@C!!!ggWXAAmP[[]GSK________________________________________kez7ZoZnooodicoonpp8jddhhTTi.i[r]h]ktkdiotnmdYvmmddd2cmdccd?iccc2<Udd2<<Fi2<22dddddddddd<<iiinxn2dnxxnxxxn<2<id2dndnd<nn22d2nnnnFd<ndddZF2Fi<<2ddd222A<ddnnnddddnd<<nZZ+Z<<dmmmEEEEmdYvmmddd2cmdcca?iccc22@ddx(<<Fi2<22dddddddddd22iiidxxxn2Zxdxxnxxxn222Td(ddZdd2dd((Z(dddd<Z2dZZZZ</<i<<2dad222A<xdxddndZdddnd<<n<<"<<<dmmmEEEEnmnnn7ynyywM}yyy7IznnIIIn}7I7=nnnnnnnnnnII}}}nVnzI=InInzbzbInz=Iz=znzzbVIznnnbW0WrII7nwn777IInnnnzbbbbznIInnn=nIInTTTTzmzzz=yzyyvMyyy==Nzz1IIV=I==zzzzzzzzzz==z=nz===gz1zznzz=zz11n1zzzzIn=znnnnI9III=zvz===PIzzzznzzzzIIII*IIIzTTTTnmnnn7ynyynMyyy7VznnIIIn}7I7=nnnnnnnnnnII}}}nVnzI=I}nInnbnbInz==n=znnnVV=zbnbVM0M}II7nnn777IInnnnzbbbbnnIVnnn=nIInTTTTmZYvmmZZZ-cmZccR?fccc-|cgzYcah}}{~|}|O2KGGxx<<-Zad222bbxk}qRS}}E  <<< <YpYYrGkk|YkYYYYEY .YYYGYGGG kYkSkkkY@@YYYtk@k@kkk=kkk@@@{{{{wCTCPrCPP]CPCCPPCPCPCPCCC]Px]C]PPCCCCWPPPxx9xPP\\\\xwxxx<x~T<PexxPPPx<P<CxxxxxxxxxxPPxPkx]C]exPxxkxkCxxCCkCxxxx]]Cxkkk]`B`PP<x~x<<<OPxxxxxkkkkxxP]x3PPx\\\\PPPP_w__y.Kqq_q____Y _  A___K_KKKq_rXrqq_TT___{q  T.qTqqqAqqqTTT7zP7z7zzuzuumuuuzz] zzzzzzzzzzzTz6?zzzTzzzzT6zzzzTzTTTTzmzzzzzTzzz]zz7zP7z7zzuzuumuuuzz] zzzzzzzzzzzTz6?zzzTzzzzT6zzzzTzTTTTzmzzzzzTzzz]zz  <<< <YpYYrGkk|YkYYYYEY .YYYGYGGG kYkSkkkY@@YYYtk@k@kkk=kkk@@@{{{{NbNNc>]]mN]NNNNNNNN>N>>>]N^I^]]NNNNe]]]]]5]]]llll`YxOi``YYY,X`YXXV8]XXX,,9YYk$55>],5,,YYYYYYYYYY,,]]]Ykkttkb|t,PkYt|k|tkbtkkkb,,,KY$YYPYY,YY$$P$YYYY5P,YPtPPP5*5]55,YVY,,,:5kYkY|Y|btYPYYYbY5vv5b55555Y```====o<BսR0B<lZ-g$i];/.[c; / ]v'<e!!V#{&'(*-/00_334 5u667+8<<@ADF!GRK%MOQORhTTJXYEZ$^^``Pff7g=kWkllnnpp\rrs*tcwxx(z\z|)}~~VTcΌ֎7q?nnb"zT#Rܩ5ʭӰ{}ոNmԽ)esQH.&b:g&ax#SqU7_   `%+6<D_OU0\\\Q]^^3`xabdefg+i}jzkln'S}i7xb֙Lޢ\u