T A B L E O F C O N T E N T S 1.0 Introduction ----------------- 1.1 How to use this manual .................................. 1 1.2 The QIP Information Processor ........................... 2 1.3 Getting Started ......................................... 3 1.3 Loading Files .......................................... 3 1.3 Getting Help ............................................ 4 2.0 Overview of QIP Concepts ----------------------------- 2.1 The QIP Screen .......................................... 6 2.2 System Windows .......................................... 6 2.3 Keyboard handling, Function keys and Editing............. 10 2.4 Mouse Handling .......................................... 18 2.5 QIP Files ............................................... 19 2.6 Text and Table Modes .................................... 20 2.7 QIP Buffers ............................................. 21 2.8 Specifying Data Positions and Ranges .................... 22 2.9 QIP Expressions ......................................... 25 3.0 Command Descriptions ------------------------- 3.1 Access Menu ............................................. 27 3.2 Block Menu .............................................. 32 3.3 Column Menu ............................................. 34 3.4 Effects Menu ............................................ 38 3.5 File Menu ............................................... 40 3.6 Layout Menu ............................................. 44 3.7 Output Menu ............................................. 47 3.8 Process Menu ............................................ 54 3.9 Row Menu ................................................ 58 3.10 Search Menu ............................................. 61 3.11 Table Menu .............................................. 64 Appendices ---------- QPL and Macro programming .................................... 68 Built-in Functions and System Variables ...................... 85 Error Codes and Messages ..................................... 94 QSETUP Utility ............................................... 98 QIP sizes and Limits ......................................... 107 Index ............................................................ Page --1-- 1. I N T R O D U C T I O N 1.1 HOW TO USE THIS MANUAL --------------------------- If you have not yet printed this manual, please TYPE or PRINT the file called README for information on how to do so. You may prefer to browse through the MANUAL.QIP file before printing anything, in which case simply press when you have read each screen of text (this assumes that you are already looking at this file from within QIP). When you have finished, exit QIP using F (File) followed by Q (Quit) followed by N (No, don't save changes). The QIP Reference Manual is organized into four sections, plus an index and several appendices. Before you start using QIP, we strongly recommend that you read the Introduction and Overview (sections 1 and 2). These will give you a general idea of just what QIP is, how it organizes and manages your data, and how to use it. Section 3 is an alphabetically-ordered description of all the menus in QIP. You should skim this section initially, then dip into it whenever you need more information concerning a particular menu or menu option. Section 4 is devoted to the QIP Programming Language (QPL). Those who wish to program (or automate) their own text- and data-processing applications will probably make heavy use of this section. However, many people will not need to refer to Section 4 at all. Of the appendices, those covering the QSETUP utility and Calculation functions are likely to be of the greatest immediate use. Also in the appendices are details of how to get support, and Feedback forms so you can send us your suggestions for improving QIP. We strongly encourage you to use these forms to let us know of any problems, limitations or discrepancies you find, whether in this manual or in QIP itself. QIP has a 'context-sensitive' cross-referenced HELP system, available at any time by pressing the key. This means that, in practice, you may not need to refer to the manual very much at all. However, we still think you will pick up QIP more quickly if you begin by reading Sections 1 and 2 as suggested above. We thank you for taking an interest in QIP, and wish you every success in applying it to your daily needs. Overseas Development Group, SORD Computer Corporation. Administrative Notes -------------------- The contents of this manual may change without prior notice. SORD Computer Corporation assumes no responsibility for any consequences which may arise from the use of QIP or this manual, or for any errors it may contain. QIP is a trademark of SORD Computer Corporation. Page --2-- 1.2 QIP (INFORMATION PROCESSOR) --------------------------------- Before you launch into the Overview in Section 2, it will help to get an idea of what QIP was designed to do, and how to get the most out of it your purposes. QIP is first and foremost a Text Processor. If you are accustomed to using Word Processors and Text Editors already, you will find it easy to use QIP for the same kind of tasks. A few pleasant surprises lie in wait for you in the form of features such as Effects, which give you easy and flexible control of both display colors and printout fonts. QIP is also a Table Processor. This means it allows you to create tables, graphs or lists, both small and large, anywhere in your document. These are managed along with your text to help you produce attractive reports, or to create large databases. More than that, QIP provides many powerful Table Processing functions, ranging from the simple Subtotal and Sort commands, to the enormously versatile Update and Calculation commands. QIP is an Information Processor. By closely combining the functions of Word Processor and Table Processor, it provides you with one, consistent environ- ment in which you can enter, process and produce reports from raw data. This differs significantly from 'Integrated Software' packages which are generally a loose connection of two or three independent systems, each managing your data in their own way. With QIP, there is only one consistent system, and one storage place for your data. This makes QIP easy to learn and quick to apply, avoiding the complexity and mistakes that can arise from using several independent systems. When you first start to use QIP, you'll probably view it as a Word Processor, and experiment with its on-screen formatting, line drawing, color-processing and printer control capabilities. As you start to work with tables, adding simple lists or charts to your reports, you'll see how all your data can be smoothly collated and updated. Before very long, you'll be using the more powerful Table Processing features to generate sales summaries, prepare work schedules, create form letters or update stock lists. Ultimately QIP may become your best tool for the most critical task of all -- turning volumes of raw data into that essential element of modern life -- useful information. Page --3-- 1.3 GETTING STARTED -------------------- This section assumes that you have successfully installed QIP in accordance with the notes in the file called README. The QIP executable files must either be in the current directory, or accessible through the defintion of the QIP environment variable, or by means of the DOS "PATH" variable. QIP requires DOS 3.1 or above, and about 1 megabyte of disk space. Also, QIP is a large program, and while it will run in 512K, we strongly recommend at least 640K. The most noticeable effect of limited memory will be the inability to execute some commands in the DOS shell. You may also need to modify your CONFIG.SYS file to ensure that the following minimums are met. Remember to reboot if you do change your CONFIG.SYS FILES=20 BUFFERS=8 1.4 LOADING QIP DATA FILES --------------------------- If you type QIP filename, (e.g. QIP MYFILE) where there is a QIP format file in the current directory called "filename", QIP will load it for editing. If there is no file of that name, QIP will immediately create a new file named "filename" (with a .QIP extension if you didn't specify one explicitly) for you to edit (e.g. MYFILE.QIP). 1.4.1 LOADING ASCII TEXT FILES ------------------------------- If, in the above instance, there is a text file (non QIP format file) called "filename", QIP will automatically create "filename.qip" containing the same data, and load it ready for you to edit. The original file will be unaltered. Note: The Import option on the File menu (section 3.5.6) provides another way to read ASCII and Wordstar(tm) files into a QIP document. 1.4.2 LOADING QIP (NO DATA FILE) --------------------------------- If you simply type QIP, the last file edited will automatically be loaded. QIP can, optionally, "remember" the name of the last file edited (this can be activated or deactivated with the QSETUP utility, see Appendix D). If it is disabled, QIP will create a new file named "UNTITLED" (you may want to change this name with the File menu "Write as" option, see section 3.5.6). When a file has been loaded into memory, QIP will display the standard QIP screen, described in the following sections. 1.4.3 LOAD ERRORS ------------------ Each time QIP is loaded, it performs a series of startup self-tests. If for some reason you get an error when QIP is loading, you should get a new copy of the QIP system file "QSYSTEM.V01" from the original distribution disk (you may also want to run QSETUP to set any configuration paramters you may have changed). If this does not fix the problem, support is available to registered users (see the "SUPPORT" file on the distribuiton disk for more details). Page --4-- 1.5 QIP HELP ------------- Qip's help system is both context-sensitive and cross-referenced. It is accessed with the key, and controlled with the cursor movement keys, , , , , , and keys. The Help system can also be navigated easily with a mouse. QIP help is context and mode sensitive. If you press during Text or Table editing, you will automatically be given help on the appropriate mode. When you press from within any prompt or menu you will be presented with a help screen pertaining to the current subject. At the bottom of each HELP screen is a list of the available keys. Pressing at any time will bring you back to the main HELP menu. This is a list of all the principal HELP topics. Pressing will return you to the top-most menu related to the current topic. Hitting at any time will exit the HELP system and return you to where you left off in QIP. Many topics use a series of related HELP screens. The and keys are used to move "UP" and "DOWN" through the screens. If there is no previous screen then only will be available, when there are no further HELP screens only will be displayed at the bottom of the screen. On most HELP screens certain keywords or phrases will be highlighted. If the cursor is moved to one of these areas and you press , , or "click"it with the mouse, a help screen related to that key phrase will be displayed. This cross-referencing feature combined with context-sensitivity and a hierarchical menu system is designed to provide relevant help with the minimum amount of keystrokes. Page --5-- 2. O V E R V I E W O F Q I P This section provides an introduction to several important aspects of QIP - how it organizes your data, its use of the screen, keyboard and mouse, different editing modes, and much more. If you read this first, you will find it easy to "dip into" the Menu-by-Menu documentation in Section 3 when you need to check how to perform a particular operation. Below are two diagrams showing the way QIP organizes and divides your data. Several of the key words introduced here will be used and explained throughout the remainder of the section. BUFFER ------+ DOCUMENT - Contains the particular file you are editing A work area | in memory + WORK AREA - Temporary storage for data generated during editing | + PROGRAM - Holds QPL (QIP Program Language) programs and macros DOCUMENT + PAGES --+ | | | + LINES --+ RULERS - Control document margins & tab | The TEXT portion | positions. | of your Document | | is divided into + TEXT LINES - The actual text of your document. | PAGES and LINES. | | + PAGE BREAKS - Markers showing the end of each | page. | | + TABLES + | + SECTIONS + TABLE HEADERS - Title lines labeling each Each table has | section of a Table. one or more | sections, which + COLUMNS - Divisions of table rows into data can be spread | cells. Columns are defined by their throughout the | positions, widths and attributes. document. | | + RULED LINE COLUMNS - One character wide | columns containing | vertical ruled lines. | Skipped during processing. | + COLUMN HEADER ROWS - Rows at the top of each | section containing a | title for each column in | the section. | + DATA ROWS - Rows in a section containing data | cells. | + RULED LINE ROWS - Rows ruled with horizontal lines. Page --6-- 2.1 THE QIP SCREEN ------------------- QIP divides the screen into a number of areas, known as System Windows, which are visible most or all of the time. Other windows such as Pull down menus and Prompt Boxes appear according to the operation you are performing. The diagram below shows the standard QIP screen, and the following pages describe each of the windows. + Current mode (TEXT or TABLE) | + Information window Scale Line + | | + Menu bar | +-|---|--|------------------------------------------------------|---------+ |TEXT | File Block Effects Layout Search Access Output | SORD | |Pg1--+ +.*....1....*....2....*....3....*...+-------------+..*.......7...+| |Rlr . | Calculator | | | 2. | Alarm Clock | | | 3.+ | Text mode | Menu | | 4.| | Programs | | | 5.+ Scale Column | Simulation | | | 6.| +-------------+ | | 7.+ | | 8. | | 9.<----------------------- Document Window -------------------------->| | 10. | | 11. | | 12. +--------------- QIP Calculator ------------------+ | | 13. | Calculation 1: | | | 14. | ................................................| Prompt | | 15. | RSLT: 0 | Box | | 16. | | | | 17. | F10:paste SH+F10: make simulation ESC: cancel | | | 18. +-------------------------------------------------+ | | 19. | | 20. Status Line | | 21.<------------------------------> | | Page 1, Line 1, Xpos 1 10:30 D... Ins..| | F1:Help F2:Calc F3:Record F5:Hide F6:Paste F7:Goto F10:Mark |F10| +----|----------------------------------------------------------------|---+ | Effect window + + Reminder line 2.2 SYSTEM WINDOWS ------------------- MENU BAR The top line on the QIP screen is the Menu bar, which changes according to which mode or which buffer you are using (see sections 2.6 and 2.7). At the far left of the window is the "TEXT" or "TABLE" mode display, which indicates the current processing mode. Following this are the names of the QIP menus available in the current mode and the current buffer. The first letter of each is highlighted in some way (e.g. "File") to indicate the 'hot key' used to activate that menu (see section 2.3.2). The current buffer is indicated by the area at the far right - it normally contains the word "SORD" but changes to "PROGRAM" when you are editing a program. Page --7-- SCALE LINE (RULER) As its name suggests, this contains a graduated scale, with digits placed every 10 characters (e.g. 1 for 10, 2 for 20) and an asterisk halfway between each pair of digits. Normally, ruler information is superimposed on the scale, such as left ("+") and right ("+") margins and tab positions ("T") (see section 3.6.1). In Table mode other information such as column numbers, widths or titles can be shown. The = keys can be used to change this information in table mode. SCALE COLUMN This five-character wide window runs down the left edge of the screen, but may be turned off (with the - key) if you prefer to edit with a full 80-character wide display. If present, the Scale Column displays text and/or table line numbers, and sometimes special information about each line. For example, a line following a new ruler will have "Rlr" displayed in the Scale Column, and page break lines will be display Spb (soft page break) or Hpb (hard page break). Table indicators include: "Tnnn" The first Table header line, where nnn is the Table number "THdr" A Table Header Line "Snnn" The first Column Header Line, where nnn is the Section number "CHdr" A Column Header Line "+ " Ruled line preceding the first data row of a table. " +" Ruled line following the last data row of a table The last two indicators will change to up or down arrows if there is another section of the same table above or below the current section. When the Scale Column displayed, a small one-line window appears at the top of the Scale Line. This is the Information Window, and contains the current page number ("Pg1") or table number ("Tb1"). It disappears if the Scale Column display is turned off (-). DOCUMENT WINDOW All editing of your data takes place in this window, which occupies most of the screen. Its width is either 75 or 80 characters, depending on whether or not the Scale Column is displayed. In Text mode, a blinking cursor is displayed -- this is an underscore ("_") in Insert mode and a block in overwrite mode. In Table mode, there is no blinking cursor but the current table cell is highlighted with a block cursor the width of the cell. STATUS LINE Information about the current document and cursor position is shown here. The document name appears at the left. This changes to "Programs" when you are editing in the Program buffer. Next to this is the current cursor position, expressed either as a Page/Line/ X (character) position for text mode, or as a Table/Section/Column/Row position for table mode. Additional information may also be displayed, depending on the mode: Page --8-- Text mode - the amount of free memory available, expressed in Kilobytes. If this value becomes less than 10K, it is advisable to stop editing the current document, exit QIP and either split the document into two smaller ones, or increase the amount of available memory, e.g. by removing any Terminate-and-Stay-Resident programs in your system. Table mode - if the current column has a Numeric, Date or Time attribute this will be displayed (see section 3.3.7). The current time is shown at the right-hand end of the Status Line. REMINDER LINE This line is sensitive to the current context and operation and will change to give you reminders concerning which keys to use or what to do next. Normally, it reminds you of the most important Function keys as shown in the example screen in section 2.2 EFFECT WINDOW This small window at the far right of the Status Line is used to show several indicators concerning QIP's current editing mode and status. The exploded view below will make this clearer (an indicator which is "off" is either blank or displayed as a period): Q p l D . . . I n s . . --+-- ---+--- --+-- | +------ Table Cursor direction | | | | Qpl/Macro mode + | | + Ruled line mode | | Current Effect + + Insert/Overwrite mode The Qpl/Macro mode indicator is normally blank, but changes to "Qpl" when a QPL program is running, "Mac" when a macro is playing, "Inp" when a macro is in "user Input" mode, "Rec" when a macro is being recorded, or "Sim" when a simulation program is running. The Current Effect shows the current color ("D" for default, "R" for red etc.) and the on/off status of Underline ("U"), Highlight ("H") and Expand ("E"). Insert/Overwrite mode can be "Ins" for insert or "Ovr" for overwrite. Ruled line mode (2.3.4) is usually off but can be single ("|") or double ("||"). The Table Cursor movement direction (2.3.5) can be right (right arrow), down (down arrow) or off. 2.2.1 MENUS ------------ QIP menus are accessed from the Menu bar at the top of the screen, or from a menu which has already been displayed. Each menu has a list of options which can be selected to perform certain operations. When an option is selected (section 2.3.2) the menu will usually disappear, to be replaced by another menu or by a Prompt Box pertaining to the operation you have selected. Page --9-- Some menu options (called toggles) are provided to let you change certain settings which control QIP. Usually, a toggle will have one of several possible values shown next to it (e.g. "On" or "Off" as in the example shown below). +-----------------+ | Create | + | Goto | | These are | Join | | all menu | Split | | options | Indent | | This is a toggle: | Auto Append On | + +-----------------+ 2.2.2 PROMPT BOXES ------------------- These are more complicated than menus because they allow both input of text and setting of toggles. Many QIP operations will start by displaying a prompt box requesting the information they need to process your data, e.g.: +---------------- Insert/Append Column(s) ------------------+ | Width(s) of Column(s) to insert: | | ......................................................... | | | | Append Off | | | | F10:execute ESC:cancel F5:hide | +-----------------------------------------------------------+ The prompt box form is usually: - Any input fields (which can be entered and edited in accordance with section 2.3.3) - Any related toggles A reminder line on the bottom line lists useful keys including any special keys associated with this particular operation. When a prompt box appears, its input fields and toggles may already be set to show default or last-used values - these can be accepted, edited or cleared as required. Refer to section 2.3.3 for more detail on editing prompt box lines and selecting options in prompt boxes. 2.2.3 POPUP WINDOWS -------------------- In addition to menus and prompts, several other kinds of windows may appear from time to time. These include Notice windows which display messages such as "Sorting" while an operation is in progress, Message windows reporting the result of an operation, Error windows which display processing or data entry errors, and Verify windows, which request confirmation before some operation is carried out (see the example below). For each of these windows, a reminder line message will be displayed if you are required to press a key in order to clear the window before proceeding. Page --10-- +---------------------+ |Save changes? . | | | |Yes: No: ESC:cancel| +---------------------+ 2.3 KEYBOARD HANDLING, FUNCTION KEYS and EDITING ------------------------------------------------- FUNCTION KEYS ------------- Below is a list of the function keys which are available in QIP. Certain keys may not be available or applicable to particular operations. Function key templates are provided in the document named TEMPLATE on the distribution disk. Refer to section 2.4 for a detailed description of MOUSE handling in QIP. Key Description HELP key, also supported by J. This provides context- sensitive help and access to the main HELP system at all times. During HELP, displays the 'topic' menu for the current help. QIP Calculator. This is equivalent to the Calculator option of the Access menu (3.1.1). During cell editing or line input, evaluate the input as a numeric or string expression (2.9). Start or stop recording of keyboard macros (Appendix A). Play last macro (Appendix A). Display Programs menu. This is the same as selecting the Programs option on the Access menu (3.1.5). Hide windows (if any prompt, menu, or other popup windows are showing). The next key pressed will make the windows visible again. Paste. Pastes contents of Work area to current position in current buffer. Yank current line. Copies current line to Work Area. Note this will overwrite current contents of Work Area. Goto. This is the same as Goto on either the Search or Table menu (3.9.4, 3.10.2). Attempting to Goto a page past the end of a Document will Goto the top of the last page in the Document. Go directly to the Document buffer (2.7). Switch between Text and Table modes (2.6). Page --11-- Change ruled-line editing mode (2.3.4, 2.3.5). Execute and Marking key (2.3.4, 2.3.5). CONTROL and EDITING KEYS ------------------------ Below is a list of the control and editing keys which are available in QIP. Key Description X Exit QIP - same as Quit on the File menu (3.5.1). - Toggle display of the Scale Column (2.2.1). = Change Scale Line (Ruler) contents in Table Mode (2.2.1). Q Display the QIP Copyright notice. Change Insert/Overwrite mode. Also supported by V. Exit or cancel any menu, prompt or operation. Exit all menus or windows currently open. Backspace Delete the character to the left of the cursor. H also. Delete the character at the cursor position. Delete or clear to the end of the current line. Y Delete or clear the current line. T Delete the current word, or clear the current table cell. K char Drop a bookmark (any single character) at the current location (a quick version of the bookmarks in 3.10.5). Q char Goto a bookmark (any single char). A quick version of the Goto Bookmark feature explained in 3.10.4). P Insert a hard page break. N Insert a new line before the current line and move to it. Space Enter a hard-space character. L Repeat last Search (same as Search Next, 3.10.3). Halt or abort the current QIP operation, including Print, Sort, Update, and QPL programs. Accept the current line, and move to start of next line (or next cell in Table mode). Please refer to sections 2.3.5 and 2.3.7 for more information. Append a new line after the current line and move to it. CURSOR MOVEMENT and SCROLLING KEYS ---------------------------------- "Cursor" generally means the blinking text cursor or the block table cursor, but can also include the currently highlighted menu or prompt option. The "current" window may refer to a menu or prompt window, the document window, or the cell editing window (2.3.9). Page --12-- Many movement keys have extended forms which use the or keys in conjunction with the key. In these cases, will normally result in more movement (or movement on a larger scale) than . QIP TIP ------- Some non-IBM computers (notably the Toshiba T5100 and J3100 series) do not generate some of the shifted key combinations described below. Specifically, the , , , , , , and the four arrow keys. Note that the Toshiba computers will produce these key combinations when , or is on, but , and also have an affect on many other keys. You can use the O key to generate these shifted keys on those computers that do not automatically produce them. Pressing O then a key will generate a ed key. Press O then a key, DO NOT press them all simultaneously. Note this is only for the keys listed above, O will have no effect on other keys. Key Description ------ ----------- Arrows Move the cursor in the indicated direction. Also supported by E (up), X (down), S (left) and D (right), but NOT in menus (2.3.2). Arrows Move the current window in the indicated direction or scroll the Document buffer. In Overwrite mode will move the cursor to the next tab position, table cell or menu/prompt option. In Insert mode will insert spaces up to the next Tab position. Also supported by I. Move the cursor to the previous tab position, table cell or menu/prompt option. left In Text mode will move to the previous word. A also. Refer to section 2.3.5 for Table mode usage. right In Text mode will, move to the next word. F also. Refer to section 2.3.5 for Table mode usage. In Text mode, moves to the start of the text on the line, if already at the start of text, moves to the left margin, if already at the left margin, moves to the far left edge of the Document window. Move to the Document left margin. Move to end of the text on the line. If already there, moves to the right margin, if already there moves back to the end of the text line. Page --13-- Move to the right margin of the Document. Move up one screen (22 lines). R also. Move down one screen (22 lines). C also. Move to the top of the current page or section. If already there, move to the top of the previous page or section. Move to the top of the next page or section. Move to the top of the document or current table. If already at the top of the current table, move to the top of the previous table (if any). Move to the last line of the document or current table. If already at the end of the current table, move to the end of the next table (if any). 2.3.2 MENU KEYS ---------------- Menus and menu options are normally accessed using the key in combination with the one capitalized and highlighted letter of the option name (known as the 'hot key'). The hot key is usually the first capitalized letter option name, and is also displayed in a different color. Thus, to open the Access menu, simply type A. While a top-level menu is open, the left or right arrow keys can be used to move back and forth across the Menu bar. On an open menu, one option (usually the last one executed on that menu) will be highlighted. The up and down arrows, and and the space bar may be used to move from one highlighted option to another. The key executes the current option (whichever one is highlighted), or changes the value of a toggle, generally without exiting from the menu (2.2.2). The menu may disappear at this point, particularly if a sub-menu or prompt box is opened. The key is the "Accept" or "Execute" key. Pressing always closes the menu and executes the option. This is so the key can be used (as indeed it must be) for cases such as the Effect menu (3.4) where several toggles may be changed (with the key) before being "accepted" with the key. The key can be used to exit the menu -- it has the effect of restoring any changed toggles to their previous values. You can move directly to a particular option without executing it by pressing the key together with the option's hot key. This is useful to ensure the right option is selected for keystroke macros. NOTE: A few keys are equivalent to other keys. For example, M is the same as , I is and, in QIP, J is Page --14-- Typing an option's hot key will move to the option AND execute it. The effect of the Hotkey combination differs depending on the type of option. If the Hotkey is for a toggle, it will change the toggle value without moving the cursor. For other menu options, it moves the cursor and executes the option. Toggles may be set to a particular value with the plus (+) and minus (-) keys (for toggles with only 2 possible values), or with the numbers 0 to 3. For example, '-' or '0' will force the toggle to its initial value, usually OFF. 2.3.3 PROMPT BOX KEYS ---------------------- Prompt boxes combine single-line text editing with toggles. A prompt box is executed by pressing at any time, or pressing on the last input line. The prompt box will remain open until it is either executed, or aborted using or . Options on the prompt box have hot keys in the same way as menus (2.3.2). Movement between options is possible using the up and down arrows, and . The effect of the Hotkey combination differs depending on the type of option. If the Hotkey is for a toggle, it will change the toggle value without moving the cursor. For an Input line hotkey, it moves the cursor to the required field. Toggles can be set to a specific value (e.g. with the plus and minus keys). Refer to the "Menu Keys" section above (2.3.2) for more details. INPUT LINE EDITING Each input line has a number of dots indicating the maximum number of characters you may enter. While entering or editing data, you can use the line-based cursor movement and editing keys defined in section 2.3.1, including combinations such as Y or to clear all or part of the line. When you accept a line or prompt box with or , it will normally be checked for an erroneous or missing entry. If one is found, an Error window will appear and the flashing cursor will be placed at the position where the error is suspected. The Error window will remain visible, and you will not be able to move off the input line until the error is corrected. 2.3.4 TEXT EDITING and MARKING ------------------------------ When editing text, you can use all of the keys described in 2.3.1. More detail on certain keys is given below. The behavior of the key differs depending on whether you are in Insert or Overwrite mode. If is pressed in Overwrite mode, the cursor always moves to the start of the next line -- no text is moved or inserted. In Insert mode, the current line is broken at the cursor position - any text after that point will be moved with the cursor to the start of the next line, and a newline symbol will appear at the end of the original line. Page --15-- Text which is entered in Overwrite mode (replacing existing text) will always keep the effect (3.4) given to the original text - it will not be changed. Text entered in Insert mode will be given an effect according to the Effect Priority (3.4.1). When editing lines within a table in Text mode, it is best to use Overwrite mode so as to avoid shifting the positions of table columns -- it is possible to do this but not recommended, as subsequent column accesses in Table mode will read incorrect data. MARKING Many text operations apply to marked ranges of text (3.2, 3.4). Marking of text areas is very straightforward: To start marking, press the key. You can then move the cursor backwards or forwards to highlight the range of text you want to mark. You can use any of the cursor movement keys such as , , and the arrow keys for this. You may type in new text during marking and also use editing keys such as and Y. To finish marking, either select the operation you wish to perform (e.g. Copy, Move) or press again, which will leave the range marked until you select an operation at a later time. Pressing at any time will clear the marked area and abort any operation you have selected. RULED-LINE EDITING Drawing boxes, Ruled-lines, and graphic editing is possible in QIP. The key controls the current Ruled Line mode. This may be off, single or double (see the Effect Window in section 2.2.1). To draw a box or line, place the cursor at the upper-left corner and press . Use any cursor movement keys to move to where you want the lower-right corner to be then press either again or a character key. A box (or line) will be drawn with either single or double ruled lines (depending on the ruled line mode) or with the character you pressed. When the Rule line mode is active and the key is on, keys on the numeric keypad are redefined to generate the following characters (note the actual graphics characters cannot be shown in this file): Single Double 7: + 8: - 9: + *: c (cent symbol) *: L (pound) 4: | 5: | 6: | -: * (block symbol 1) -: @ (block symbol 3) 1: + 2: - 3: + 0: - .: | +: + (block symbol 2) +: $ (block symbol 4) If you need to generate characters which are the INTERSECTION of single and double ruled-lines, simply turn on the key in addition to the key. This will generate characters with VERTICAL lines matching the CURRENT mode (e.g. vertical lines will be single when the Ruled Line mode is single), and HORIZONTAL lines in the OPPOSITE mode (e.g. horizontal lines will be double when the Ruled Line mode is single). Page --16-- 2.3.5 TABLE EDITING and MARKING -------------------------------- When editing in Table mode, QIP changes the cursor to a reverse block the width of the cell -- this can be moved around with the normal cursor movement keys listed in section 2.3.1, with some minor differences noted below. and These will still attempt to move the cursor one screen at a time, but this behavior is modified so as to ensure that the cursor remains within table limits. and Move to the top or bottom of the current section. If already at that position, move to the top or bottom of the previous or next section (if any). and Move to the top or bottom of the current table. If already at that position, move to the top or bottom of the previous or next table (if any). left Does NOT move the cursor. Instead, it toggles automatic cursor movement on or off - this controls what occurs when the key is pressed. The cursor movement indicator displayed in the Effect Window (2.2.1) will change to a ".", meaning "off". If you press left again, it will return to its previous value (right or down arrow). right Does NOT move the cursor. This changes the direction of automatic cursor movement. The indicator will change from a right arrow to a down arrow or vice versa. If the indicator was turned off using left, this key will turn it on. Accepts the current cell (if it was being edited) and moves in the current cursor movement direction, if any. In Auto Append mode (3.11.6), a new row may be appended if the cursor is at the end of the section. Ruled Lines, Section Boundaries and Column Headers The table cursor automatically skips all ruled lines during editing. Thus, if the next column to the left is a ruled line column and you press the left arrow key, the cursor will move to the column BEFORE the ruled line column. The arrows and the key will never move the cursor outside the current section. The key moves to the start of the next row or column (depending on the cursor movement direction) and the arrow keys will have no effect when the cursor is at a section boundary. If you wish to move to another section, use Goto (3.10.2) or one of the or combinations described above. Column header rows (containing column titles) are often shared by several sections of the same table. This means that if you edit one section's column header you will be asked if you want to replicate the changes in other sections sharing the same header. MARKING The key is used in Table mode, as in Text mode, to start and end marking of a range of data. In Table mode, marking is done on a cell-by-cell basis, and only the start and end cells in the range are highlighted. Page --17-- It is not necessary to mark both ends of a range -- if the end cell has not yet been specified, the current cell (the one occupied by the cursor) is assumed to be the end point. Furthermore, if you select an operation which expects a marked range without having first marked anything, the current column (or row) will always be assumed. Thus, selecting Column Delete (3.2) without marking anything will indicate that you wish to delete the current column. Existing Marks can be cleared at any time by pressing . They are cleared automatically when an operation which uses those marks is completed. Marks are also cleared if you exit Table mode or move to another section (i.e. it is not possible to mark a range extending over more than one section). When an operation has been selected, the range will be highlighted and subsequently processed according to the type of operation you have selected. Thus, Column menu operations will highlight and process the marked range as a group of columns, Row menu operations will work in a similar fashion for rows, and Effect changing will apply to the rectangular block of cells defined by treating the start and end cells as corner points. The Ruled-line options on the Column and Row menus require that you mark the data columns or rows next to where the ruled lines are to be inserted or deleted. This is necessary because it is not possible to move the cursor onto the ruled line rows and columns themselves. See section 3.3.1 for more detail on this subject. 2.3.6 TABLE CELL EDITING ------------------------ When editing the contents of a cell, a small editing window covers the actual cell. It shows the current contents (if any), with dots filling the unused area. This may be edited in a similar fashion to prompt input lines (2.3.3). Other details concerning cell editing are given below. There are two ways to start editing the current cell: 1. Press or G to Get the existing data for editing -- it will be displayed in the editing window with the cursor placed at the end, ready for editing. 2. Type any valid data character (i.e. not a control or cursor movement key). The editing window will open for input, showing the character you typed. When you press the new data will replace any previous data the cell may have had. There are several ways to end editing of a cell. The or U keys will abort cell entry, restoring the previous contents of the cell, if any. The key will accept the new contents without cursor movement. The key will accept and move in the current cursor direction, if any. The UP and DOWN arrows will accept and move in their respective directions. Incorrect data will cause an error when you try to enter it into a column which has a special Column attribute (3.3.5). For example, if you try to enter alphabetic data into a cell with a numeric attribute, a bell will sound and the editing window will remain open, waiting for you to correct the data. Page --18-- Column attributes also provide a few shortcuts when entering data. You can type expressions (2.9) in numeric, date and time attribute columns. These will be evaluated and, if valid, their results stored in the cell. For example, typing TODAY in a date attribute column will cause today's date to be stored. It is important to note that the the evaluation takes place ONLY at the time you enter the data -- QIP does not store the expression for future recalculation like a spreadsheet. A shortcut is provided to allow you to copy existing cells when entering data into a cell. If you type only a double quote (") before pressing , the contents of the LAST NON-EMPTY DATA CELL above the current cell in the current column will be copied. If you type "r where r is a row number in the current section, the contents of the current column in that row will be copied. Finally, you can type "c,r where c is a column number and r is a row number, the contents of that cell will be copied, e.g. "2,4 will copy the contents of the cell in column 2, row 4 into the current cell. It is also possible to manually get data from one cell and put it into another -- use the arrow keys to move the editing window to another cell before you press . 2.4 MOUSE HANDLING ------------------- QIP supports the use of a mouse if one is installed and if the mouse driver has been loaded before QIP is started. Though a mouse is not always the best tool for typing-intensive tasks such as word processing and data entry, it can be very useful when the work involves menu selections, cursor movement and data marking, which is often the case in QIP. QIP can handle either a two-button or three-button mouse. The left-hand button is used to select or execute an item (equivalent to ), the right- hand button is equivalent to pressing the key. On a three-button mouse, the middle button calls up Help just as the key does -- on a two- button mouse you do this by depressing both buttons at once. The mouse cursor is a blinking block which is independent of the Text or Table mode cursor. To select something with the mouse, just move the mouse cursor to the desired location and push the left button. Areas on the screen which will react if you do this are called "hot areas" and are described below. Menu bar: The TEXT/TABLE label at the far left can be selected to switch modes. Menu names can be selected to display a menu, and options on an open menu may also be selected. The SORD logo or buffer indicator at the far right of the Menu bar can also be selected -- its behavior depends on which is the current buffer. Scale Line: Scroll the screen left or right. Selecting a point to the left of the center is the same as pressing left. Selecting to the right of the center is the same as pressing right. Selecting the Information window (or the leftmost five characters of the Scale Line if there is no Information window) toggles Scale Column display. Scale Column: Scrolls the screen vertically, one screenful at a time. Selecting a point above the center is the same as pressing . Selecting below the center is the same as pressing . Page --19-- Reminder Line: If any highlighted function keys are shown, selecting one is equivalent to pressing that key. A small symbol will always be available at the far right of the Reminder line when the mouse is active. Effect window: The current effect, Insert/Overwrite mode, Ruled line mode and table cursor direction indicator may all be selected. Prompts: Toggles and input lines may be selected -- the effect is the same as if hotkey was used (2.3.3). The special keys shown at the bottom of a prompt box may also be selected. Windows: The frames of any menu, prompt, message or help windows may be selected to move that window -- for example, selecting the top frame of the window will move the entire window up, (equivalent to up arrow). Help: Highlighted phrases and special keys can be selected. Points in the Document window can also be selected with the mouse. In Text mode, selecting a point will move the cursor to that point. If marking is active when this is done, the area between the original cursor position and the new one will be marked. For example, to mark a range of text: - select a start point with left mouse button - select F10 hot area on reminder line or press key - select an end point with left mouse button (as above) - select F10 hot area on reminder line or press key (as above) - for move and copy (not needed for "Delete", or "Yank") select a destination point with left mouse button - select option from BLOCK menu. e.g. Move, Copy, Delete, or Yank. Selecting a table cell when in Table mode will mark that cell without moving the table cursor (2.3.5). Selecting a cell twice in succession will move the table cursor to that cell, clearing any existing marks. 2.5 QIP FILES -------------- QIP uses several system files for managing its own operations and will create files associated with the particular data file you are using. System Files ------------ QIP.EXE - The QIP program. QSYSTEM.V01 - QIP setup information, help, and error messages. If deleted, it will be automatically re-created with default setup information but with NO help or error messages -- you should re-copy the original file from the standard QIP distribution disk. QSETUP.EXE - Setup program which reads or creates QSETUP.TXT and writes the setup information into QSYSTEM.V01. See Appendix D. QSETUP.TXT - Text file containing QIP's setup information in editable form. QPRTDEFS.V01 - Printer database for all printers in standard distribution database. Note: The ".TXT" files are not required to run QIP, but are useful for setup. Page --20-- Data and Work files ------------------- filename.QIP - QIP document file, containing text, table, and effects data, plus any QPL programs for this document (Appendix A). filename.QBK - Backup of the previous copy of filename.QIP. If you Quit without saving changes or Restore from the backup, the contents of this file will be used (3.5). filename.Pnn - nn = number from 01 to 99. This is a PRINT TO DISK file. Each time you send print output to disk, the number will be incremented so you can easily keep track of printer files. filename.Snn - nn = number from 01 to 99. This is a SPOOLed file created by QIP. Each time you send output to the spooler, the number will be incremented. Delete these files as necessary. 2.6 TEXT and TABLE MODES ------------------------ As discussed already in sections 2.2 and 2.3, many menu operations and editing procedures differ depending on whether you are in Text or Table mode. Text mode menus provide editing and word processing operations such as block copy, ruler editing and search and replace. Table mode menus provide many editing, calculating and processing operations for working with table data. Several 'utility' menus (such as File and Output) are available in both modes. Text editing can be performed on any part of the document including table data, although it is important that you maintain the table column positions and overall structure in the process. The easiest way to do this when editing tables in text mode is to always use Overwrite mode, with Wordwrap "Off" and without deleting individual characters or words. You can use Block menu operations to work with table rows. This is very useful when Importing data from a database. You can create an empty table with the correct column widths then Move the (text) database rows into the table to allow them to be processed with any of the table operations. Text formatting is always governed by the current Ruler (3.6.1), displayed on the Scale Line. Words, line and paragraphs are formatted in accordance with the ruler. Since it is possible to have many rulers in a document, you can vary the layout of your text at any point. Rulers can be altered and removed only in the Document buffer. Table editing is always done on a cell-by-cell basis. The Table mode cursor movement keys will never move past the boundaries of a table or section. Depending on the cursor movement keys you use ( and ), the cursor may move to another section but is still within the bounds of the Table. Tables are also special in that they always consist of 'whole' sections. If a section is divided by a page boundary, it is automatically split into two sections of the same table. Because a table can extend throughout a document (for example, with one section on every page), it is important to realize that many table operations affect the entire table, especially those on the Process menu. Some Process Page --21-- menu options have toggles which control whether they will apply to the current section or to the entire table -- thus you can SORT just a few rows, or every row in the table. While you may have up to 50 tables in a document, each with up to 250 sections, it is not possible to interleave sections from different tables -- all sections of a given table must appear in sequence. Text, however, can be placed between sections at will -- whether one line or one thousand lines. Tables are always numbered in the order they appear in the document. Thus, Table 1 is the first table in the document, not necessarily the first table you create. Sections are also numbered in ascending order (within each table). 2.7 QIP BUFFERS ---------------- QIP uses three work areas in memory to manage your document. These are the Document buffer, Work area and Program buffer. DOCUMENT BUFFER This is where the actual document data is stored and processed. The full range of QIP functions are available for use here, whether in Text or Table mode. You can tell you are in the Document buffer in a number of ways: the "SORD" logo appears at right of the menu bar, the document name is displayed at the left of the status line, and the menu bar shows all the menus for the current mode. When you save a QIP document, the data which is actually saved is the current contents of the Document buffer, together with all programs (see below). The contents of the Work area are never saved -- if you want to preserve its contents, paste them into the Document buffer before exiting QIP. If you select the SORD logo with the mouse, a special notice appears (also displayable with Q). WORK AREA The Work area is used as temporary workspace by QIP itself and is not directly accessible to the user. The key can be used to paste the contents of the Work area to the current position in the Document. It maintains a copy of all data (text data, and rows) copied, moved or deleted from the Document buffer with block operations involving marked areas, such as those on the Block (3.2), and Row (3.9) menus. PROGRAM BUFFER There are two ways to enter the Program buffer. One is via the Program option of the Access menu (3.1.5), the other is the key. If you Create a new program or Edit an existing one, you will be placed in the Program buffer with the cursor on the first line of the program. You may also be placed in the Program buffer if an error occurs in an executing program, in which case the cursor will be on the line containing the error. When you are in the Program buffer, the word "PROGRAM" appears at the right of the menu bar, and the word "Programs" will be displayed at the left of the Scale line. If you select the word "PROGRAM" with a mouse, the Program menu will be displayed. Page --22-- The Access menu or may be used to return to the Document buffer when you have finished editing. All keyboard macros which are assigned hot keys are stored as QPL programs, these may be edited, extended or deleted in accordance with the information given in Appendix A. Please refer to that section for more information on QIP macros and QPL programming. 2.8 SPECIFYING DATA POSITIONS and RANGES ----------------------------------------- Many QIP operations require the entry of data positions or ranges. For example, many Table operations require column numbers or column ranges, and Output menu options often require page and table ranges. 2.8.1 SPECIFYING DATA ITEMS ---------------------------- Any item (page, line, column etc.) in a QIP document can be specified using one of the prefixes given below followed by a number, e.g. P1 for Page one. You may also use a "C" referring to the CURRENT Page, Line, Table, Section, or Row. When specifying Table positions you may use the letter "E" to refer to the END (last) Table, Section, or Row. Note that that "C" and "E" may not be used by themselves, only in combination with "P", "T", "S", "R". etc. Also that "E" may may be used only for Table positions, e.g: PC - the current page. CC - the current column. TE - the end (last) table. RE - the end (last) row. You can also use an expression (2.9) instead of the number, so long as it is enclosed in parentheses, e.g. R(E-1) -- the next to last row, P(N1) -- the page whose number is stored in the numeric variable N1 (Appendix A). SPECIFYING TEXT ITEMS Pages: P, e.g. P1 or P6 Lines (within a page): L, e.g. L1 or L(N2) X Offset (within a line): X, e.g. X4 SPECIFYING TABLE ITEMS Tables: T, e.g. T5 or TC or TE Sections (within a table): S, e.g. S2 or S(N5) Columns: C, e.g. C1 or CC or C(E-2) or: [title], e.g. [COST PER UNIT] -- see below. Rows: R, e.g. R1 or R15 SPECIFYING COLUMNS BY THEIR TITLES Each section may have up to three rows of column headers containing titles for the columns in that section. The example below has two column header rows: Page --23-- Column Nos: 1 2 3 4 5 6 7 8 9 10 11 Note that ruled +---------+---------+-----------+------+--------+ line columns Col Hdr 1: | | Cost Per| Price Per | Qty | | are really one Col Hdr 2: | Product | Unit | Unit | Sold | Profit | character wide +---------+---------+-----------+------+--------+ columns and Data |Shoehorns| 15.23| 27.76| 13| 162.89| are numbered rows: |Umbrellas| 3.55| 12.31| 122| 1068.72| like any other ~..etc | | | | ~ column (3.3.1) +---------+---------+-----------+------+--------+ Columns can be referenced by their titles by enclosing the title in square brackets, e.g.: [Cost Per Unit]. It is not important to have the correct capitalization, nor is it necessary to spell out the entire title when a unique abbreviation will do. Thus: [COST], [C] and [cost per unit] all reference the same column. If the title specified is NOT unique (e.g.: [PRO]), QIP will first look for a column title which exactly matches the entry (in the above example, there is no column called just "PRO", but if there was, [PRO] would match that column). If there is no exact match, QIP uses the FIRST column (moving from left to right) which matches the abbreviation -- the "PRODUCT" column in the above example. You may find it best to refer to columns by name in this fashion as the column numbers will change whenever you insert or delete any columns in the table -- including ruled line columns. Please note, however, that column titles themselves may change from section to section of the same table if you explicitly change the column headers in a new section. 2.8.2 SPECIFYING DATA POSITIONS -------------------------------- In operations such as Goto (3.10.4) you may need to specify not just an item (such as a column or page number) but a specific position. It is possible to specify positions in text or table mode by using the item specifications given above, so long as the correct order is followed. It is usually possible to omit (or assume 'current' values for) one or more of the entries. TEXT: Page Line X-Offset e.g.: P1L13X20 - page 1, line 13, x-offset 20 PCLC - current page, start of current line P5 - start of page 5 L1X20 - Line 1 offset 20 of current page TABLE: Table Section Column Row e.g.: T3S1C3R5 - Cell in table 3, at section 1, column 3, row 5 T3C3R100 - The cell at table 3, column 3, TABLE-RELATIVE row 100. If a table number is specified but NOT a section number, row numbers are taken as table-relative, i.e. rows are counted starting from the first row of the TABLE not just within one current section (see next example). S2[ABC]R19 - The cell at section 2, column [ABC], SECTION-RELATIVE row 19 of the current table. T2 - start of table 2 (section 1, column 1, row 1) C3RE - The cell at column 3, end row of the current section. TEC3RE - The cell in the last table, column 3, end row Page --24-- 2.8.3 SPECIFYING DATA RANGES ----------------------------- Many operations require you to specify lists or ranges of data, e.g. page ranges for OUTPUT options (3.7), column ranges for PROCESS options (3.8) and cell ranges for calculations (3.1.1). A data range consists of a start position followed by two dots ".." followed by an end number, e.g. P1..5 -- pages one to five (current buffer is assumed). Although the start position may be specified with great detail, the end of the range must be a number or numeric expression. As a convenience, the letter 'A' for ALL may be used instead of a numeric expression. For example; PA - PageAll, ALL Pages RA - RowAll, ALL Rows -- Note that RA is all DATA rows, does NOT include Column header rows. TA - TableAll, ALL Tables As a special case, used ONLY for the CALC command, the letter "X" used to mean eXtend, e.g. CX, RX or CXRX (automatically append a new column and/or row). Note that you may only use 'X' only for Columns and Rows. Some Examples of ranges are: P1L1..5 -- Page 1, lines 1 to 5. T2C5R9..E -- Table 2, column 5, from row 9 to the last (table) row. SCC2..5 -- Current section, columns 2 to 5. S2C2R3..(C-1) -- Section 2 column 2, between rows 3 and current row minus 1. S1[A]..[E]R1 -- Section 1 columns [A] to [E] in row 1. This is a special case for calculations only as the R1 specification at the end is permitted, and refers to to the entire column range given. CAR1 -- Cells from all columns in row 1. Same as C1..ER1. C1RA -- Column 1, all rows (in the current section). Same as C1R1..E. When specifying a COLUMNS/ROWS or PAGES/LINES a range is allowed only for one or the other, but not both. For example, when the the COLUMN specification contains a range the ROW specification must be a single row (and vice versa). C1..10RE -- okay C1..10R1..5 -- incorrect P3L1..50 -- okay P1..8LA -- incorrect ("A" is actually a range equivalent to L1..E) S1..EC1..3 -- SECTION/COLUMN ranges okay S1..5C1RC..E -- SECTION/ROW ranges okay A list of ranges, positions or items is constructed by separating the elements in the list with commas, e.g. P1..3,P5,P9..12 -- Pages 1 to 3 and 5 and 9 to 12. If you read the dots as "TO" or "THROUGH" and read the commas as "AND" or "THEN" you will find it easy to understand and use QIP ranges and lists. Page --25-- 2.9 QIP EXPRESSIONS -------------------- QIP supports a wide variety of expressions dealing with numeric and alpha numeric (string) data. These are used in calculations, in QPL programs, in specifying data positions and ranges, and in some PROCESS commands such as UPDATE (3.8.1). 2.9.1 EXPRESSION STRUCTURE --------------------------- Expressions are constructed from OPERATORS e.g. +, -, /, *, MOD, and OPERANDS such as the following: OPERAND TYPE Examples: CONSTANTS 3 "hello" FUNCTIONS (Appendix B) INT() LEFT$() NOW() SYSTEM VARIABLES (Appendix B) CPAGE CDOC$ VARIABLES (Appendix A) N1 A3 (N = numeric, A = Alpha, i.e. string) DATA POSITIONS (2.8.2) C2RE T1[C] QIP Expressions combine OPERANDS and OPERATORS together just as in regular mathematics: e.g. 3 + 5 - 7 CHR$(34) + "ABC" + CHR$(34) i.e. OPERAND operator OPERAND operator OPERAND ... Parentheses can be used to force certain parts of the expression to be evaluated before the rest -- this is important when the OPERATOR PRECEDENCE (Appendix A) would otherwise lead to a different result, e.g. 2+3/4 (result is 2.75 because 3/4 is evaluated first) (2+3)/4 (result is 1.25, i.e. 5/4) Parentheses are also required in some data ranges when the meaning would be unclear unless they were used, e.g. C3..E-1 (subtract one from columns in the range 3 to the last -- illegal) C3..(E-1) (columns in the range 3 to next-to-last -- ok) Assignment expressions assign the result to a variable or data position, e.g. C2R4 = C2R1/C3R5 or C3R5 = LEFT$(A1,5)+RIGHT$(A1,2) 2.9.2 EXPRESSION TYPES ----------------------- An expression can be one of three 'types' corresponding to the kind of result being produced: Numeric (evaluates to a number), String (evaluates to a string of characters) or Logical (evaluates to a TRUE/FALSE condition). An expression's type can usually be determined by the kind of data it references, e.g. 3+4 is a numeric calculation returning 7; "3"+"4" is a string concatenation returning "34". However, expressions involving only table cell references are always regarded by QIP as numeric. For example, QIP will always evaluate C1=C2+C3 as a numeric expression. If you want it to be evaluated as a string expression, a "$" suffix must be applied to the destination or to any one of the operands, e.g. C1$ = C2+C3 or C1 = C2$+C3. Page --26-- 2.9.3 LOGICAL EXPRESSIONS -------------------------- Logical expressions cannot be assigned -- they are only evaluated to determine whether or not to perform a certain operation (as in UPDATE). Logical expressions may be optionally prefixed by "IF", and can contain the special logical' operators "=" - Equal ">" - Greater Than "<", - Less Than ">=" - Greater Than or Equal "<=" - Less Than or Equal "<>" - Not Equal "AND" - Logical AND "OR" - Logical OR "NOT" - Logical NOT For example: IF [NAME] = "Rob" OR [AGE] > 45 -- True if AGE is over 45 or the NAME is "Rob" N1 > 3 AND (N2 = 5 OR A1="DONE") -- True if N1 is over 3 and EITHER N2 is 5 OR A1 is "DONE" IF C1 <> C2 -- True if the C1 data is not equal to the C2 data in the current row. IF NOT [A] >= 2 OR [C] < 5 -- True if [A] is not over 2 or if [C] is under 5 IF NOT ([A] > 2 OR [C] <= 5) -- True if [A] is not over 2 and [C] is not under 5 IF N1 OR N2 -- True if either N1 or N2 is non-zero IF C1 OR VAL(C2) -- True if either C1 is not EMPTY or if the value of the C2 data is not zero (in the current row). Note: For assignments, as mentioned previously, expressions involving only table cells are treated as numeric because this is the most common requirement. For logical expressions the reverse holds true: IF C2 > C1 is treated as a string comparison because this is what is usually required. If you want the comparison to be numeric, use the VAL() function, e.g. IF VAL(C2) > VAL(C1). A string comparison will return the same result as a numeric comparison if both columns contain only numbers, but can returns a different result if one or the other column contains non-numeric or mixed alphabetic & numeric data. Page --27-- 3.1 A C C E S S M E N U DOCUMENT PROGRAM +-------------+ +-------------+ | Calculator | | Calculator | | Alarm Clock | | Alarm Clock | | Text mode | | Programs | | Programs | | Document | | Simulation | | Simulation | +-------------+ +-------------+ The ACCESS menu allows you to switch between TEXT and TABLE modes, and between the DOCUMENT, and PROGRAM, buffers. The PROGRAMS option lets you manage QPL programs. The ACCESS menu options also provide access to the pop-up CALCULATOR and ALARM CLOCK features from all modes and buffers. A SIMULATION program may only be run while in TABLE mode. 3.1.1 CALCULATOR ----------------- This is one of the most important and useful options in QIP. It is functionally identical to the pop-up calculator ( key) and gives you access to ALL of QIP's built-in Date/Time, String, Numeric, and Financial functions. See Appendix B for a complete list of all built-in functions, and sections 2.8 and 2.9 for a detailed explanation of QIP expressions. Note that all QIP numeric computations are done in a BCD representation, this means you have 16 decimal place accuracy with NO ROUNDOFF ERROR. +---------------- QIP Calculator -----------------+ | Calculation 1: | | ...................................... | | RSLT: 0 | | | | F10:paste SH+F10:make simulation ESC:cancel | +-------------------------------------------------+ The calculator remembers up to 20 calculations; you can move "up and down" the list of calculations using the UP and DOWN arrow keys. takes you to the first calculation in the list, goes to the last one. You may edit any of these expressions, or press to recalculate it as displayed. will copy the current calculation formula and append it to the end of the list. You may reference data from any Column, Row, or Cell of any Table in the document as part of a calculation and likewise assign the results to a Column, Row, or Cell (see section 2.8.1 and 2.8.2 for a complete description of how to specify data positions). You can also use the key to "paste" the results of a calculation to the CURRENT cursor position (either in to Text or a Table cell). Note that unless specified otherwise all COLUMN and ROW references are to the CURRENT SECTION of the CURRENT TABLE. You may of course explicitly refer to any Section(s) of any Table by entering the full QIP specification (e.g. TESA[BALANCE], or T1S2R3). Page --28-- The result of any numeric calculation which does not contain an explicit destination (i.e 345.78+122.4, PI*COS(60), is stored in the RSLT variable (displayed just below the prompt line). The current value of RSLT may be used in any subsequent calculations. For example, T2S1C3R1 = RSLT / 4. Pressing will paste the current RSLT value into your Document at the cursor position (either a Table cell or into Text). Pressing will automatically turn the existing calculations into a Simulation program (3.1.6). You will be prompted for the name for a new program. +--------------- Simulation -----------------+ | Simulation program name:.................. | | | | F10:execute ESC:cancel F5:hide | +--------------------------------------------+ Program names may be up to 10 characters long. Simulation programs are just like any other QPL program and may later be accessed, edited, or executed via the Programs option on the Access menu (3.1.5). Note that not only creates the Simulation program, but also turns simulation mode "On", with the newly created program. QIP TIPS -------- Using in the Calculator prompt to create a simulation program transforms each CALCulation in the calculator's stack into a CALC() command (see Appendix A), the syntax of which is CALC('...') with the arguments enclosed in SINGLE quotes. If you have a calculation in the stack of the form C1R5 = "Hello" in DOUBLE quotes then the CALC command created will be CALC('"Hello"'), which will execute correctly because there is no confusion or ambiguity with quote marks. If however, your calculation is of the form C1R5 = 'Hello" in SINGLE quotes then the CALC command created will be CALC(''Hello''), and will not execute. Even though C1R5 = 'Hello' in SINGLE quotes is legitimate as a stand-alone calculation, it will not work as part of a SIMULATION. 3.1.2 ALARM CLOCK ------------------ The ALARM CLOCK option is a simple one-message-at-a-time reminder feature. Given a date, a time, and a message, QIP will pop up a window with your message and beep at the specified time. For example: +------------- Alarm Clock -------------+ | Date: .................... | | Time: .................... | | Message:............................ | | | | F10:execute ESC:cancel F5:hide | +---------------------------------------+ Page --29-- The Date field defaults to the current day so that pressing at the Date prompt will automatically use the current date. You can enter a date in the current date format or use date expressions such as TODAY() or DATE(). You may not enter an alarm date prior to the current day. The Time prompt has no default, therefore you must enter a valid time. Note that the time format used for the Alarm clock (HH:MM or HHMM) is slightly different from the time formats used in calculations. For convenience, seconds are omitted in Alarm clock time specifications (e.g. 15:16 or 1516 will be interpreted as 15:16:00, 3:16 in the afternoon, instead of 00:15:16, 15 minutes 16 seconds past midnight). You may also use one of QIP's time functions to specify the alarm time such as MTIME(NOW,15) (15 minutes from now). You may not enter a time earlier than the current time on the current day (the time may be earlier than the current time if the date is later). Alarm messages may be up to 30 characters long. When the alarm goes off it will pop up a window with your message and beep to get your attention -- you must then press to close the window and clear the alarm time and message. The ALARM CLOCK stores only one message at a time, setting it with a new date or time overrides any existing (or pending) alarm. An example ALARM message is shown below. +-------------------------------------+ | ALARM Date: 02/15/1990 Time: 16:45 | | ET Phone Home | | | | F10:Snooze ESC:cancel | +-------------------------------------+ Pressing is similar to the snooze button on a real alarm clock. The Alarm Clock will wait five minutes (snooze time set in QSETUP) and notify you again. 3.1.3 TABLE MODE / TEXT MODE ----------------------------- This option toggles between TEXT and TABLE modes (identical to key). Selecting this option will switch from the current mode into the other. See section 2.6 for a detailed explanation of TEXT and TABLE modes. When you are in TEXT mode and the cursor is inside a table you will go directly into TABLE mode in that Table. If the cursor was not inside a table, The Table menu will be opened with the cursor on the "Create" option so you can easily enter the information needed to create a new table, or you can move down to the "Goto" option to move to an existing Table. 3.1.4 DOCUMENT and PROGRAM BUFFERS ----------------------------------- The ACCESS menu is also sensitive to the current buffer and will modify its displayed options to let you switch form one to the other. When you are in the DOCUMENT buffer, the ACCESS menu displays the Programs option. When you are in the PROGRAM buffer the menu shows the Document option. Note that when you are in the PROGRAM buffer, both Programs, Document are available. Page --30-- There are no restrictions on switching buffers -- you may freely switch between the buffers in any order. If you select the Programs option (from either the DOCUMENT or PROGRAM buffers) the PROGRAM menu will be opened automatically. 3.1.5 PROGRAMS --------------- Selecting this option opens the Programs menu. Program options include the creation, editing, listing, and executing of QPL programs. QPL programs may also be executed directly (from the Document buffer) by selecting their "HOT KEY" (4.2). Note that these "HOT KEYS" take precedence (override) the normal QIP definition of those keys. +-----------------+ | List | | eXecute | | Edit | | Create | +-----------------+ All Programs menu options bring up the Program List window to help you select the name of the program you want to use. This prompt box is functionally identical to a Directory listing (see section 3.5.8) except that it lists QPL program names and their "HOT KEYS". Example: +--------------- Program Titles: EDIT ----------------+ | Program name: *......... | | | | ENTER:accept ESC:cancel TAB:programs | +------------------------------------------------------+ +------------------------------------------------------+ | PROG1 () DEMO (~D) FORM-1 () | | SAVE (^S) BACKUP () | | | +------------------------------------------------------+ LIST Selecting List opens a Program titles window and lists all existing QPL programs and their assigned "HOT KEY". EXECUTE Selecting the eXecute option lets you choose which QPL program you want to run. EDIT Choosing the Edit option lets you specify the name of an existing QPL program you want to Edit. Once you have selected the program you will be placed in the PROGRAM buffer with the cursor placed on the first line of the program ready for editing. CREATE The Create option is slightly different from the other Program Menu options in that the Program Titles window cannot list programs which have not yet been Created. For the Create option only you must specify an actual program name. QPL program names may be a maximum of 10 characters. Once you have entered the program name you will be placed in the PROGRAM buffer with the cursor on the first line of the new program. Page --31-- QIP TIP ------- For the EDIT and CREATE options on the Program menu, entering a "." (period) on the file name prompt will move you directly to the Program Buffer. Note also that any QPL program can be "Exported" (section 3.5.7) to a disk file and then "Imported" (3.5.6) into another Document. 3.1.6 SIMULATION ----------------- Simulation enables or disables the execution of a QPL program whenever a cell is changed during table editing. When Simulation is "On" a QPL program will automatically execute whenever a table cell value changes. If Simulation is currently disabled, then selecting Simulation will bring up the Simulation prompt box. +--------------- Simulation -----------------+ | Simulation program name:.................. | | | | F10:execute ESC:cancel F5:hide | +--------------------------------------------+ You must enter the name of an existing program to the Simulation program name prompt. Simulation programs may be created and edited like any other QPL program (see section 3.1.5 on accessing the Program buffer) or can be created by pressing in the QIP Calculator. To create a Simulation with the Calculator you first perform any series of calculation(s) you want on your data. Pressing the key will automatically turn the list of calculations you entered into a QPL program. This program can be used as-is or edited like any QPL program. The range of functions available to the Simulation program is the same as any QPL program (Appendix A) you may use any of the Date/Time, QPL system access functions, string, mathematical, and financial functions built into QIP (see Appendix B). QIP TIPS -------- There are several shortcuts available for moving between buffers and switching modes. The key can be used to switch between TEXT and TABLE modes. The \ (Control Backslash) key also switches between TEXT and TABLE modes. The Goto key can be used to move to any location or table in a buffer or to switch between TEXT and TABLE modes. The key will put you directly into the DOCUMENT buffer The key will display the PROGRAMS menu. Page --32-- 3.2 B L O C K M E N U DOCUMENT PROGRAMS +------------+ +------------+ | Delete | | Delete | | Copy | | Copy | | Move | | Move | | Paste | | Paste | | Yank | | Yank | +------------+ +------------+ The BLOCK menu is used to perform operations on marked ranges of data (see section 2.3.4 for more detail on marked ranges). For all the block operations, with the exception of Paste, you can either mark a block first then choose the operation, or choose an operation first then mark the block. 3.2.1 DELETE ------------- The Delete option deletes blocks of text in a single operation. If there is a range of text marked when you select the Delete option that text is immediately deleted. If there is nothing currently marked when you select Delete then "Delete What?" appears on the reminder line. The current cursor position is used as the starting position of the range. You can use any of the cursor positioning keys to move the cursor to the end position. The marked text will be highlighted so that you can easily see exactly what is marked. The key finishes the marking operation and deletes the marked text. As with all QIP commands pressing at any time aborts the operation and clears the marks. A copy of the Deleted text is also written to the Work area and may be Pasted back into the Document buffer as often as you wish (with the paste key ). 3.2.2 COPY ----------- Copy will make copies of marked ranges of text anywhere within a buffer. Like the other Block menu options you may mark a block of text before selecting the Copy option or select Copy first and then mark the text. If there is an existing marked block when you select Copy then the marked text will be immediately copied to the current cursor position with no further prompting. When you select Copy with no block marked the "Copy What?" prompt appears on the reminder line. You may use any cursor movement keys to move the cursor to a new position. When you are finished marking text press the key, and the "Copy To where?" prompt will be displayed on the reminder line. Use the cursor movement keys to put the cursor where you want the marked text to be inserted and press the key to perform the copy operation. A copy of the marked text is also written to the Work area and may be Pasted back into the Document buffer as often as you wish (with the paste key ). Page --33-- 3.2.3 MOVE ----------- The Move option is almost identical to Copy. The only difference between them is that Move deletes the block of marked text from its original position after it has been inserted into the new position. The sequence of operations and use of keys is identical to Copy. 3.2.4 PASTE ------------ The Paste option is used to immediately copy a marked range of text from the Work area into the Document buffer. Paste differs from Delete, Copy, and Move in that there must be something in the Work area before you select the Paste option. Generally Paste will be used in conjunction with the "Yank" option which is used to copy a range of text into the Work area. 3.2.5 YANK ----------- Yank is used to write blocks of text to the Work area and leave them marked for subsequent use by the Paste option. The Yank option is identical to the Copy option with the exception that it copies ONLY to the Work area. Note that the Block options always OVERWRITE the current contents of the Work area. Although Paste and Yank are generally used together, Paste will actually use whatever is in the Work area, not necessarily what was last "Yank"ed. QIP TIP ------- The (paste key), (yank key), and Y (delete line key) are very useful shortcuts for some of the BLOCK options. For example, to quickly move or copy a single line, you can delete it or yank it (Y, or )then paste it back () somewhere else (as many times as you need). VERY IMPORTANT POINT -------------------- You may mark a range containing a table and perform any of the BLOCK options on that range, however, a table copied as TEXT will no longer be recognized by QIP as a TABLE. Notice also that the table ruled-lines are NOT copied. Page --34-- 3.3 C O L U M N M E N U DOCUMENT +--------------+ | Lines | | Delete | | Insert | | Width | | Attributes | +--------------+ The Column menu is available only in the DOCUMENT buffers and only in TABLE mode. It can be used for performing block operations on Tables, setting or modifying table column widths and attributes, and managing ruled line columns. Note that all Column menu options work with either the CURRENT column (by default) or a marked range of columns. 3.3.1 Lines ------------ Lines is used to manage the ruled-line columns in a Table. Vertical ruled lines in a Table are actually one-character-wide columns and are treated as data columns. For example, if your original Table had column 1 as [Name] and column 2 as [Address] and you inserted a ruled-line column between them, the ruled line would be column 2 and [Address] would become column 3. +----------+ | Insert | | Append | | Delete | +----------+ Use the Lines Insert option to insert a ruled-line column to the left of the current (or marked) column. Use Lines append to append a ruled-line column to the right of a column. For single columns the Lines Delete option will first try to delete a ruled- line column on the left. If there is not a ruled line on the left it will delete the ruled-line column on the right, if one exists. The Lines options work similarly on a marked range of columns. The Insert option will insert ruled lines to the left of all the columns in the range. The Append option will insert ruled lines to the right of each column in the range. The Delete option will delete all ruled lines between the columns in the marked range. As a special case, if the marked range includes all the columns in a table the Insert, Append, and Delete options insert or delete ruled line columns throughout the table. including the extreme left and right edges. 3.3.2 DELETE ------------- The Delete option will delete either a marked range of columns, the current column (the default when no range is marked). The columns which will be deleted are highlighted so you can see exactly what will be deleted, and a verify prompt will be displayed in the upper right corner of the screen. Page --35-- +-------------------------+ | Delete marked area: . | | YES: NO: ESC:cancel | +-------------------------+ You must respond with either Y, N, or . No other keys are accepted. A Y means YES, delete the marked column(s). An N or an means NO, do not delete the marked column(s), abort the Delete operation and exit the Column menu. 3.3.3 INSERT ------------- The Insert option is used to insert or append new columns into a Table. When you select the Insert option the INSERT/APPEND prompt box will appear. +---------------- Insert/Append Column(s) --------------------+ | Width(s) of Column(s) to insert (Default = 10): | | .......................................................... | | | | Append Off | | | | F10:execute ESC:cancel F5:hide | +-------------------------------------------------------------+ The INSERT/APPEND prompt box lets you specify the width(s) of the new column(s). If you specify a single width value, then one column will be inserted or appended. If you specify more than one width value, then more than one column will be inserted or appended. If Append is "Off" then all column insertions will be to the left of the current or marked column(s). If Append is "On" then all insertions will be to the right of the highlighted column(s). If there is a range of columns marked when you select Insert then all INSERT/APPEND operations will apply to the entire range. The new columns will be inserted to the left or appended to the right of each of the columns in the range. 3.3.4 WIDTH ------------ The Width option is used to change the width(s) of column(s) in a Table. New width values are entered through the CHANGE COLUMN WIDTHS prompt box. You must enter at least one width value, there is no default for this prompt. +-------------- Change Column Widths --------------+ | New column width(s)?: | | ................................................ | | | | F10:execute ESC:cancel F5:hide | +--------------------------------------------------+ The Width option will operate on the current column (by default) or on a marked range of columns. If there are several columns marked and you then enter a series of width values, each successive width will be applied to one column in the range proceeding from left to right. If you specify fewer widths than the number of columns, then the remaining columns will all use the last Page --36-- width value. Entering more widths than the number of columns will cause an error. For example, if columns 1, 2 and 3 are marked: Specify new widths: 5,10,5 - Columns 1 and 3 will be 5 characters wide and Column 2 will be 10 characters wide. Specify new widths: 5 - Columns 1, 2, and 3 will all be 5 characters wide. VERY IMPORTANT POINT -------------------- If you specify a width narrower than the data currently in the column, data will be truncated (and lost forever) without warning. 3.3.5 ATTRIBUTES ----------------- The Attributes option lets you set or change column data attributes. The column attributes control how data is stored and how it is displayed on the screen, but do not restrict how the data may later be processed. +---------------------+ | Numeric | | Alpha On | | Date | | Time | | Justify Left | +---------------------+ When you open this menu the attributes of the current column are shown on the menu. If you have marked a range of columns the attributes of the first column in the range are used. The Attributes menu is slightly different than most other QIP menus in that you use to close the menu and perform the requested operation(s). This is so that you can set or change more than one attribute at a time without having to close and re-open the Attributes menu. You may choose any one of Numeric, Alphabetic, Date, or Time -- they are mutually exclusive. Data with any of those attributes may be justified to the left, to the right, or centered. Selecting the Numeric attribute opens up the NUMERIC ATTRIBUTE prompt box. +--------- Numeric Attribute ----------+ | Number of decimal places (0-15): 0. | | | | Rounding Down | | Comma Off | | | | F10:execute ESC:cancel F5:hide | +--------------------------------------+ The Number of decimal places can be from 0 to 15 (the number of places to the right of the decimal point). The current column attribute values are shown on the prompt and will be used as the default. Page --37-- Rounding of decimal data can be one of "UP", "DOWN", or "NEAREST". For example, if your data is 3.57 in a two decimal place column, then Rounding "UP" will display 3.58, Rounding "Down" will display 3.57, and Rounding "NEAREST" will display 3.58 The Comma toggle controls the display of commas in numeric data (e.g. 1,000,000 vs. 1000000). Notice that column numeric attributes are "encoded" on the Status Line. For example, if Comma is set to "OFF", the word "Rounding" is displayed followed by one of "U", "D", or "N" and a number representing the number of decimal places. Rounding: U3 - Rounding is "UP" with 3 decimal places Rounding: D10 - Rounding is "DOWN" with 10 decimal places Rounding: N0 - Rounding is "NEAREST" with 0 decimal places When Comma is set to "ON", one of "U", "D", or "N", the number of decimal places, and the word "Comma" are displayed. For example: U0, Comma - Rounding is "UP" with 0 decimal places and commas D12, Comma - Rounding is "DOWN" with 12 decimal places and commas N2, Comma - Rounding is "NEAREST" with 2 decimal places and commas VERY IMPORTANT POINT -------------------- Any "rounded off" or "truncated" digits will be lost (irretrievably) without warning. Setting the attribute of high-precision data to fewer decimal place accuracy changes the ACTUAL VALUE stores not just its displayed value, re- setting the attribute back to a higher number of decimal places will only pad with zeros to the right. The Alpha attribute signifies free-format -- the data is stored and displayed just as it was entered. The Date and Time attributes are used to store and display data in the current (user settable) date and time formats. See Appendix D on the QSETUP program for more detail on QIP's date and time handling. Examples: 01/10/1989, 89-01-10, 08:55:00, 08.55.00 Data within a cell may be right or left justified, or centered regardless of the data attributes assigned. Even Numeric, Date, and Time data may be centered or left justified. Page --38-- 3.4 E F F E C T S M E N U DOCUMENT +-----------------------+ | Priority Data | | default All | | Underline Off | | Highlight Off | | Expand Off | | Red | | Green | | Yellow | | Blue | | Magenta | | Cyan | | Default color On | +-----------------------+ The Effects menu options control how data is displayed on the screen and on printouts. The Effects options allow you to set and change characteristics such as Highlighting, Underlining, and color (within any limits imposed by your monitor). All of the Effects options can be used to set effects for new data or to set attributes for marked ranges of text or tables. The current effects settings are displayed in the effects window near the bottom right edge of the screen. The Effects menu, like a few others in QIP, uses the key to close the menu and perform the specified operations. This is so you can easily modify several effects at one time (e.g. turning off Underline and setting Highlight and Red) without having to exit and re-opening the menu for each change. 3.4.1 PRIORITY --------------- Priority is the one of the most important of all the Effects options. Setting Priority to "As Set" means that all text and table data entered will have those characteristics explicitly set from the Effects menu. Setting Priority to "Data" means that new text (insert mode only) will use the effects of the data currently under the cursor. As an example, assuming INSERT mode, with Green and Expanded as the current effect selected on the Effects menu, and Red text (or table) data, then any new data INSERTED will be Green and Expanded if Priority is "As Set", and Red if Priority is set to "Data". When insert/overwrite mode is set to "overwrite" then the new text will ALWAYS use the effect of the original data. QIP TIP ------- Note that Expanded effect text is displayed as two characters, the character you typed and a special expansion character (hard space). This is to simulate what will actually be a double width character when printed. Note also that when overwriting with Expanded effect text, it will overwrite TWO characters at a time. Page --39-- 3.4.2 DEFAULT ALL ------------------ Selecting default All will reset all effects to their current defaults. This is an easy way to set several variables with a single keystroke. 3.4.3 UNDERLINE / HIGHLIGHT / EXPAND ------------------------------------- You may set any combination of these. They are independent of each other and of color. 3.4.4 Red/Green/Yellow/Blue/Magenta/Cyan/White/Black/Default color -------------------------------------------------------------------- These are used to set the display color. You may choose any one of them. The text color is always Default until you choose a new one. All data in QIP has an effect, even if it is only Default color. The default foreground and background colors are set externally with the QSETUP program, the remaining six (plus default) are displayed on the menu. The list of colors may therefore change, but there will always be seven available. Page --40-- 3.5 F I L E M E N U DOCUMENT PROGRAM +---------------+ +-------------+ | Quit | | Quit | | Open | | Save | | Save | | Import | | Restore | | Export | | Write As | +-------------+ | Import | | Export | | Directory | | DOS Commands | +---------------+ The FILE menu options give you access to QIP's document and file handling features. Document Save and Restore, Import and Export of data files in ASCII or WORDSTAR format, and access to DOS commands are all File menu options. Note that most File menu options which require a file name allow you to choose a file from a directory window with a mouse or with the arrow keys. If however you choose to type in the file name you must be sure to enter a valid DOS path and file name. 3.5.1 QUIT ----------- Use Quit to exit from QIP (or X). Selecting Quit brings up a verify prompt box that gives you the option of saving any changes as you exit. +-------------------------+ | Save changes?: .. | | | | YES: NO: ESC:cancel | +-------------------------+ Answering Y means YES, save all changes and exit QIP. Entering an N means NO, do not save changes before exiting. Your file will be the same as before you began editing. Pressing means ABORT the Quit option and return to QIP. 3.5.2 OPEN ----------- Open allows you to save any changes to the current document (optional) and open a new document. Open first displays a directory prompt box to let you "browse" through your directories and files so you can easily choose the file to open. You can either type in a file name at the "FILE" prompt and press or hit in the file window to choose the highlighted file. Refer to the Section on the Directory option (3.5.8) for a detailed description of how to "browse" through directories and use the , and ARROW keys (or mouse) to select files. Open will then bring up a verify prompt box. +-------------------------+ | Save changes?: .. | | | | YES: NO: ESC:cancel | +-------------------------+ Page --41-- Answering Y means YES, save all changes to the current Document before opening the new document. Entering an N means NO, do not save changes before opening the new document.Your original file will be the same as before you began editing. Pressing means ABORT the Open option and return to QIP. 3.5.3 SAVE ----------- Save makes an immediate backup copy of your document and returns you to QIP. 3.5.4 RESTORE -------------- Restore re-loads the document from the backup copy. The backup copy is current up to the last Save. Any changes made to the document since then will be lost. After Restore has re-loaded the document it returns you to QIP. 3.5.5 WRITE AS --------------- Write as makes a copy of your document under a new name. Write as first closes the current Document without saving any changes and without prompting. If you want the current Document to retain any changes, you must explicitly "Save" before selecting the "Write As" operation. After closing the original Document, Write As opens a copy of the CURRENT Document (including any changes) as a NEW file with the given name and returns you to QIP ready for editing the NEW file. Any changes made to the Document from this point onward, are made to the NEW Document. 3.5.6 IMPORT ------------- Import allows you to read ASCII or WORDSTAR format files into QIP. Import prompts for the name of the file. The file must already exist (it cannot be automatically created). Note: The current Directory is specified as part of the prompt title. +------------- Import [C:\QIP] --------------+ | File: .................................... | | | | ENTER:accept ESC:cancel | +----------------------------------------------+ Note that some graphics characters (8th bit on) may not be handled correctly. 3.5.7 EXPORT ------------- Export allows you to write QIP format files to disk in either WORDSTAR or ASCII format. Export displays the following prompt box. +------------------ Export [C:\QIP] ------------------+ | Export Filename: .......................... | | Range (Whole Document): .......................... | | | | Data Type to export Both Text and Tables | | File Format ASCII | | | | F10:execute ESC:cancel F5:hide | +------------------------------------------------------+ Page --42-- You will first be prompted to enter a name for the Export file. If the file already exists a verify window will be displayed. +----------------------------------------------+ | This File already exists - overwrite it?: . | | | | YES: NO: ESC:cancel | +----------------------------------------------+ Answering Y means YES, overwrite the file (this will destroy its original contents). Pressing an N means NO do not overwrite the file, return to the prompt line to enter another file name. Hitting means ABORT the Export option and return to QIP. Next you will be prompted for a range of text and/or table data to Export. The default range is either the "Whole Document" or a "Marked Range" if one exists when you select Export. Note that the prompt text ("Whole Document", or "Marked Range") changes accordingly. The ranges accepted are identical to the Print Data range specifications (3.7.1) on the OUTPUT menu. You may enter any combination of Pages and Lines or Tables and Sections, but you may not specify Table data by row number. The Data type to Export toggle allows you to select or suppress the output of certain types of data. The Export Format toggle is used to specify either ASCII or WORDSTAR format output. 3.5.8 DIRECTORY ---------------- The Directory prompt box lets you easily list the contents of your disk directories. You can enter any valid DOS path or file specification on the prompt line. Note: The name of the current Directory is shown as part of the title line. +------------- Directory List [C:\QIP] --------------+ | File: *.*....................................... | Directory | | prompt | ENTER:accept ESC:cancel TAB:file list PGDN: | box +------------------------------------------------------+ +------------------------------------------------------+ | QIP.EXE QSETUP.TXT QSYSTEM.V01 | File | QSETUP.EXE QPROG.V01 QPRTDEFS.V01 | window | | +------------------------------------------------------+ When you enter a valid DOS path, the file window is opened and will display a list of the files in that directory. The default Path is *.* (settable with QSETUP), so just hitting on the prompt line will display a list of all the files in the current directory. Page --43-- Pressing the key in the directory prompt box lets you "browse" through the file list using the 4 keys. The and keys display the previous and next pages of the file list (if any). Pressing the key in the file window returns you back to the directory prompt box. 3.5.9 DOS COMMANDS ------------------- Use DOS Commands to temporarily exit QIP and use DOS. You may enter any valid DOS command(s), however since QIP is a large program you may be limited by the amount of memory available. The exact amount of memory will depend on your system configuration. +-------------- DOS Command --------------+ | Command:............................... | | | | F10:execute ESC:cancel F5:hide | +-----------------------------------------+ Entering a DOS command on the prompt line will temporarily exit QIP, clear the screen, and execute the DOS command you specified. After the DOS command has completed hitting any key will return you to exactly where you left off in QIP. Just pressing will put you into a DOS shell where you may execute as many commands as you wish. Typing "EXIT" in the DOS shell will return you to where you left off in QIP. Page --44-- 3.6 L A Y O U T M E N U DOCUMENT +-----------------------+ | Edit ruler | | New ruler | | Delete ruler | | Page break | | Wordwrap On | +-----------------------+ The Layout menu options are used to control screen layout and document formatting. 3.6.1 EDIT RULER / NEW RULER ----------------------------- Rulers control the right and left margins, paragraph margins, and tab stops. These two options give you control over the placing and modification of ruler lines in the document. All documents have at least one ruler. New documents are created with a default ruler but you may Edit rulers or insert New rulers anywhere within the document. When editing rulers the cursor will be placed at the beginning of the nearest ruler line above the cursor position and "Edit ruler, F10 to end, ESC to abort, SHIFT+F10 to Save as New Default" will be highlighted on the reminder line. When you press the key your document will be reformatted up to the next ruler (if any) according to the new ruler settings. The key will save the edited ruler as the new system default (for all New Rulers and New Documents). Pressing will abort ruler editing and restore the original ruler settings. You can use the key, the , , , and keys to move along the ruler line. The L, P, R, T, [, ] characters and the key have a special meaning on ruler lines. The asterisks, digits, and dots are just to help you count column positions. L, or "[" are used to mark the LEFT margin, and R, or "]" marks the RIGHT margin. There must be a minimum of 20 characters between the LEFT and RIGHT margin marks. Note that when you enter an L or an R, special margin characters appear instead of the L, [, R, and ]. The P marks the PARAGRAPH margin. This is separate from the left margin so you can set up indented areas easily. When a text line ends with an (hard carriage return), the next line of text will start at the PARAGRAPH margin. If the text line does not end with an (soft carriage return) the text will "wrap around" to the LEFT margin. Note that a "W" displayed at the right-hand end of the ruler line indicates that wordwrapping is "ON". If no "W" is displayed wordwrapping is "OFF". Please refer to section 3.6.6 for more detail on the "Wordwrap" toggle. The T character marks a TAB stop. When you are finished with ruler editing and press or , TABS will be automatically replicated out to Page --45-- the right margin using the same spacing as the last TAB stop entered (if any). For example, with TABS set at columns 5, 10, and 18. The last spacing is 8 characters so TABS will be inserted automatically EVERY 8 COLUMNS from 26 out to the right margin. If there are no TABS set, none will be automatically created. Use the , or key to erase margin or tab marks. If you erase the LEFT margin mark it automatically moves to the left edge of the document. Similarly if you erase the RIGHT margin mark it is automatically moved to the maximum width of the document until you must then use the L, [, R or ] keys to reset them. You should notice that when you are in TEXT mode, TABLES have their own rulers whose RIGHT margins are exactly the same width as the Table. If you want to create text to the right of a table you will need to edit the ruler which controls that area and extend it. 3.6.2 DELETE RULER ------------------- Use Del ruler to delete ruler lines. When you delete a ruler, the document will be reformatted according to the next PREVIOUS ruler. You may not delete the first (topmost) ruler. 3.6.3 PAGE BREAK ----------------- This will insert a hard page break into your document BEFORE the current line. Note that the P key will also insert a hard page break into your Document, but AFTER the current line. These can be used to override QIP's soft page breaks. Text or Tables will not wrap over a hard page break. Instead the hard page break will be "pushed" down as text is inserted so that there will always be a new page at the point you specified. You can change soft page breaks into hard page breaks, and vice versa, with either the Y, or key. If you change a hard page break into a soft page break, your Document will automatically be reformatted (text will wrap into any "empty" space before the page break line). QIP TIP ------- When text is deleted, lines "wrap up" from the page below one line at a time. This is fine for Text, and adjacent Sections of a Table, but is not correct for the first line of a Table or Sections separated by text lines. Many Tables will have a header line (Table title), and all Tables will have column header(s), and ruled lines which should not "wrap" one line at a time (you would not want to ses the Table header, one ruled line, and a column header on one page, and the rest of the Table on another page). In these cases (when the first line of a page is part of a Table and the lines above it are Text), QIP will automatically insert a hard page break line above the Table, and will not wrap the table across it as you delete text on a page above a table. You may, in these situations have to manually change the hard page breaks into soft page breaks by using Y, or as described in section 3.6.3 above. Page --46-- 3.6.4 WORDWRAP --------------- This is used to toggle word wrapping "ON" or "OFF". If Wordwrap is "OFF" then text will wrap from line to line by characters instead of whole words. Conversely, when Wordwrap is "ON" text will wrap by whole words. Wordwrapping uses only the space character as the delimiter between words. When wordwrapping is "ON" a capital "W" will be displayed at the right end of the ruler line. Page --47-- 3.7 O U T P U T M E N U DOCUMENT PROGRAM +------------------+ +------------------+ | Print Data | | Print Data | | Format Page | | Format Page | | To Where | | To Where | | Colors and Fonts | | Colors and Fonts | | Merge Print | | Merge Print | | Save as Defaults | | Save as Defaults | | Restore Defaults | | Restore Defaults | +------------------+ +------------------+ The Output Menu options control the printout of QIP text and table data, as well as Merge Printing and QPL program listings. Most of the parameters that affect printouts can be set here, although some may only be changed externally with the QSETUP program. For convenience the options have been grouped together and ordered with the most often changed items first. 3.7.1 PRINT DATA ----------------- Print Data is used to do the actual printing of text, table, and QPL programs. Controlling information is entered through the Print Data prompt box. +----------------------- Print Data --------------------------+ | Range (Whole Document): .................................. | | Number of copies: 1... | | | | Data type to print Both Text and Tables | | | | F10:print SHIFT+F10:exit no print ESC:cancel F5:hide | +-------------------------------------------------------------+ Use Range to print to specify what you want to print. You may enter any valid QIP range specification for PAGE, LINE, TABLE, or SECTIONS. You may not specify a range of ROWS as part of a TABLE range, however you can print a range of table rows by using their corresponding PAGE and LINE numbers. Refer back to the Overview section on Range Specifications for a more detailed explanation (section 2.8). When there is marked text in the current buffer, the Range to print default changes to "Marked Range". Pressing will print the marked block of text. Note that Range to print accepts only whole lines. Even though the marked range may begin or end in the middle of a line, the entire line will be printed. QPL programs are printed by specifying the name of the program enclosed in angle brackets e.g. . The Number of copies defaults to one. You may enter any number of copies up to 99. Using the Data type to print toggle you can choose to print both the Text and Tables within the range or you may choose to print only the Text or Table portions. Page --48-- 3.7.2 FORMAT PAGE ------------------ The parameters for controlling page layout and formatting are set from the Format Page prompt box. +-------------- Format Page --------------+ | Left Margin (0 to 20 chars):... | | Top Margin (0 to 20 lines): ... | | Start Page Number: ........ | | | | Justification Standard | | Graphics Characters Translated | | | | F10:execute ESC:cancel F5:hide | +-----------------------------------------+ The Left margin value is specified in units of characters (1/10 of an inch per character). The right margin is not a Layout menu option, it can be set to the required position using ruler lines in the document. The Top margin is in units of lines (single spaced, about 1/6 of an inch for most printers). The bottom margin is not a Layout option, it is calculated internally by QIP (bottom margin = paper length - lines per page - top margin). The Start page number defaults to one, but may be set to any value (up to 32767). This is useful when you need to print various sections or chapters of a document separately, and still get the page numbering in the correct order. Note that this is the start number for PAGE NUMBERING and is not related to the number of pages that will be printed. QIP supports left page/right page printing for document pages that will be printed on two sides or bound together as a book. The "Justification" toggle can be set to "Alternating" to shift the printed text to the right on odd-numbered (right hand) pages. It does not change your margin settings, the whole printable area is shifted to the right. The distance it is shifted defaults to five characters (about 1/2 inch), and can only be set externally with the QSETUP program. GRAPHICS CHARACTERS ------------------ IBM PC's and compatibles all support some level of screen graphics. QIP uses this capability for the ruled lines in tables, the different shades in bar graphs, and other special characters displayed on the scale lines. Most printers also support graphics character printing, but not all printers use the same codes as the IBM PC for the graphics characters. The Graphics characters option allows for three different methods of printing graphics characters, at least one of which will work with your printer. Select "As graphics" if you have a 100% IBM compatible printer which uses the same character codes as an IBM PC. "As graphics" means that QIP will not alter the output character in any way. The character codes used to represent the character on the screen are sent as-is to the printer. Page --49-- If your printer supports graphics printing but uses different character codes then select "Translated" and QIP will use the codes defined by you in QSETUP.TXT. For each IBM graphics character you will have to put in the equivalent code for your printer (all 56 of them, but you only have to do it once). The third method (and perhaps easiest to start with) is "Generic". The "Generic" method uses simple non-graphics characters that are the same basic shape as the true graphics characters and which should work on all printers. For example ruled-lines would be printed as +-------+----------+-------+ | | | | +-------+----------+-------+ | | | | +-------+----------+-------+ Note that the example translation codes in QSETUP.TXT are for this generic set. 3.7.3 TO WHERE --------------- The To Where options allow you select a printer and configure some of its characteristics. To Where parameters are entered from the prompt box. +-------- Printer Configuration ---------+ | Printer Selection: Generic | | Output Data to: Printer | | Eject extra pages 0 | | Color Printer No | | Sheet Feeder Yes | | Wait between Pages No | | | | F10:execute ESC:cancel F5:hide | +----------------------------------------+ QIP allows you to access any of three different printers. The three choices are made externally with QSETUP. Within QIP you choose the one you want to use with the Printer selection option. It will cycle between the three printers until you stop on the one you want. OUTPUT DATA TO Output data to lets you choose where to send the data. The available choices here are "Printer", "Disk file", or "Spooler". When you send data to a "Disk file" the file will have the same name as the document from which it was printed, but with an extension of ".Pnn" (where nn is a two digit number from 00 to 99). Each time you send data to a disk file the number will be incremented so that you will not overwrite any saved data. The "Spooler" option allows you to make use of the DOS background printing capability. When you send your data to the spooler it will print in the background while you continue to work. Spooler files are named similarly to disk files except that their extension is ".Snn". Note that spool files are not deleted after they are printed so you will need to manage them yourself. Page --50-- DOS requires that the resident part of PRINT.COM be loaded in order for background spooling to work. QIP will always create the spool file with your data, but if PRINT.COM is not loaded QIP will notify you that the file was created but could not be printed. EJECT EXTRA PAGES This option lets you control the number of pages ejected when your printout is complete. QIP will always "advance" to the bottom of the last page printed. You may set Eject extra pages to "0", "1", "2", or "3" pages. This can be quite convenient if you have a printer which requires you to eject pages before tearing off the paper. SHEET FEEDER Sheet feeder tells QIP whether you have a sheet feeder type printer or whether your printer uses continuous (fan fold) paper. A "Yes" means you have a sheet feeder and QIP will use the special control codes you define in QSETUP.TXT to load and eject the pages. A "No" means you are using continuous type paper (QIP will not use the control sequences from QSETUP.TXT even if they are defined there). Note that only one set of codes is defined in QSETUP.TXT. Although QIP allows you to access three printers, you can define control codes for only one sheet feeder. WAIT BETWEEN PAGES Many printers have a manual paper feed, or a single sheet feeder. In order to accommodate these types of printers set this toggle to "Yes" and QIP will prompt you with the message +-----------------------------------------+ | Put next sheet into printer - ready?: | | | | Press any key to continue | +-----------------------------------------+ and wait until you press a key before loading the next sheet into the printer. 3.7.4 COLORS AND FONTS ----------------------- Use the Colors and fonts option to assign printer fonts to screen colors. Your first choice will be from a colors menu (Note that this list may change depending on the default color, but that there will always be seven available colors). +-----------------+ | Red | | Green | | Yellow | | Blue | | Magenta | | Cyan | | Default color | +-----------------+ Page --51-- You may assign any or all of these colors to a printer font with the Colors and fonts prompt. +--------------- RED --------------+ | Letter Style Upright | | Typeface Draft | | Characters per inch 10 | | Proportional Spacing No | | Use on this Pass Yes | | | | F10:execute ESC:cancel F5:hide | +----------------------------------+ For Letter style choose one of "Upright", "Italic", "Subscript", or "Superscript". The Typeface can be any one of "Draft", "Prestige", or "Courier". Characters per inch may be any one of "10", "12", or "16". Any of these may be proportionally spaced by setting Proportional spacing to Yes". Proportional spacing is turned off for all printing within tables since it would affect the alignment of column data and ruled lines. Note that selecting "12" or "16" character per inch type may also affect column alignment. Note that all the above choices may be limited by what capabilities of your printer. If you choose a font that is not available on your printer, the closest matching font will be used instead. USE ON THIS PASS This may be toggled "On" or "Off" to suppress printing for a specific color. If set to "Off" then spaces will be printed (in the correct spacing and character size) so you can print in two or more passes. This is useful for multi-pass printing on printers that require you change ribbons or cartridges between fonts. 3.7.5 MERGE PRINTING --------------------- Merge printing combines Text and Table data for printout. It can be used to generate form letters, invoices, stock lists, and similar reports. Text and Table ranges are entered from the Merge print prompt box. +---------------- Merge Print -----------------+ | Page Range: .............................. | | Table Data Range: ........................ | | | | Use Effects From Text | | | | F10:execute ESC:cancel F5:hide | +----------------------------------------------+ The Page range may be any valid QIP TEXT specification, but it must be in terms of PAGES and/or LINES. You may not refer to TABLES, SECTIONS, or ROWS as part of the Page range. Similarly, the Table data range can be entered only in terms of TABLES, SECTIONS, and ROWS. Page --52-- The Page range may refer to TEXT in any part of your document and may contain multiple range specifications separated by commas. For example "P1,P2..4" or "P3L1..10,P5". The Table data range may contain only a single range speci- fication. For example "T1", or "SA", or "T3R1..100", or "T1S2..3". One pass through the Page range(s) will be generated for each row in the Table data range. When you specify multiple page ranges they are processed one a time from left to right. As an example, with a Page range of "P1..3" and a Table data range of "T1S1R1..10" a total of 30 pages will be generated, 3 pages from row 1, 3 pages from row 2, 3 pages from row 3, etc. in that order. The way Merge printing works can best be described by means of an example. Given the text and table shown below: Dear [TITLE] [last name], According to our records your account in the amount of $[Amt] is more than [D] days overdue. Please remit as soon as possible. Sincerely yours, +-------+------------+------------------------+------+----------+ | TITLE | FIRST NAME | LAST NAME | DAYS | AMT | +-------+------------+------------------------+------+----------+ | Mr. |Peter |Wallman | 103 | 407.85| +-------+------------+------------------------+------+----------+ | Miss |Sally |Bolland | 95 | 27.66| +-------+------------+------------------------+------+----------+ | Mr. |Michael |Jameson | 134 | 1028.39| +-------+------------+------------------------+------+----------+ Merge print will generate three form letters. The first will look like this: Dear Mr. Wallman, According to our records your account in the amount of $407.85 is more than 103 days overdue. Please remit as soon as possible Sincerely yours, Wherever a [column header] enclosed in square brackets appears in the text, the table data from that column (of each row) will be substituted when printed. As can be seen from the example there may be more than one substitution per line and the columns may be accessed in any order (or more than one time for each pass). You can control the spacing and justification of the substituted data in the following way: [A] - If there are no spaces between the column title and the []'s then the Table data will be substituted "as-is". [A ] - If there is at least one space between the column title and the RIGHT bracket then the Table data will be LEFT justified within the number of spaces between the brackets. [ A] - If there is at least one space between the column title and the LEFT bracket then the Table data will be RIGHT justified within the number of spaces specified. Page --53-- [ A ] - If there is at least one space between the column title and BOTH brackets then the Table data will be CENTERED within the the space. Note that if the Table data is longer than the number of spaces specified, it will be substituted "as-is". If you need to use "[]" square brackets within your text the opening bracket must be immediately preceded by the "\" backslash character (there must be no spaces between the "\" and the "["). Closing brackets "]" do not need to be preceded by a backslash, but they must not occur within a column header. Effects, may be taken from either the original Text or the substituted Table data. Note the use of abbreviations in the [column header] names. 3.7.6 SAVE AS DEFAULTS ----------------------- Selecting Save as defaults will make all the current OUTPUT setup values replace the existing defaults. The next time you use QIP (even on a different document) Output will use these values. 3.7.7 RESTORE DEFAULTS ----------------------- Restore defaults replaces the current Output settings with their last-saved (current default) values. This is useful if you want to temporarily change some values -- You can then Restore them all in one operation instead of having to change them back one by one. Page --54-- 3.8 P R O C E S S M E N U DOCUMENT +--------------+ | Update | | Sort | | subTotal | +--------------+ The Process menu options are available only in TABLE mode. The Process menu options are all conventional, yet powerful, functions for use on table data. 3.8.1 UPDATE ------------- Update is an extremely useful and flexible option that allows you to Update or modify an existing table "in place". You may enter up to three search (select) conditions. For each condition you then specify one or more execution functions which will be applied whenever the search condition is satisfied. +----------------------- Update --------------------------+ | Search Condition 1: | | ....................................................... | | Update Function(s) for Condition 1: | | ....................................................... | | Search Condition 2: | | ....................................................... | | Update Function(s) for Condition 2: | | ....................................................... | | Search Condition 3: | | ....................................................... | | Update Function(s) for Condition 3: | | ....................................................... | | | | Verify No | | Mode Section only | | Ignore case No | | Wildcards (* or ?) No | | | | F10:execute ESC:cancel F5:hide | +---------------------------------------------------------+ The Search condition is a logical expression (2.9.3). You may refer to items (2.8.1) in any Table position e.g.: C1 < 0 [NAME] > "A" AND [NAME] < "N" C3 > C4 OR [OVERDRAFT] <> 0 Note that all search expressions MUST reference a DATA item from the CURRENT Table. You may not use any of the built-in functions on the Lefthand side of a search condition (but you may on the right e.g C1 = TODAY). You may enter one or more UPDATE functions (separated by ";" semicolons) for each search condition, e.g.:BELL(3); EFFECT([BALANCE],RED). Update functions may be "mixed and matched" except for "DELETE" which must be alone, and "REPEAT" which must be the last function on the line. Page --55-- The following is a complete list of all Update functions: Function name Example(s) Description ------------- ---------- ----------- DELETE DELETE Deletes the CURRENT row EDIT EDIT(C6..8) The user is placed in Table editing EDIT([COMMENT]) mode and allowed to edit the specified columns in the CURRENT row. REPLACE REPLACE(C6,"Old string","New string") Replaces "Old string" with "New string in the column specified. Note: Replace respects column widths and will truncate strings which are too long. CALC C3=C5*C2R4 General calculations. Note that C7=BGRAPH$(C3,0,100) although the result(s) are stored in the CURRENT row, references may be made to any row(s) in the Table. EFFECT EFFECT(C4..7,RED+HL) Sets the effect(s) on the specified columns. Note the compound effect specification RED+HL. Color modifiers may be any combination of HL - Highlight UL - Underline EX - Expanded If a Color is specified it MUST be first. e.g.: RED+HL+UL -- okay HL -- okay HL+YELLOW -- invalid BELL BELL Rings a bell. Note that N must be BELL(N) 0, 1, 2, 3, or 4 one of the special predefined bell tones. REPEAT REPEAT This will cause ALL the other update functions on the line to be repeated until the search condition is no longer true. This can be useful in conjunction with EDIT when searching for incorrect entries you want the user to correct. Once all Search conditions and Update functions have been entered the Update will be performed. If you set Verify to "Yes" then each matching row will be highlighted and the following verification window will be displayed: +------------------------------------------------------+ | Update this row with:..(update function displayed).. | | Skip | | Continue without verifying | | Quit Update (ESC) | +------------------------------------------------------+ Pressing will execute the update functions for the row and move to the next matching row (if any). Selecting Skip will NOT apply the update functions and move to the next matching row. Choosing Continue without verifying will set Verify to "No", the update will be performed WITHOUT further prompting. Selecting Quit aborts the Update and returns to document editing. Page --56-- Note that any Update functions executed BEFORE selecting Quit will not be "undone". If mode is set to "Section only", then UPDATE will process only the CURRENT section of the CURRENT table. The Ignore case toggle is used to control how conditions and data items are compared and matched. If set to "Yes" then case will be ignored and both upper and lower case letters will be treated as matching. If it is set to "No" then an upper and lower case letter will not match. The Wildcards toggle may be set either "Yes" or "No". When you set Wild cards to "Yes" any wildcard character(s) (* or ?) in the search condition will be treated much the same way in which these characters are interpreted by DOS. The "*" character will match any character(s) and the "?" will match any single character in the same position. 3.8.2 SORT ----------- The Sort option performs a conventional multi-key sort operation on table data. Unlike most of the other table data options Sort processes the data "in place". No new table is created. +----------------- Sort -----------------+ | Key column 1: ................. | | Sort Order Ascending | | Data Type Alpha | | | | Key column 2: ................. | | Sort Order Ascending | | Data Type Alpha | | | | Key column 3: ................. | | Sort Order Ascending | | Data Type Alpha | | | | Mode Section only | | Ignore case No | | | | F10:execute ESC:cancel F5:hide | +----------------------------------------+ Sort keys must be entered in order. You must enter Key column 1 before moving down to Key column 2 although you may go "backwards" and modify any previously entered Key column or toggle before executing the Sort. You may enter less than three sort keys but there must be at least one. The Sort order toggle may be set to "Ascending" or "Descending" independently for each of the three sort keys. The Data type toggle can be set to either "Alpha" or "Numeric" for each key. It will override the type of the actual data attribute just for the purposes of sorting. Sort does NOT use the actual column data attribute when sorting. Page --57-- If mode is set to "Section only", then SORT will process only the CURRENT section of the CURRENT table. The Ignore case toggle is used to control how conditions and data items are compared and matched. If set to "Yes" then case will be ignored and both upper and lower case letters will be treated as matching. If it is set to "No" then an upper and lower case letter will not match. Note that any text data to the right or left of the Table will NOT be moved as a result of a Sort nor will any ruled line rows. VERY IMPORTANT POINT -------------------- Due to the constraints of limited memory, the MAXIMUM number of rows that can be sorted is 600 (about 10 sections). This means that a table with more than 600 lines cannot be sorted. 3.8.3 SUBTOTAL --------------- subTotal performs a conventional multi-key subtotal function on SORTED data. The calculated subtotals are placed "in-line" in their correct positions in the original table. +---------------------- Subtotal -----------------------+ | Key column 1: ............ | | Key column 2: ............ | | Key column 3: ............ | | Subtotal which column(s)?: | | ..................................................... | | | | Label for key column(s) "Subtotal" | | Ruled line after major totals No | | | | F10:execute ESC:cancel F5:hide | +-------------------------------------------------------+ You must enter at least one Key column and you may not "skip over" one. That is, you are required to enter Key column 1 before Key column 2, and Key column 2 before Key column 3. Note that, like any prompt, once a Key column has been entered and accepted you may still go back and modify it before executing. You may subtotal any or all table column(s) except those which have been specified as key columns. Note that subTotal handles non-calculated and ruled line columns in a controlled way, i.e. maintains them in the results table. The Label for key columns toggle may be set to either "Subtotal" or "Column Title". If you choose "Subtotal" then the subtotal rows will be labeled "Subtotal 1", "Subtotal 2", and "Subtotal 3" corresponding to the three key columns (if specified). The Ruled line toggle controls whether or not a ruled line row is inserted AFTER the subtotal row. This toggle may be set to either "Yes", or "No". QIP TIPS -------- Since the Process menu options use only COLUMN numbers or ranges, when a prompt specifically asks for a column or column range you may use a "1" or "3..6,7,9" instead of "C1" and "C3..6,C7,C9". Page --58-- 3.9 R O W M E N U DOCUMENT +--------------+ | Lines | | Delete | | Copy | | Move | | Insert | +--------------+ The Row Menu is in every way analogous to the Column Menu (section 3.3). Row ranges for block operations are all specified in identical fashion. The two exceptions are that you cannot specify ROW widths or attributes, and that you may Move and Copy rows. Note also that rows will wrap over soft page breaks as they are inserted or deleted. If another section of the same table already exists on the page then the rows will wrap into it (forwards or backwards). If no section exists then a new one will automatically be created. The selection of ROW Insert and Delete ranges is limited to a single section. The destinations for ROW Move and Copy however may be any Section. 3.9.1 LINES ------------ Lines is used to manage the ruled-line rows in a Table. Horizontal ruled lines in a Table are actually one-character-wide rows and are counted as data rows. Note that ruled line rows are ALWAYS ignored during processing. +----------+ | Insert | | Append | | Delete | +----------+ Use the Lines Insert option to insert a ruled-line row above the current (or marked) row. Use Lines append to append a ruled-line below a row. For single rows the Lines Delete option will first try to delete a ruled-line row above. If there is not a ruled line above it will delete the ruled-line row below, if one exists. The Lines options work similarly on a marked range of rows. The Insert option will insert ruled lines above all the rows in the range. The Append option will insert ruled lines below each row in the range. The Delete option will delete all ruled lines between the rows in the marked range. 3.9.2 DELETE ------------- The Delete option will delete either a marked range of rows, or the current row (the default when no range is marked). The rows which will be deleted are highlighted so you can see exactly what will be deleted, and a verify prompt will be displayed in the upper right corner of the screen. Page --59-- +-------------------------+ | Delete marked area: . | | YES: NO: ESC:cancel | +-------------------------+ You must respond with either Y, N, or . No other keys are accepted. A Y means YES, delete the marked row(s). An N or an means NO, do not delete the marked row(s), abort the Delete operation and exit the Row menu. The Delete option is also used to delete entire sections. If your marked range includes EVERY ROW in the section when you select Delete, then the following verify prompt will be displayed: +----------------------------+ | Delete entire Section: . | | YES: NO: ESC:cancel | +----------------------------+ Responding with a Y, means YES, delete the entire Section. An N or an means NO, do not delete the Section, abort the Delete operation and exit the Row menu. Note that deleting the last remaining row of a section (either as part of a block delete, or singly with Y, will also delete the entire section. 3.9.3 COPY ---------- Copy will copy the current row (the default if no range is marked) or a marked range of rows. Once you have selected Copy, the message "Move to destination and press F10 (SH+F10 to append)" will be displayed on the reminder line. You can use any of the Table mode cursor movement keys to move to the destination row, even into another Section or Table (assuming the Table format is the same). Pressing F10 will copy the original row(s) above the destination row, pressing will copy below the destination row. Note that a copy of the original rows(s) is automatically put into the Work area. 3.9.4 MOVE ---------- The Move option is very similar to the Copy option above except that it deletes the original row(s) BEFORE copying to the destination. Move will move the current row (the default if no range is marked) or a marked range of rows. Once you have selected Move, the selected row(s) are copied to the Work area and deleted from Table, then the message "Move to destination and press F10 (SH+F10 to append)" will be displayed on the reminder line. You can use any of the Table mode cursor movement keys to move to the destination row, even into another Section or Table (assuming the Table format is the same). Page --60-- Pressing F10 will copy the original row(s) above the destination row, pressing will copy below the destination row. Note that the marked rows are deleted BEFORE the destination is specified. If the move operation fails for some reason, or you press to abort the move option, the deleted rows are not restored. You must restore them yourself by pressing the key to "paste" them back into the Table. 3.9.5 INSERT ------------- The Insert option is used to insert or append new rows into a Table. When you select the Insert option the Insert/Append prompt box will appear. +---------------- Insert/Append Row(s) ----------------+ | Number of Row(s) to insert (Default: 1): .......... | | | | Append Off | | | | F10:execute ESC:cancel F5:hide | +------------------------------------------------------+ The Insert/Append prompt box lets you specify the number of rows to Insert. You may insert up to a maximum of 60 rows at a time. If Append is "Off" then all row insertions will be above the current or marked row(s). If Append is "On" then all insertions will be below the highlighted row(s). If there is a range of rows marked when you select Insert then all INSERT and APPEND operations will apply to the entire range. The new rows will be inserted above or appended below each of the rows in the range. Page --61-- 3.10 S E A R C H M E N U DOCUMENT PROGRAM +-----------+ +-----------+ | Search | | Search | | Next | | Next | | Replace | | Replace | | Goto | | Goto | | Bookmark | | Bookmark | +-----------+ +-----------+ The Search Menu is available only in TEXT mode, but in both buffers. The Search Menu provides access to the Search and Replace options. The Goto and Bookmark options allow you to move around documents quickly and easily. 3.10.1 SEARCH -------------- Selecting this option brings up the Search prompt box. +----------------- Search -------------------+ | Search for: ............................. | | | | Direction Forward | | Ignore case Yes | | Wildcards (* or ?) Yes | | Full words only Yes | | | | F10:execute ESC:cancel F5:hide | +--------------------------------------------+ The "Search for" string may be up to 25 characters long. The previous search string, if any, will be displayed on the prompt line as a default. The search Direction may be toggled to either "Forward" or "Backward". "Forward" will search from the current cursor position to the end of the document. "Backward" searches from the cursor position towards the beginning of the document. Ignore case may be set to either "Yes" or "No". If set to "Yes" then upper and lower case letters will be treated as equal. If set to "No" then upper and lower case will be considered unique. Setting Wildcards to "Yes" means that the "*" and "?" asterisk and question mark characters will be treated as wildcard characters similar to the way they are by DOS. The asterisk "*" will be interpreted as matching any string of characters. The "?" question mark will match any single character in that position. Toggling Full words only to "Yes" tells QIP to match the search string only when it is preceded and followed by a space. Search strings embedded inside longer words will not be matched. 3.10.2 NEXT ------------ This option finds the Next occurrence of the search string in the current search direction. L is a quick way to do the same operation. Page --62-- 3.10.3 REPLACE --------------- The Replace option is very similar to Search (section 3.10.1). The main difference is that Replace will substitute a new string whenever it finds a match for the search string. Selecting this option brings up the Replace prompt box. +------------ Search & Replace --------------+ | Search for : ......................... | | Replace with : ......................... | | | | Verify No | | Direction Forward | | Ignore case Yes | | Wildcards (* or ?) Yes | | Full words only Yes | | | | F10:execute ESC:cancel F5:hide | +--------------------------------------------+ The search and replace strings may be up to 25 characters long. The previous search and replace strings, if any, will be displayed on the prompt lines as defaults. If Verify is set to "Yes" then Replace will prompt for verification before replacing a string. +------------------------------+ | Replace | | Skip | | Continue without verifying | | Quit Replace (ESC) | +------------------------------+ Answering R, , or means replace the string and move to the next match if any. An S means do not replace this string and continue to the next match, for convenience the cursor will remain on the Skip option. A C means replace this string and continue replacing strings without pausing for further verification. Entering a Q or terminates the Replace option and returns you to editing the document. The meanings of the Direction, Ignore case, Wildcards, and Full words only toggles are identical to the Search option. 3.10.4 GOTO ------------ Goto is used to move around quickly within a document, and change between TEXT and TABLE modes. Goto displays the following prompt box. +----------------------- Goto --------------------------+ | Goto where? ...................................... | | | | F10:execute ESC:cancel F5:hide | +-------------------------------------------------------+ Page --63-- This can be used to move to any Text position within a buffer. You may want to refer to section 2.8 on specifying Text and Table positions. You can use Goto in either the DOCUMENT or PROGRAM buffers, but you may NOT use it to move from one buffer to the other. Goto accepts any valid Text or Table position in terms of PAGES, and LINES, TABLES, SECTIONS, and ROWS. You can use Goto to move to any Position in your Document. To move to a Table reference (for example, "T1C3R5") however, you must be in Table mode. Attempting to Goto a page past the end of your Document will move only to the top line of the last page in the Document. Goto also accepts marker names, which are prefixed with an "M". Thus M1 (no space between "M" and marker name) will move to a position previously Marked as "1". Goto can also be used to change between TEXT and TABLE modes by just pressing . Note that there are Goto (and Bookmark) options on BOTH the Search and Table menus (3.11.2, 3.11.3). The Search menu Bookmark and Goto options are used in TEXT mode and the Table menu equivalents are used in TABLE mode. Note you can move to a Table bookmark while in TEXT mode but you will remain in TEXT mode (use to switch into TABLE mode). 3.10.5 BOOKMARK ---------------- The Search menu Bookmark is used to label TEXT positions so you can easily return to that position later. +----------- Bookmark -------------+ | Label: ................. | | | | F10:execute ESC:cancel F5:hide | +----------------------------------+ Bookmark labels may be up to 10 characters. You may mark any position in any buffer in either a Text or Table position. Any existing marker of the same name (or number) will be superseded. A Document may contain up to 10 bookmarks, if you declare more than 10 bookmarks, the oldest ones will be "re-used". QIP TIPS -------- There are shortcuts for many of the options on the SEARCH MENU. L - search for next occurrence of the search string - pop up the Goto prompt box - go directly to the Document buffer. - switch from TABLE to TEXT modes and vice versa K char - place a single character marker. Note that bookmarks placed with K are counted as one of the 10 active markers. Q char - move to single character marker Page --64-- 3.11 T A B L E M E N U DOCUMENT +----------------------+ | Create | | Goto | | Bookmark | | Join | | Indent | | Auto append Off | +----------------------+ Table Menu options deal primarily with the creation, splitting, and joining of Tables. If, when you change into TABLE mode, a table does not currently exist, or the cursor is not within one of the existing Tables, you will auto- matically be put into the Table menu with the Create option highlighted so you can create a new table. This makes it quite easy to create new Tables or move to existing ones. 3.11.1 CREATE -------------- This option will Create a new table BEFORE the current line or BEFORE the current table (if the cursor is within an existing Table). The left edge will be at the current cursor Xpos. +------------- Create Table --------------+ | Title: | | ..................................... | | Column Widths: | | ..................................... | | | | F10:execute ESC:cancel F5:hide | +-----------------------------------------+ The Title may be up to 57 characters long if specified here, but may be edited in TEXT mode after the Table has been created. Table headers may be a maximum of one line. You may specify a maximum of 50 columns with widths from 1 to 75 characters, but the total of all column widths (including ruled lines) cannot exceed 215 characters (QIP maximum Table width). The Table will be created and the cursor will be placed on the leftmost column header ready for column title entry. A sample table is shown below. The default for Column widths is a table with 5 columns, each one 10 characters wide. When you use the default, the columns are automatically labeled "A" through "E" [ 10 ][ 25 ][ 5 ][ 15 ] T1 . Table Title S1 .------------------------------------------------------- CHdr . Column Headers +.------------------------------------------------------- +.------------------------------------------------------- During column header entry, any system menu may be opened so you can do things such as insert columns, change widths and attributes (Column menu), or set new Page --65-- effects (Effects menu). Extra column header lines may be added (up to a maximum of three) by pressing When you move the cursor out of the column header area QIP assumes you are going to begin data entry and the first data row opens ready for input. QIP TIP ------- If you create a table on the first line of a page (the table header line is on line 1 of the page), the only way to insert text above the table header line (in TEXT mode) is to place the cursor on the table header line (line 1 of the page) and press N to insert a blank line ABOVE the cursor position. You may then move the cursor above the Table and edit Text as normal. You may also edit Table header lines in TEXT mode. After you have changed a Table header line and move the cursor off the header line you will be asked whether you wish to replicate the changes throughout the rest of the header lines for that Table. +-------------------------------------+ | Replicate through rest of file: . | | | | Yes: No: Esc:cancel | +-------------------------------------+ Answering "Yes" will update all the following header lines for that Table with any changes you made. Answering "No" will not update the following header lines. Answering "Esc" will undo the changes you just made to the Table header. 3.11.2 GOTO ------------ Goto is used to move around quickly within a document, and change between TEXT and TABLE modes. Goto displays the following prompt box. +----------------------- Goto --------------------------+ | Goto where? ...................................... | | | | F10:execute ESC:cancel F5:hide | +-------------------------------------------------------+ This can be used to move to any cell in any Table in the Document buffer. You may want to refer to section 2.8 on specifying Text and Table positions. You can use the Table menu Goto only in the DOCUMENT buffer. Goto accepts any valid Text or Table position in terms of PAGES, and LINES, TABLES, SECTIONS, and ROWS. You can use Goto to move to any Position in your Document. Attempting to Goto a page past the end of your Document will move only to the top line of the last page in the Document. Goto also accepts marker names, which are prefixed with an "M". Thus M1 (no space between "M" and marker name) will move to a position previously Marked as "1". Goto can also be used to change between TEXT and TABLE modes by just pressing . Page --66-- Note that there are Goto (and Bookmark) options on BOTH the Search and Table menus (3.10.4, 3.10.5). The Search menu Bookmark and Goto options are used in TEXT mode and the Table menu equivalents are used in TABLE mode. Note you cannot move to a Text bookmark while in Table mode. 3.11.3 BOOKMARK ---------------- This is identical to the Search menu Bookmark option (section 3.10.5). The Table menu Bookmark is convenient for labelling TABLE positions so you can easily return to that cell later. +----------- Bookmark -------------+ | Label: ................. | | | | F10:execute ESC:cancel F5:hide | +----------------------------------+ Bookmark labels may be up to 10 characters. You may mark any cell in any Table. Any existing marker of the same name (or number) will be superseded. 3.11.4 JOIN ------------ This will combine two or more separate SECTIONS of a Table (VERTICALLY). Note that you may not join different Tables only sections of the same Table. SECTIONS to be joined must be exactly adjacent (have no text lines between them). Only the CURRENT section and the NEXT section can be "joined". You cannot join a range of sections in a single "join" operation. If the column widths do not match exactly or if the specified sections belong to different Tables the Join will not be executed. 3.11.4 INDENT -------------- Indent will set the horizontal position of the current Table. +-------- Change Section Indent ---------+ | New indent position ? (max: 165): ... | | | | F10:execute ESC:cancel F5:hide | +----------------------------------------+ The current indent value will be displayed on the prompt line. After a new value has been entered the current section will be moved horizontally (left or right, to the NEW indent position) including all column and Table header lines. Note that Indent does not reformat any Text which may be to the right or left of the Table and it could be truncated. 3.11.5 AUTO APPEND ------------------- The Auto append toggle controls what happens when the cursor is on the last line of a Table and you finish cell editing. Page --67-- Cursor movement, when editing in TABLE mode, is dependent on the current cursor movement direction (see sections 2.3.5 and 2.3.6) and whether you terminate cell editing by pressing the or key. When Auto append is "Off" the cursor will move to the first row of the next column, if any, and stop when it is in the last row of the last column. If Auto append is "On" a new row will automatically be appended to the Table in the following way: - When editing a cell in the last row and you terminate cell editing by pressing the key. The cursor will be placed in the same column of a new (appended) row. - When the cursor is in the rightmost cell of the last row. If the current cursor movement direction is RIGHT and you terminate cell editing by pressing , the cursor will be in the first column of the new row. - When the cursor is in the leftmost cell of the last row. If the current cursor movement direction is DOWN and you terminate cell editing by pressing . The cursor will be placed in the first (leftmost) column of the new row. QIP TIPS -------- There are shortcuts for many of the options on the TABLE MENU. - pop up the Goto prompt box - switch from TABLE to TEXT modes and vice versa K char - place a single character marker. Note that bookmarks placed with K are counted as one of the 10 active markers. Q char - move to single character marker Page --68-- A P P E N D I X A QPL and MACRO PROGRAMMING ------------------------- QPL is a real programming language with access to all of QIP features, and functions. It has its own local and global variables, commands, control statements, command syntax, and system access functions. QPL is case insensitive except for the contents of quoted strings. QPL resembles and is loosely based on BASIC. QIP provides two levels of automation: Macros, which are a recording or exact representation of a series of keystrokes. QIP Programming Language, which is a full programming language with its own commands, control statements, variables, and access to the principal QIP options. MACROS ------- Macros are an exact recording or representation of key sequences which can be saved and named, then played-back at any time. Macros are interpreted as if the sequence of keystrokes were coming from the keyboard, they may in fact be "recorded" as you are actually performing an operation or created and edited in the Program buffer (3.1.5). Macros therefore allow you access to virtually ALL QIP operations. MACRO RECORDING The key is the Macro record key. Pressing begins recording of all subsequent keystrokes until is pressed again to finish recording. When you are through recording you will be prompted for a "key" to assign the recorded macro to. +------------------------------------------------------+ | | | Assign to which Key? (ENTER or F4 = temporary macro) | | | +------------------------------------------------------+ The default is the key (temporary Macro key). Assigning a new Macro to will override any existing macro assigned to . This is primarily useful as a "play last macro" feature for use with one-time, off-the-cuff Macros. Alternatively, you can assign the recorded Macro to any key on the keyboard (including , and keys), even keys normally used by QIP (with the EXCEPTION of , and ). Your Macro assignment will OVERRIDE any QIP function(s) assigned to that key, so be careful. Page --69-- MACRO KEY REPRESENTATION ------------------------ Most QIP operations require the use of non-printing keys (e.g keys for opening a menu, or to execute an option). There is a representation for all active keys. Any characters that can be displayed by the editor are represented in their literal form. This includes ruled-line characters, hard spaces, and others. Special characters (e.g. ", or ~) may be "escaped" with the "\" backslash character (including "\" itself). However, certain backslash sequences are reserved for control, and function keys as shown below. The following table shows the representation of all non-printing keys: Key Representation Comment ------- ---------------- --------- CTRL ^ ^G for CTRL-G SHIFT _ _\1 for SHIFT-F1 ESC ^[ ^[ for ESCAPE ALT ~ ~A for ALT-A Literal \ \~ for ~ character HOME \h END \e UP arrow \u _\u for SHIFT-UP arrow DOWN arrow \d note \U and \D below LEFT arrow \l RIGHT arrow \r INS \i BACKSPACE \b TAB \t BACKTAB _\t _\t is SHIFT-TAB F1 .. F9 \1 .. \9 \1 to \9 for F1 to F9 F10 \0 \0 for F10 PGUP \U Case is important PGDN \D for these two DEL \x ENTER ^m SHIFT-ENTER _^m As a special case, when recording or editing a Macro, the key (represented as \4) can be used to start data input from the keyboard. The keys entered at this time will not be stored as part of the Macro. When the Macro is executed, it will pause at this point and wait for input from the user. Exit from this manual input mode is controlled by two QPL functions: KBBRK() - defines the keys that break out of manual input mode (AND ALSO out of the Macro). The default value is . KBBRK("\x1b") use (hex 1b) as "break" key KBDONE() - defines the maximum number of keys that can be entered, or the keys which terminate input from the keyboard. KBDONE(1,"") - get any 1 key from keyboard, then continue. KBDONE(0,"^m\0") - get any number of keys, terminated by or Page --70-- MACRO() STATEMENT ----------------- All QIP macros are written and stored in editable form as MACRO() statements in the Program buffer. They may be created, edited, and executed through the "Programs" option on the ACCESS menu (3.1.5). Optionally any Macro can be assigned to a key, so that pressing a Macro's assigned "hot-key" will immediately playback the Macro. Note that Macros assigned to the "temporary Macro key" are not saved in the Program buffer. MACRO PROGRAM STRUCTURE ----------------------- defines the name of the Macro and optional hot-key. MACRO(".....") ALL macros must be enclosed in " " double quotes. . . . MACRO(".....") END End of macro The following are examples of Macros created according to the above rules: Macro named REP with no hot-key assignment MACRO ("~S~R\d\4") ~S opens Search menu, ~R selects Replace option, END \d DOWN arrows past search string prompt(uses existing search string), \4 starts user input of replacement string Macro named MAKETBL assigned to M key MACRO("~A~T~CTest Table^M10,10,10,20^M") END ~A opens Access menu, ~T selects Table Mode, ~C selects Create option, "Test Table" is title, ^M terminated with , 10,10,10,20 are column widths, ^M terminated by QIP TIPS -------- Many QIP commands (Search, Print Data, Calc) "remember" their last inputs. When you open the Search prompt it "remembers" and displays the previous search string. The cursor for the prompt line(s) is at the END of the input string. When using Macros to invoke commands that remember their previous inputs be sure to CLEAR the input line, otherwise it will be APPENDED to the existing string. For example: Search string: "Accounts Receivable" MACRO("~SSPayable^M") The actual search string will be "Accounts ReceivablePayable" The correct macro is MACRO("~SS^YPayable^M") - The Y clears the input line before entering "Payable". Page --71-- QPL PROGRAMMING LANGUAGE ------------------------ QPL the QIP Programming Language provides added functionality in a more understandable form than Macros. Although the Macro() statement (see above) may be used in a QPL program, QPL programs are intended for long-term use and ease of maintenance. CREATING QPL PROGRAMS --------------------- All QPL programs are created and stored in editable form in the Program buffer. They may be created, edited, and executed through the "Programs" option on the ACCESS menu (3.1.5). Optionally, you can assign the QPL program to any key on the keyboard (including , and keys), even keys normally used by QIP (with the EXCEPTION of , and ). Your QPL program assignment will OVERRIDE any QIP function(s) assigned to that key, so be careful. QPL PROGRAM STRUCTURE --------------------- The structure of a QPL program is almost identical to a QIP Macro. defines name of Program and optional hot-key assignment. .....QPL statements, commands, or functions..... END End of Program Program with no key assignment. .....QPL statements, commands, or functions.... END End of Program QPL programs may be up to 100 lines long. The length of a program is measured from the line to the start of the next program (or last text line). For example: 1 for n1 = 1 to 5 2 disp n1 3 next 4 disp "Finished", wait(0) 5 END 6 7 The above program (PROG1) is seven lines long. QPL VARIABLES ------------- There are two types of variables in a QPL program: Alpha (string) - Labeled A1 through A50 Numeric - Labeled N1 through N50, each capable of 16 BCD digits of precision. Page --72-- Note that it is also possible to reference, and assign Table cells and Text elements from within QPL programs. For example: C3R5 = "100" - Column 3 Row 5 (current Table) set to "100" C1R1 = A10 - may assign to TABLE cells as STRING ONLY P10L12 = "Hello, World" - Page 10 Line 12 QPL OPERATORS and EXPRESSIONS ----------------------------- The standard arithmetic operators (+, -, *, /) are available, evaluated in standard precedence (first * /, then + -). The highest precedence operators are ^ (exponentiation with base number > 0), and ** (exponentiation with an INTEGER base). Next highest precedence are the unary plus and minus operators, which have have higher precedence than *, or /. PROGRAM FORMAT -------------- All statements and commands in a QPL program must be seperated by a ';' or by the end of a line. e.g. INPUT "Enter a number",N1 CALC("C4 = C4*N1"); UPDATE("C4 > 100","EDIT(C4);REPEAT") Comments may be included in your program. Anything between the /* and */ comment delimiters will be ignored when the program is executed. e.g. FOR N7 = 1 TO EROW /* for every row in the current table */ ...; NEXT /* table now contains updated data */ Page --73-- QPL STATEMENTS -------------- The following statements are used to control the flow of execution of QPL programs. They are the standard structured programming constructs. End of Program Statements ------------------------- STOP Immediately halts execution of the program. END If a subroutine is being executed, the subroutine is stopped and control is returned to the parent program. In the main (parent) program, it immediately stops execution. Hint: Use an END statement to terminate all programs which you may want to call as subroutines or execute by themselves. may be pressed at any stage while a program is being executed. This will immediately halt the program. If a fatal error occurs in the program, a message will be displayed and the program will immediately be stopped. Test a Condition ---------------- IF < expression > THEN < statement(s) > { ELSE < statement(s) > } IEND If a condition is TRUE then do something ( else do something else ) e.g. IF N1 < 0 OR N1 > 100 THEN DISP "Invalid Number. Try again",wait IEND Loops ----- FOR numeric-variable = TO { STEP } NEXT WHILE DO WEND Repeat a set of QIP commands or QPL statements a certain number of times. You must specify the start and end values. The increment value (step) defaults to 1 or -1. e.g. FOR N1 = 1 TO EROW /* for all rows in the current table section */ CALC("C1R(N1) = DATE(TODAY,N1)") NEXT Repeat a set of QIP commands or QPL statements while something is TRUE e.g. WHILE N5 > 0 DO DISP "Loop Count: ",N5; N5--; WEND Note: There is a MAXIMUM nesting level of 5 IF's, 5 FOR's, and 5 WHILE's Page --74-- Loop Control statements ----------------------- EXIT LOOP /* terminate the loop and continue with the program */ CONTINUE /* skip all commands to end of loop then continue loop */ e.g. FOR N1 = N2 TO N3 STEP 10 IF N1.... THEN CONTINUE ... NEXT Program Control statements -------------------------- GOTO GOSUB GOTO jumps to the specified label, ignoring all commands in between, and continues program execution from there. Note: A label must be preceded by a '$' and followed by a ':' The GOTO value can be the label name or the value of a string variable. e.g. GOTO "FINISH" or GOTO A3 GOSUB executes another program (subroutine) then returns to the current program and continues from after the GOSUB command. The subroutine must be another program in the current document. e.g.
IF N1 <= 0 then GOTO FINISH DISP "parent program"; GOSUB SUB1; DISP "returned from subroutine" $FINISH: DISP "end of program",wait END DISP "subroutine" END Variable Handling ----------------- LET Assign a value to a variable e.g. LET A1 = "New Zealand" Note that the "LET" is optional in an assignment statement. e.g. N5 = 10; N6 = 25; A2 = "America" VCLEAR Clear the contents of ALL QPL variables. Numeric variables (N1 to N50) are set to 0 Alpha variables (A1 to A50) are set to an empty string ("") Note that all variables are assigned these values when you start running QIP. Variables retain their current value until they are cleared or given a new value, or you exit QIP. Page --75-- Input and Output Control Commands --------------------------------- PRINT {PF (n),} {LF (n),} {SP (n),} {"message string",} {variable} Print a message or contents of a variable on current printer. e.g. PRINT "do a page feed", PF, "print the contents of the variable A1", SP(5), A1 DISP {@(x,y),} {BELL(n),} {CLEAR, or CLR,} {LF (n),} {SP (n),} {WAIT(n),} {"message string",} {variable} Display a message or contents of a variable on the screen. e.g. DISP "how does this work", LF(3), "3 lines later: A2=", A2 BELL(1,3), WAIT INPUT {@(x,y),} {USING "format-string",} {CLEAR, or CLR,} {LF (n),} {SP (n),} {"prompt-string",} variable Display a prompt (optional) and accept input from the keyboard. This input is assigned to the specified variable. e.g. INPUT USING "NNN", "Enter a number up to 3 digits", N1 where: BELL(tone,count) - Ring the specified bell as many times as required. tone values: 0 = simple beep tone (default) 1 = short high-low beep 2 = long high-low beep 3 = ascending beeps Both values are optional. e.g. BELL, BELL(3), BELL(,5), BELL(3,5) SP(n) - Move 'n' spaces. e.g. "abc",sp(3),"def" => "abc def" LF(n) - Move down 'n' lines (will move to the start of the new line). e.g. "line 1",lf(2),"line 4" PF(n) - Do 'n' page feeds (will move to the start of the new page). Page Feeds are only applicable to the printer. CLEAR or CLR - Clear the screen. @(X,Y) - Move the cursor to the specified position on the screen. X = horizontal (column) position Y = vertical (row) position The top left corner of the screen is (0,0) WAIT(n) - Pause for 'n' seconds, or until the next key press, before continuing the program. The default value, if 'n' is omitted, is 10 seconds. If 'n' is 0, QIP continues to wait until a key is pressed e.g. DISP "press a key to continue",WAIT(0) DISP "read this message",WAIT(30) Page --76-- USING - Control user input. The format field controls the type of data that can be entered and the maximum number of characters. e.g. USING "NNN" accepts a number of up to 3 digits. Note: The user may edit the input as they are entering it (Delete a digit, etc) and must press to accept it. Format String: The format string must be enclosed in quotes and may use any combination of the following characters. "<" Left justify input data. (default for Alpha data) ">" Right justify input data. (default for Numeric data Note that the justify symbols must be the FIRST character in a USING format string. "A" Alphabetic data only (a to z, A to Z, and spaces) Note that the maximum length of an alpha string is 80 characters or the width of the current display window. "N" Accepts only Numeric data (0 to 9, a single '.', or a "+" or "-" in the first position) Note that the maximum length of a numeric field is 16 digits. "S" Accepts symbol character only (e.g. ':', '*' or '/') This is useful for ensuring date or time formats, "NNSNNSNN" Note that any actual symbols entered at the start of the format string will be displayed "as is". This is useful, for example, to indicate money is required: "$NNNNN" "X" Accepts any character in this position. A series of '_' (underscore) characters is displayed on the screen for the user, showing the maximum length of the input field. This character may be changed using the QSETUP program (Appendix D). Some examples of USING strings are: ">NNNNN" - accepts any 5 digits, right justified in 5 spaces. "NNSNNSNN" - can be used to input Date, or Time format. "$NNNNSNN" - for dollars and cents inputs. ">AAAAAA" - any string of up to 6 characters, right justified in a six character field, no digits or symbols. "X" - ANY single character . Note is still required to terminate input. Note that the PRINT and DISP parameters may occur in any order, and may be repeated. They are executed in the order you specify them. INPUT requires one format field only (if any). You must specify a variable - this must be the last entry in the INPUT command. INPUT {@(x,y),} {USING "format-string",} {CLEAR, or CLR,} {LF (n),} {SP (n),} {"prompt-string",} variable Page --77-- Display a prompt (optional) and accept input from the keyboard. This input is assigned to the specified variable. e.g. INPUT USING "NNN", "Enter a number up to 3 digits", N1 Display Window Functions ------------------------ WINDOW(width,lines) Defines a display window for use with the DISP and INPUT commands. e.g. N1 = WINDOW (45,15) QIP will use a default window (the same size as your screen) if you do not specifically create one. Creating a new window overwrites any previous window. WHIDE() Make the display window invisible. You can still write to it using DISP or INPUT while it is hidden. Hiding the window enables you to view the document underneath it. WSHOW() Restore the window visibility again. WCLOSE() Close the display window. A new window will be created next time you do another DISP or INPUT command. Page --78-- QPL SYSTEM ACCESS FUNCTIONS --------------------------- These functions implement the major QIP operations within QPL as a controlled alternative to using Macros. Note that in some cases an access function is not provided, so that a Macro is the only way to access that operation. Parameters may be omitted by using a comma as a "placeholder", trailing commas may be omitted completely. Omitted parameters will take on default values whatever they may be. There must be NO SPACES between the function name and the opening parenthesis, e.g: CREATE("Foo Bar","10,10,20,15") is acceptable, whereas CREATE ("Foo Bar","10,10,20,15") will cause an "Invalid Command Name" error. However, any spaces between the parameter(s) are okay. VERY IMPORTANT POINTS --------------------- ALL ARGUMENTS to QPL Functions are STRINGS and MUST be enclosed in quotation marks, either single or double. If you need to refer to a string within the argument, you must use the alternative set of quotation marks. e.g. CALC("C1R1$='hello'") The parameters to the QPL system access functions follow the prompts for the corresponding command. Refer to sections on each menu and prompt above for more detail on the use of each input and toggle. Toggle Parameters can be set in one of several ways. "", or "-", or "0" - will set the toggle OFF "Hot-Key", or, "+", or "1" - will set the toggle ON "N" - where N is 0, 1, 2, or 3 will set the a multi-valued toggle to value number N (when legal for that toggle, otherwise ignored) If Toggle parameters are ommitted, the CURRENT DEFAULT value will be used. For example: REPLACE("abc","def") -- use defaults for all toggle parameters REPLACE("abc","def","0") -- set only first toggle parameter REPLACE("abc","def",,,"1") -- set only last toggle parameter, ommitted parameters must be sparated by commas All QPL system access functions set the ERR variable with a value of 0 (zero) for success, or a negative value for an error condition. ERR values greater than 99 correspond to the QIP error codes (Appendix C). Note that ERR values less than 100 are recoverable (or informational), and values greater than 100 are fatal. In addition many of the System Access functions set the STATUS variable with a value related to the command. e.g. SEARCH("July 22, 1990") IF STATUS == 0 then DISP "No matching string",WAIT ELSE SNEXT(); IEND Page --79-- Note that because QPL programs may be executed from the either the DOCUMENT buffer or the PROGRAM buffer, your program should use the DOC() function to explicitly move to the Document buffer before any Document buffer Text or Table references are made (this should only need to be done once at the beginning of a program). LIST OF QPL COMMANDS -------------------- DOS("command") - Executes a DOS command. Note that DOS("") with no command exits to a DOS shell. Refer to section 3.5.9 (DOS COMMANDS) for more details. CALC("calculation-expression(s)") The parameter may contain multiple expressions separated by semicolons. Refer to section 3.1.1 (CALCULATOR) for more details. A calculation-expression may also contain quoted strings such as C1 = "Foo Bar". Because the calc-expression itself is also a string, you must be use DIFFERENT types of quotation marks (single and double) for delimiting the calc-expression and any embedded strings. Use one set for the calc-expression and another for the embedded string, e.g: e.g. CALC("C1R5$='HEAD OFFICE'; C2R5 = 800") e.g. CALC('C3 = SEQ$("ABC001",1)') DELETE() - Deletes the currently marked range (section 3.2.1 DELETE) (see the MARK() command below). It puts a copy of the deleted data in the Work Area where it may later be retrieved by PASTE. DOC() - Move to Document buffer. This ensures that any text or table references in your program use the data in the Document, while still allowing you to execute it from either buffer (Document or Program). GOTO("position") Immediate jump to the specified position. (3.10.4). Refer to section 3.10.4 (GOTO) for more details. Note that GOTO jumps to the given position in the current buffer. Therefore it is wise to use the DOC() command at the start of your program to ensure you go to the place you want in your document, regardless of where you are when you execute the program. INSERT(string) Inserts the specified text at the CURRENT cursor position. To force a new line (carriage return) after the inserted text, put a "^M" ( M or ) at the end of the string to be inserted. If you want to insert a quote as part of the text string, you must use the alternative quote marks to those surrounding the full text string. e.g. GOTO("P1L5"); INSERT("enter this 'quote' into the document^M") e.g. INSERT(P1L5) /* copies the data from Page 1, Line 5 */ e.g. INSERT(A1) /* insert the current contents of the variable */ Page --80-- Note that INSERT() ignores the current Insert/Overwrite mode. It always inserts. Therefore, INSERT() may not be used to insert data into a Table. You must use CALC() or a Macro instead. MACRO("macro-string") - execute the keys recorded in the Macro-string. Refer to the MACRO section at the start of Appendix A for details. MARK("start","end") Both start and end positions must be valid TEXT positions (section 2.8). To mark a complete line of text or a table row, you must explicitly specify the full cursor position. e.g. MARK( "L5X1", "L5XE") /* mark Line 5 of the current page */ e.g. MARK( "C1R3", "CER3") /* mark Row 3 of the current table */ Note that MARK refers to the data positions in the current buffer. Therefore it is wise to use the DOC() command at the start of your program to ensure you mark the data you expect from your document, regardless of where you are when you execute the program. OUTPUT("Range-to-print","Number-of-copies","Data-type toggle") Print text or table data, or a QPL program, from within a program. Refer to section 3.7.1 (PRINT DATA) for more details of this command. Any of these parameters may be omitted. The "Range-to-print" defaults to the currenly marked data (if any) or the current buffer (Document or Programs). The "Number-of-copies" defaults to 1. The toggle defaults to its current value. Possible settings are: "0" for BOTH, "1" for TEXT ONLY, "2" for TABLES ONLY. e.g. OUTPUT("P1L1..5") e.g. OUTPUT("T1","3","2") /* print 3 copies of the table */ PASTE() - Pastes data from the Work area to the CURRENT cursor position. (section 3.2.4 PASTE). It may be used to restore data that has been deleted, or with DELETE() to do a Move or Copy operation. e.g. MARK("P1L5X1","P1L10XE"); DELETE() GOTO("P2L1"); PASTE() REPLACE("Search-string","Replace-string","Verify toggle","Direction toggle", "Ignore-case toggle","Wildcards toggle","Full-words-only toggle") Search for every occurence of a string and replace it with another. It can only be used for replacing text data (not tables). Refer to section 3.10.3 (REPLACE) for more details of this command. Any of these parameters may be omitted. The search and replace strings default to the values used in a previous REPLACE command. The toggle defaults to its current value. Possible settings are: Verify: "0" for NO, "1" for YES. Direction: "1" for FORWARDS, "0" for BACKWARDS. Ignore case: "0" for NO, "1" for YES. Wildcards: "0" for NO, "1" for YES. Full words: "0" for NO, "1" for YES. Page --81-- Note that QPL mode is stopped temporarily to accept input from the keyboard for Verify responses. e.g. REPLACE("colour","color") e.g. REPLACE("abcde","test data","1",,"1",,"1") SEARCH("Search-string","Direction toggle","Ignore-case toggle", "Wildcards toggle", "Full-words-only toggle") Search for the first occurence of a particular string. Refer to section 3.10.1 (SEARCH) for more details of this command. Any of these parameters may be omitted. The search string defaults to the value used in a previous SEARCH command. The toggles default to current values. Possible settings are: Direction: "1" for FORWARDS, "0" for BACKWARDS. Ignore case: "0" for NO, "1" for YES. Wildcards: "0" for NO, "1" for YES. Full words: "0" for NO, "1" for YES. SNEXT() - This is used with SEARCH() to find every occurence of the string. SEARCH() and SNEXT() both return the STATUS variable = 1 when a match is found and STATUS = 0 when it cannnot find a match. e.g. DOC(); GOTO("P1L1"); N1 = 0 SEARCH("test 'quote'",,"1") /* find "test 'quote'" */ WHILE ( STATUS <> 0 ) DO N1++ /* increment count */ SNEXT() /* find next occurence */ WEND DISP "Number of Matches was ", N1, WAIT(0) END SORT("Key column 1","Sort-order toggle","Data-type toggle", "Key column 2","Sort-order toggle","Data-type toggle", "Key column 3","Sort-order toggle","Data-type toggle", "Mode toggle", "Ignore-case toggle") Sort the data in a table. Refer to section 3.8.2 (SORT) for details. This command can only be executed from Table mode (see TABLE() below). The toggles default to current values. Possible settings are: Sort order: "0" for ASCENDING, "1" for DESCENDING. Data type: "0" for ALPHA, "1" for NUMERIC. Mode: "0" for SECTION, "1" for FULL TABLE. Ignore case: "0" for NO, "1" for YES. e.g. SORT("C3","1","1") e.g. SORT("C1","0","0","C2","0","1",,,,"1","1") SUBTOTAL("Key column 1","Key column 2","Key column 3","Column(s)-to-calc", "Label toggle","Ruled-lines-after-totals toggle") Page --82-- Calculate Subtotals for table data. Refer to section 3.8.3 (SUBTOTAL). This command can only be executed from Table mode (see TABLE() below). The toggles default to current values. Possible settings are: "Label: "0" for SUBTOTAL, "1" for COLUMN TITLE "Ruled-lines: "0" for NO, "1" for YES e.g. SUBTOTAL("C1",,,"C4..6") e.g. SUBTOTAL("C3","C4","C5","C8,C10..12","1","1") TABLE() - Switch to TABLE mode. You must be in the Document buffer when you try to change modes (see DOC() above). e.g. DOC(); TABLE(); GOTO("T1"); SORT(.....) TEXT() - Switch to TEXT mode. You must be in the Document buffer when you try to change modes (see DOC() above). e.g. DOC(); TEXT(); GOTO("P1"); SEARCH(.....) UPDATE("Condition 1","Function 1","Condition 2","Function 2", "Condition 3","Function 3","Verify toggle","Mode toggle", "Ignore-case toggle", "Wildcards toggle") Search for specific table data and apply the given Update function. Refer to section 3.8.1 (UPDATE) for details about this command. This command can only be executed from Table mode (see TABLE() above). The toggles default to current values. Possible settings are: Verify: "0" for NO, "1" for YES. Mode: "0" for SECTION, "1" for FULL TABLE. Ignore case: "0" for NO, "1" for YES. Wildcards: "0" for NO, "1" for YES. Note that QPL mode is stopped temporarily to accept input from the keyboard for Verify responses and for the EDIT Update function. e.g. UPDATE("C5 < 0", "EFFECT(C5,RED)") e.g. UPDATE("C3='east' AND C4='smith'","DELETE",,,,,"1",,"1") Page --83-- DEBUG FUNCTIONS --------------- DEBUG is used as an aid to help find problems in your QPL program. It lets you see what the program is doing as it executes. The DEBUG(n) function is used to set and read the current DEBUG mode. The parameter 'n' determines which of several DEBUG options are invoked. N1 = DEBUG(n) where n = 1 - DUMP program variables when program terminates (either normally or abnormally) 2 - TRACE execution of each statement or command 4 - PRINT the DUMP or TRACE information rather than displaying on the screen 8 - BELL rings if non-fatal error 16 - STOP program execution on non-fatal errors special case if N = 0 - reset DEBUG mode (no options invoked) -1 - Immediate "SNAPSHOT" DUMP of all program variables. Note that the above values of n may be "added" to set multiple options. e.g. N1 = DEBUG(3) - set DUMP and TRACE N1 = DEBUG(1+4+16) - set DUMP, PRINT, and STOP DUMP ---- DUMP if activated, is invoked on normal termination of a program, or if the program terminates abnormally as a result of an error or via a SNAPSHOT. If PRINT is on, the value of all non-zero, non-empty variables will be printed. e.g. A1 = "Test" A2 = "String" N1 = 1990 N2 = 3 If print is off, then a SNAPSHOT Dump window will be displayed on the screen: +------ SNAPSHOT Dump of Testprog/14, Error = 0 -----+ | Expression: ................................... | | | +----------------------------------------------------+ You can evaluate any numeric or string expression, such as LEN(A1), or N3 + VAL(A5). The result will be shown on the line below the expression line, with string values in quotes. The window will remain open, allowing more expressions to be entered, until you close it with , or . If the DUMP arose from a SNAPSHOT, then program execution will continue. Note the name of the QPL program, the current line number, and the error status displayed in the window title line. TRACE ----- TRACE shows the line number and name of every QPL statement or command as the program executes. Page --84-- If the PRINT option is on the output will be printed. e.g. TESTPROG1/17 - DISP TESTPROG1/18 - IF If the PRINT option is off the output will be displayed in a message window for EVERY statement and will close only when you press , or . For this reason, you will probably only use this combination of options on limited sections of your program. PRINT ----- PRINT is used to control the destination of other DEBUG options (DUMP, and TRACE). If the currently setup printer is off-line any TRACE and DUMP information intended for the printer will be IGNORED. BELL ---- This BELL option is used to check whether non-fatal calculation or conversion errors may be affecting your program. An alarm will sound each time a non-fatal error occurs, but will not suspend or stop execution of the program. STOP ---- Programmers who may want to locate non-fatal errors more precisely can turn on the STOP option. This will force all non-fatal errors to be treated as if they were actual fatal, causing program execution to halt and displaying an error window citing the line number where the error occurred. Page --85-- A P P E N D I X B QIP SYSTEM VARIABLES -------------------- These QIP system variables may be referenced (but not assigned) by the Calculator, QPL programs, most Table processing commands (e.g. UPDATE), and in the GOTO prompt. CTAB, ETAB - CURRENT Table number Note ETAB is not available to Calculator CSEC - CURRENT Section number COL, ECOL - CURRENT and END Column number CROW, EROW - CURRENT and END Row number CTROW - CURRENT Table-Relative Row number CPAGE - CURRENT Page number CLINE - CURRENT Line Number CDOC$ - CURRENT Document name (string) ERR - Error code 00 - 99 Non Fatal 100 - 999 Fatal ALL QIP commands set the ERR variable. These correspond to the error numbers displayed with the messages in error windows. Refer to Appendix C for a list of error codes and messages. STATUS - Exit status of last command executed, STATUS is a value representing status of the operation (e.g. the number of rows matched by UPDATE). Note that not all commands set the STATUS variable (only set where appropriate). EXAMPLES: Assign the cell at Column 1 Row 1 to be the current Document name C1R1 = CDOC$ As the destination of a GOTO - Move to the last Section of the Last Table T(ETAB)S2R(CROW) Used as a condition for UPDATE IF CROW <> EROW AND C1RC = "YES" OR CCRE = "MAYBE" Note the difference between the Item specifications CC, and RC (CONTENTS of a cell in the current Column or current Row) and the System Variables COL, and CROW which are the VALUES of the current Column and Row numbers. QIP BUILT-IN FUNCTIONS ---------------------- The following is a list of all the functions built-in to QIP. These functions can be used anywhere a number or string is required. They may be evaluated, used in an expression, assigned to a table position, and assigned to a QPL string or numeric variable ABS() Return the absolute value of a given number. ADD() Add the data in the specified table column. Page --86-- SUM() Add (alternative function name) ASCII() Return the ascii value of the first character in a string ATN() Arc Tangent ATAN() Arc Tangent (alternative function name) AVE() Calculate the average value of the data in a column. AVG() Average (alternative function name) BALANCE() Calculate a running balance. BGRAPH$() Generate a stacked Bar graph using column data. CHR$() Return the ascii character of the given number COS() Cosine COUNT() Count the number of data values in each specified column. CNT() Count (alternative function name) DATE() Calculate the date 'n' days before or after a given date. DAY$() Return the day of the week on which a given date falls. DAYS() Calculate the number of days between 2 dates. DEBUG() Set the current Mode for debugging QPL Programs. DEGREES() Specify Radians or Degrees (for trigonometric functions). DIV() Divide the data values in each row. DNUM$() Convert a numeric date to string format. DVAL() Convert a date string to a numeric date. EXP() Calculate the exponential. The constant (e) to a specified power. FIX() Return the truncated integer value of a given number. IGRAPH$() Generate an Interval graph of the data in your table. INKEY$() Control input from the keyboard from within a QPL program. INSTR() Finds the first position of 'string 2' within 'string 1'. INT() Return the lowest integer value of a given number. LEFT$() Return the 'n' characters from the left of a string. LEN() Return the length of a string. LN() Calculate the natural logarithm (log e) of a number. LOG() Calculate the base 10 logarithm of a given number. MATCH$() Find a given string in a specified 'search' column. MAX() Determine the maximum data value in a column. MID$() Return 'n' characters from a given start position. MIN() Determine the minimum data value in a column. MONTH$() Return the name of a given month. MTIME() Calculate time in minutes before or after a given time. MUL() Multiply together the data values from each row MLT() Multiply (alternative function name) NOW() Return the current time. NUM$() Convert a numeric value to string format PGRAPH$() Generate a Point graph of the data in your table. PI A variable with value 3.141592653589793 RANDOMIZE() Initializes the random number generator. RIGHT$() Return the rightmost 'n' characters of a given string. RND() Generate pseudo-random numbers. ROUND( Rounds a given number to the nearest power of 10. SECS() Calculate the number of seconds between two times. SEQ$() Assign a series of sequential values to a column. SGN() Return the sign value of a given number. SIN() Sine SQR() Calculate the square root of a number. STD() Calculate the Standard deviation of data in a column. STRING$() Return a string of specified length using the given character SUB() Subtract the data values in the specified column. SYS$() Read relevant system information (string format). SYS() Read status information about the current system. TAN() Tangent TIME() Calculate time in seconds before or after a given time. TNUM$() Convert a numeric time to string format. Page --87-- TODAY() Return the current date. TVAL() Convert a time string to a numeric time. VAL() Convert a string to its numeric value WIDTH() Return the width of the specified column. The following section is a list of the QIP built-in functions grouped by similar functionality. This list provides detailed information on return values, argument syntax, and data types. Note that there is a description of each of these functions available on QIP Help screens. The Help screens also include an example of the use of each function. DATE AND TIME FUNCTIONS ----------------------- Date formats may be either YYMMDD or YYYYMMDD. They can be set with QSETUP. A NUMERIC_TIME is always specified in HHMMSS format. A NUMERIC_DATE must be specified in YYMMDD or YYYYMMDD format regardless of current date format setting (assumes 20th century). The format of a DATE_STRING may be YY/MM/DD, MM/DD/YY, or DD/MM/YY, where the separator character (e.g. '/' ) and the year YY or YYYY is set with QSETUP. The format of a TIME_STRING is always "HH:MM:SS", where the actual separator character (e.g. ':') is set with QSETUP. DATE() Calculate a new date by adding (or subtracting) a specified number of days to a given date. NUMERIC_DATE_2 = DATE( NUMERIC_DATE_1, NUMBER_OF_DAYS ) DAY$() Return the day of the week on which a given date falls DAY_STRING - DAY$( NUMERIC_DATE ) DAYS() Calculate the difference (number of days) between 2 dates. NUMBER_OF_DAYS = DAYS( NUMERIC_DATE_1, NUMERIC_DATE_2 ) DNUM$() Convert a numeric date to string format DATE_STRING = DNUM$( NUMERIC_DATE ) DVAL() Convert a date string to a numeric date NUMERIC_DATE = DVAL( DATE_STRING ) MONTH$() Return the name of a given month MONTH_STRING = MONTH$( NUMERIC_MONTH ) MTIME() Calculate a new time by adding or subtracting a specified number of minutes to a given time NUMERIC_TIME_2 = TIME( NUMERIC_TIME_1, NUMBER_MINUTES ) This function is useful for setting the ALARM time where seconds are not important. Page --88-- NOW() Return the current time NUMERIC_TIME = NOW The result will always be in HHMMSS format. SECS() Calculate the difference (number of seconds) between the two times. NUMBER_SECONDS = SECS( NUMERIC_TIME_1, NUMERIC_TIME_2 ) TIME() Calculate a new time by adding or subtracting a specified number of seconds to a given time NUMERIC_TIME_2 = TIME( NUMERIC_TIME_1, NUMBER_SECONDS ) TNUM$() Convert a numeric time to string format TIME_STRING = TNUM$( NUMERIC_TIME ) TODAY() Return the current date NUMERIC_DATE = TODAY NUMERIC_DATE = TODAY() TVAL() Convert a time string to a numeric time NUMERIC_TIME = TVAL( TIME_STRING ) CONVERSION FUNCTIONS -------------------- ASCII() Return the ascii value of the first character in a string NUMBER = ASCII ( STRING ) CHR$() Return the ascii character of the given number STRING = CHR$( NUMBER ) STRING$() Return a string of the specified length using the given character. STRING = STRING$( LENGTH, CHARACTER ) or STRING = STRING$( LENGTH, ASCII_VALUE ) NUM$() Convert a numeric value to string format STRING = NUM$( NUMBER ) VAL() Convert a string to its numeric value NUMBER = VAL( STRING ) STRING FUNCTIONS ---------------- INSTR() Finds the first position of 'string 2' within 'string 1'. NUMBER = INSTR( STRING_1, STRING_2 ) LEFT$() Return the left 'n' characters of a given string. RESULT_STRING = LEFT$( STRING, NUMBER_CHARS ) MATCH$() Looks for a given string in a specified 'search' column in the current table. When it finds a match, it returns the value from the 'target' column in the same row, otherwise it returns an empty string. Page --89-- The 'target' column is optional - if it is not specified, the value from the next column in the table is returned. STRING = MATCH$( SEARCH_STRING, SEARCH_COLUMN, TARGET_COL ) MID$() Returns a string of 'n' characters, starting from a specified position of the given string. String positions start from character 1. RESULT_STRING = MID$( STRING, POSITION, NUMBER_CHARS ) RIGHT$() Return the right 'n' characters of a given string. RESULT_STRING = RIGHT$( STRING, NUMBER_CHARS ) NUMERIC FUNCTIONS ----------------- ABS() Return the absolute value of a given number RESULT_NUMBER = ABS( NUMBER ) INT() Return the lowest integer value of a given number RESULT_NUMBER = INT( NUMBER ) EXP() The exponential function -- e to the specified power e.g. N1 = EXP(2) is equivalent to e**2 RESULT_NUMBER = EXP( POWER ) FIX() Return the truncated integer value of a given number RESULT_NUMBER = FIX( NUMBER ) LEN() Return the length of a given string NUMBER = LEN( STRING ) LN() Calculate the natural logarithm (log e) of the given number RESULT_NUMBER = LN( NUMBER ) LOG() Calculate the base 10 logarithm of the given number RESULT_NUMBER = LOG( NUMBER ) RANDOMIZE() Initializes the random number generator. If a value is not specified or is 0, a standard initial value will be used. This occurs automatically whenever QIP is loaded. Otherwise, a time-based randomizer is used to generate a random initial value. RESULT = RANDOMIZE or RESULT = RANDOMIZE (NUMBER) RND() Generate pseudo-random numbers. If a 'limit' value is not specified or is 0, random numbers between 0 and 1 will be generated. Otherwise, integers between 1 and the specified limit will be randomly generated. RESULT = RND or RESULT = RND( LIMIT ) ROUND() Rounds a given number to the nearest power of 10. If the specified 'power' factor is negative, the number will be rounded to that many decimal places. If the 'power' is positive it will be rounded to the nearest integer value to the 'power' of 10. The 'mode' is used to determine the rounding (-1 = round down, 0 = to nearest, 1 = round up) RESULT_NUMBER = ROUND( NUMBER, MODE, POWER ) Page --90-- SGN() Return the sign value of a given number (-1 = negative, 0 = 0, 1 = positive) SIGN_VALUE = SGN( NUMBER ) SQR() Return the square root of the given number. RESULT_NUMBER = SQR( NUMBER ) TRIGONOMETRIC FUNCTIONS ----------------------- ATN() or ATAN() Arc Tangent COS() Cosine SIN() Sine TAN() Tangent RESULT = function( NUMBER ) DEGREES() Set a switch to control whether the trigonometric functions use interpret their arguments as radians (switch = 0) or degrees (switch = 1) It also returns the previous setting of the switch. PREVIOUS_SWITCH = DEGREES( SWITCH ) PI A system variable containing the value 3.141592653589793 TABLE BLOCK FUNCTIONS --------------------- These calculations can be applied to any table column (or a range of rows within a column). Any valid table reference may be specified. Note however that the TABLE BLOCK Functions work only on a SINGLE SECTION at a time. Refer to section 2.8 for a detailed explanation of Table range specifications. ADD() Add the data in the specified table column. SUM() RESULT = ADD( TABLE_RANGE ) or RESULT = SUM( TABLE_RANGE ) AVE() Calculate the average value of the data in a column. AVG() RESULT = AVE( TABLE_RANGE ) or RESULT = AVG( TABLE_RANGE ) CNT() Count the number of data values in each specified column. COUNT() RESULT = CNT( TABLE_RANGE ) or RESULT = COUNT( TABLE_RANGE ) DIV() Divide the data values in each row. RESULT = DIV( TABLE_RANGE ) MAX() Determine the maximum value in the specified table column. MIN() Determine the minimum data value in a column. RESULT = MAX( TABLE_RANGE ) RESULT = MIN( TABLE_RANGE ) MUL() Multiply all the data values from each row in the MLT() specified table column. RESULT = MUL( TABLE_RANGE ) or RESULT = MLT( TABLE_RANGE ) Page --91-- SEQ$() Return a sequence of values, starting from an initial value and incremented in regular steps. The starting value can be a string (in quotes) or a number. The default increment (if not specified) is 1. COLUMN = SEQ$( START_VALUE, INCREMENT ) or COLUMN = SEQ$( START_VALUE ) STD() Calculate the Standard deviation of data in a column. RESULT = STD( TABLE_RANGE ) SUB() Subtract the data values in the specified column. RESULT = SUB( TABLE_RANGE ) WIDTH() Return the width of the specified column in the current table. The column is specified as a number. RESULT = WIDTH( COLUMN_NUMBER ) GRAPH FUNCTIONS --------------- BGRAPH$() Generate a stacked Bar graph of the data in your table. You may graph one column of data (e.g. C2 or [COST]) or a range of consecutive columns. The width of the resulting graph is 75 characters (if it is assigned to a string) or the width of the destination table column. DESTINATION = BGRAPH$( COLUMN_RANGE, MIN, MAX) IGRAPH$() Generate an Interval graph of the data in your table. This displays an arrow ("<------->") showing the difference between the start and end columns. If the value in the start column is greater than in the end, the arrowheads will be reversed (">-------<") Refer to BGRAPH$() above for further details DESTINATION = IGRAPH$( START_COL, END_COL, MIN, MAX) PGRAPH$() Generate a Point graph of the data in your table. You may graph one column of data (e.g. C2 or [COST]) or a range of consecutive columns. The width of the resulting graph is 75 characters (if it is assigned to a string) or the width of the destination table column. DESTINATION = PGRAPH$( COLUMN_RANGE, MIN, MAX) FINANCIAL FUNCTIONS ------------------- BALANCE() Calculate a running balance by evaluating the specified expression and adding the result to the previous value. The results are written to a table column (or a range of rows within a column). Any valid Table Reference may be specified. A `brought_forward' value may be specified as the initial balance. If omitted, an initial balance of $0 is assumed. RESULT = BALANCE( EXPRESSION ) or RESULT = BALANCE( EXPRESSION, BROUGHT_FORWARD ) Page --92-- SYSTEM FUNCTIONS ---------------- SYS() Return numeric status information about the current system depending on the value you specify. STATUS = SYS( VALUE ) SYS$() Returns a string containing relevant system information according to the value you specify. STRING = SYS$( VALUE ) SYS() VALUES Return numeric system status information 0 => QIP major Version number e.g. 1 1 => Printer Status [0 = online, -1 = offline] 2 => Current Buffer [0 = Document, 1 = Program] 3 => Current Mode [0 = Text, 1 = Table] 4 => Ovr/Ins Mode [0 = Overwrite, 1 = Insert] 5 => Table Cursor Direction [0 = Right, 1 = Down, 2 = No movement] 6 => Table Append Row Mode [0 = Off, 1 = On] 7 => Effect Priority [0 = As Set, 1 = Data] 8 => Executing a Simulation Program [0 = No, 1 = Yes] SYS$() VALUES Return system information in string format 0 => QIP Version number e.g. "V1.00" 1 => Current Cursor Location e.g. "P1L5X20" or "T1S2C4R3" 2 => Current Date Format e.g. "MM/DD/YY" or "YYYY-MM-DD" 3 => Simulation Program Name e.g. "SIMUL1" 4 => Alarm Message (as set) e.g. "Marketing Meeting" 5 => Alarm Date (as set) e.g. "06/05/89" 6 => Alarm Time (as set) e.g. "10:30:00" 7 => Search string e.g. "receive" 8 => Replace string e.g. "return" 9 => Current Printer Name e.g. "Toshiba P351" 10 => Current Print Range e.g. "P1..3" 11 => Current File Path e.g. "C:\ZIP\MY.QIP" 12 => Characters (4) used for Bar Graphs e.g. "#@*$" 13 => Characters (4) used for Point Graphs e.g. "*+#x" PROGRAMMING FUNCTIONS --------------------- DEBUG() Set the current Mode for debugging QPL Programs. You may set any combination of modes by adding them together. DEBUG() modes can be set in advance from the Calculator as well as from the actual program. The only exception is mode -1 which has an immediate effect on the program. DEBUG( MODE ) or CURRENT = DEBUG( MODE ) Refer to "DEBUG FUNCTIONS" in Appendix A for more details. DEBUG MODES 0 Turn debug mode off. 1 Dump program variables whenever the program stops. Page --93-- 2 Trace execution of every QPL statement or command. 4 Print the Debug information rather than displaying it. 8 Ring a bell whenever a non-fatal error occurs. 16 Stop program execution if a non-fatal error occurs. -1 Do an IMMEDIATE snapshot dump of the program Variables This option can only be set within the program, and does not change the current mode. This cannot be combined with other modes. INKEY$() Control input from the keyboard in a QPL program. CHAR = INKEY$() Scans the keyboard buffer. If a key is waiting, it returns the actual key pressed, else returns an empty string. CHAR = INKEY$( NUM ) where NUM = 0, 1 or 2 0 - Scan the keyboard buffer to test if a key has been pressed. Returns CHR$(1) if a key is waiting, else an empty string. 1 - Wait for key input. Returns the actual key pressed. 2 - Returns the last key pressed. Page --94-- A P P E N D I X C QIP ERROR CODES --------------- The following is a list of all QIP error codes and their associated messages. In most cases corrective action can be discerned from context. In other cases suggestions or examples are included in the error message text itself. Note that QIP Help screens exist for all QIP commands, options, prompts and menus. Help screens also contain examples where appropriate. NON-FATAL ERRORS ---------------- 1 "No numeric data in cell (empty)" 4 "Divide by zero" 8 "Calculation overflow" 10 "Could not successfully converge on an IRR" 11 "Zero or negative 'b' in a = b^c" 12 "Number is outside legal range for function" 13 "Numeric conversion error" 14 "DATE() result is BC" 15 "TIME() result is not on the same day" 16 "Calculation underflow" 17 "User-definable window already exists" 18 "Reqd cursor position is outside window" 19 "Maximum numeric length (16 digits) exceeded" 20 "Maximum string length exceeded" 21 "No match in LOOKUP$ statement" QPL ERRORS ---------- 100 "Syntax error" 101 "Out of memory: cannot continue program " 102 "String not terminated before end of line" 103 "Unexpected end of program" 104 "Macro syntax error" 105 "Error in program command" 106 "This command/function is not available here" 107 "Invalid command name" 108 "Invalid Assignment" 109 "Invalid loop command - No loop (FOR or WHILE) open" 110 "Invalid character for prompt switch" 111 "Text string for prompt input is too long" 112 "Invalid data in prompt" 113 "Stack overflow. Too many nested loops or subroutines" 114 "Requires an input variable (e.g. A1, N1)" 115 "String must contain a valid value" 116 "Invalid increment operator for NUM command" 117 "Invalid or missing label for GOTO" 118 "Expected a string within quote marks" 119 "Justify char must be at start of format field" 120 "Not a valid format character" 121 "Invalid format string - does not allow input " 122 "Format string is too long to fit display window" 123 "Invalid format string for Numeric variable" 124 "Expects a row reference after a column range" Page --95-- 125 "Must be the current table section" 126 "Must be the current table" 127 "Must be in the Document buffer" 128 "Variable name must be last entry in INPUT command" 129 "Cannot use nested IF statements" 130 "Cannot use NEXT or WEND inside an IF statement" 131 "Must be in Table mode" 132 "Invalid expression" 133 "Invalid effect (color and/or UL,HL,EX)" 134 "Invalid data reference" 135 "Expected a data position to be specified" 136 "Invalid data specification or variable name" 137 "Expected a data range to be specified" 138 "Expected a reference to a table position" 140 "Variable type must be numeric (N1..N50)" 141 "Variable type must be string (A1..A50)" 142 "Number too large (max=16 digits)" 143 "Invalid expression" 144 "Must be a numeric function" 145 "Not a valid string expression" 146 "Missing '('" 147 "Expected a ')' here" 148 "Missing comma" 149 "Invalid comparison" 150 "Missing command separator ';'" 151 "Missing '='" 152 "Missing keyword ("TO") in FOR loop" 153 "Missing keyword ("DO") in WHILE loop" 154 "Missing keyword ("IEND") after IF" 155 "Invalid label/label not found" 156 "Missing '<' at start of program title" 157 "Missing '>' at end of program title" 158 "Invalid program name" 159 "Invalid hot key in program title" 160 "Program already exists" 161 "Program does not exist" 162 "A program name must be entered" 163 "Cannot execute a program with more than 100 lines" 164 "Cannot Create - 100 programs already exist" 165 "More than 100 programs - Program ignored" BUFFER and WORD PROCESSING ERRORS --------------------------------- 200 "Not enough memory - cannot insert Effects" 201 "Cannot create this Header/Footer" 202 "A Header/Footer already exists on this Page" 203 "Cannot Delete Default Ruler" 204 "This ruler cannot be reloaded" 205 "Cannot setup default Document ruler" 206 "Cannot delete soft Pagebreak" 207 "Cannot insert Pagebreak on virtual Line" 208 "Cannot add text to Pagebreak line" 209 "No data exists in the Work area" 210 "Cannot Switch buffers during a Block operation" 211 "Cannot Move or Copy into the Marked Area" 212 "Marked area is bigger than one page" 213 "Cannot Expand more than 1 line of text" 214 "No data has been Marked" Page --96-- 215 "Cannot find Bookmark " 216 "Must specify a Search pattern" 217 "Cannot Add or Delete lines to Table Title" 218 "Invalid string (max length = 70 chars)" FILER ERRORS -------------- 250 "Not enough memory for the Shell" 251 "Cannot find program" 252 "Disk Space Exhausted" 253 "File Error" 254 "File already exists" 255 "File does not exist!" 257 "No Pages available - Last page truncated" 258 "Data file is damaged. Attempting to restore..." 259 "Cannot change files while in a macro" 260 "Invalid file or directory" 261 "Cannot create File " TABLE PROCESSING ERRORS ----------------------- 300 "Can't create a table here" 301 "Too many tables - can't create another" 302 "Not enough memory to proceed!" 303 "Illegal column width entry" 304 "Cannot insert column - Table is too wide." 305 "Cannot have more than 50 columns" 306 "Illegal indent position" 307 "Illegal range entry" 308 "Can't join - tables have differing column widths" 309 "Can't join - sections are not contiguous" 310 "Illegal decimal place entry" 311 "Illegal number of rows to insert" 312 "Illegal Goto destination" 313 "Copy/Move operation already selected" 314 "Illegal Search condition" 315 "Illegal Update function" 316 "Illegal column specification" 317 "Illegal column range input" 318 "Column range must not include key column(s)" 319 "Must enter a value for this field" 320 "Invalid MAX or MIN entry" 321 "Illegal row range" 322 "Memory or Disk full - can't complete SORT!" 323 "Unable to save in Work area - aborted" 324 "Can't copy to the Work area" 325 "Can't copy to a table of differing format" 326 "Can't join tables containing multiple sections " 327 "Range reference is not available in a Search condition" 328 "Total table width plus table indent position > 215" 329 "Cannot Copy/Move into a table header" 330 "Cannot do that operation at this point" 331 "Cannot do this to a Column Header row" 332 "There is no existing table" 333 "Too many lines to Sort" Page --97-- PRINTER ERRORS -------------- 350 "Incorrect data range specification" 351 "Incorrect line number" 352 "Incorrect table number" 353 "Incorrect section number" 354 "Incorrect row number" 355 "Incorrect QPL program name" 356 "Unable to find closing delimiter " 357 "Unable to match column " 358 "Number of copies value incorrect" 359 "Start page number value incorrect" 360 "Lines per page value incorrect or out of bounds" 361 "Left margin value incorrect or out of bounds" 362 "Top margin value incorrect or out of bounds" 363 "Error loading printer or device" 364 "Printer database QPRTDEFS.V01 not found" 365 "Unable to load specified font" 366 "Incorrect file name specification" 367 "Printer open error" 368 "Page range cannot be empty" 369 "Table range cannot be empty" 370 "Data specification not valid in this context" 371 "Substitution error or Illegal characters in substitution string " 372 "Error writing to disk or spool file" 373 "Error writing to network printer" GENERAL ERRORS -------------- 400 "Fatal error QIP ABORTING:" 401 "Keyboard initialization error" 402 "Filer initialization/loading error" 403 "Printer initialization error" 404 "Window initialization error" 405 "QPL initialization error" 406 "Menu initialization error" 407 "Editor initialization error" 410 "Out of memory" 411 "Help data is not available" 412 "Illegal date specified" 413 "Illegal time specified" 414 "Alarm date cannot be earlier than today" 415 "Alarm time must be after current time" 416 "Alarm message must be entered" Page --98-- A P P E N D I X D QSETUP CUSTOMIZATION PROGRAM ---------------------------- This is a stand-alone utility which allows user configuration of QIP's display colors " default settings, and other system parameters. Most setup " items may be modified within QIP " although some cannot. " QSETUP MAIN MENU +-----------------------------+ | Load from QSETUP.TXT | | Modify SETUP | | Change Colors | | Write System File and Exit | | Save to QSETUP.TXT (only) | | Exit without writing | +-----------------------------+ Normally there are two versions of QIP's system setup parameters. One is the QIP system file named QSYSTEM.V01, and the other is an ASCII text file named QSETUP.TXT. The usual procedure is to change a parameter value by running the QSETUP utility to modify configuration parameters and create a new system file with the updated settings. There are however a few parameters which cannot be set interactively within QSETUP. For these cases, you must edit the QSETUP.TXT file and manually change the values. QSETUP.TXT may be edited with any editor or word processor which can read and write ASCII files (including QIP itself). QSETUP.TXT contains numerous comments and descriptions for each settable item, noting its purpose, its default value, and range of legal values. Reading these comments can provide a good understanding of QSETUP and its effect on QIP. Since the two files generally contain the same information (just in different formats), QSETUP provides options to generate one from the other should either of them be lost for any reason. They also act as "backups" for each other. To generate a new QSYSTEM.V01 -- Run QSETUP, select "Load From QSETUP.TXT", then choose "Write setup and exit", and reply with an "N" (no) when it asks if you want to write a new QSETUP.TXT file. Note that a system file generated this way will NOT contain either HELP or ERROR messages. It is probably preferable to re-copy QSYSTEM,V01 from the original distribution disk and then run QSETUP to update all settings with the current values in QSETUP.TXT. To generate a new QSETUP.TXT -- run QSETUP, then immediately select "Write setup and exit", and reply with a "Y" (yes) when it asks if you want to write a new QSETUP.TXT file. LOAD FROM QSETUP.TXT -------------------- This option is used to read setup values from QSETUP.TXT. These values will OVERRIDE all current settings in the system file QSYSTEM.V01. Page --99-- When you have edited QSETUP.TXT you should be sure to select this option so that the updated values will be written to the new system file. MODIFY SETUP ------------ This option is used to modify QIP's configuration parameters. The new values will OVERRIDE all current settings in the system file QSYSTEM.V01. The MODIFY SETUP menu shows how similar items are grouped together. Selecting one of these categories will bring up one or more sub-menus that will lead you through the SETUP process. +---------------------------------+ | General Items | | Date and Time Formats | | Printer Selection | | Fonts and Colors | | Color Printer Codes | | Sheet Feeder Codes | | Translate Graphics Characters | | Key Customization | +---------------------------------+ General Items ------------- This category contains an assortment of miscellaneous items. Selecting the General Items option brings up the following sub-menu. +-----------+ | Misc | | Search | | Table | | Display | | Qpl | | Alarm | | Files | +-----------+ Selecting any of these brings up a menu or prompt which allows you to set various related paramters. Date and Time Formats --------------------- Selecting the Date and Time Formats option brings up the following sub-menu which allows you to set Date and Time format parameters. +------ Date and Time ------+ | Date Field Separator: .. | | Time Field Separator: .. | | | | Date Order MM/DD/YY | | Year System YYYY | +---------------------------+ Page --100-- Printer Selection ----------------- This category contains several printer related items. Selecting the Printer Selection option brings up the following sub-menu. +------ Printer Setup and Select ------+ | Setup Printer 0 | | Setup Printer 1 | | Setup Printer 2 | | Default Printer No (0-2) .... | | Paper Length (0-84) .... | | Top Margin (0-20) .... | | Left Margin (0-20) .... | | Eject Pages at End (0-3) .... | | Right Page Shift (1-20) .... | | | | Wait Between Pages No | | Output Data to Printer | +--------------------------------------+ Selecting any of these brings up a menu or prompt which allows you to set various related paramters. Fonts and Colors ---------------- Selecting the Fonts and Colors option brings up the following sub-menus. For each color you may set any or all of the font, typeface, size, and type size options. +-----------+ | Red | +---------------------------------+ | Green | | Letter Style Upright | | Yellow | | Typeface Draft | | Blue | | Characters Per Inch 10 | | Magenta | | Proportional Spacing No | | Cyan | | Use on this Pass Yes | | Default | +---------------------------------+ +-----------+ Note that fonts for BLACK and WHITE are not settable interactively, you can set these only by editing QSETUP.TXT. Color Printer Codes ------------------- This category is used to input the HEXADECIMAL control code sequences for selecting colors on a color printer. Selecting the Color Printer Codes option brings up the following sub-menus. +------- Color Codes -------+ | Color On .............. | +----- Color Printer -----+ | Black 1B5B33306D.... | | Use Color Printer No | | Red 1B5B33316D.... | | Setup Color Codes | | Green 1B5B33326D.... | +-------------------------+ | Yellow 1B5B33336D.... | | Blue 1B5B33346D.... | | Magenta 1B5B33356D.... | | Cyan 1B5B33366D.... | | White 1B5B33376D.... | | Color Off .............. | +---------------------------+ Page --101-- Sheet Feeder Codes ------------------ This category is used to input the actual HEXADECIMAL control code sequences for a Cut Sheet Feeder. Selecting the Sheet Feeder Codes option brings up the following sub-menus. +------ Cut Sheet Feeder -----+ +--------- Feeder Codes ---------+ | Use Cut Sheet Feeder No | | Load First Sheet ............. | | Set Feeder Codes | | Feed Next Sheet 912146....... | +-----------------------------+ | Eject Last Sheet 912147....... | +--------------------------------+ Translate Graphics Characters ----------------------------- This category is used to input the actual HEXADECIMAL codes for graphics characters. Selecting the Translate Graphics Characters option brings up the following sub-menus. +- Translate Graphics -+ | Map To Setup | +-- R1: From --+--- Map To ---+-----+ | Row 1 | | - [ c4 ] | Char 1: 2D | - | | Row 2 | | | [ b3 ] | Char 2: 7C | | | | Row 3 | | + [ c0 ] | Char 3: 2B | + | | Row 4 | | - [ c1 ] | Char 4: 2D | - | | Row 5 | | + [ d9 ] | Char 5: 2B | + | | Row 6 | | | [ c3 ] | Char 6: 7C | | | | Row 7 | | + [ c5 ] | Char 7: 2B | + | | Row 8 | +--------------+--------------+-----+ +----------------------+ Key Customization ----------------- This option lets you assign a key to a QIP function. Using this option you can customize QIP so that most of the editing and word processing keys you are familiar with can have the same meanings within QIP. Selecting the Key Customization option brings up the following menus: +----------------+ +------------------ 1:1 Keymap -------------------+ | Clear All | | Mapped Key Operation | | Reset Defaults | +---------------+---------------------------------+ | Print to File | | A | Left one word | | 1:1 Keymap | | C | Forward one screen | | 1:2 Keymap | | D | Right one character | | 2:1 Keymap | | E | Up one line | | 2:2 Keymap | | F | Right one word | +----------------+ | G | Delete character | | J | Help key | | R | Back one screen | +---------------+---------------------------------+ |ESC:Abort F10:Accept INS:Map new key DEL:Clear| +-------------------------------------------------+ Clear All - erases all existing key mappings Reset Defaults - loads the QIP default key mappings (Wordstar keys, etc) Print to File - writes a list of all existing key mappings to the file QKEYBIND.TXT in your current directory. n:n Keymap - allows you to view existing mappings, clear an old key assignment, or add a new key (map key to operation). Page --102-- When you have selected the required Keymap, a list of matching key assignments will be displayed. You may Arrow up and down, or use and to move through the list. Press to add a new key assignment, or to clear an existing one. When prompted to specify the "Key(s) to Insert", simply press the key(s) you want to use for the operation. (For "Key(s) to Clear", press the key already assigned to the operation, as shown in the displayed list). When asked to specify the "QIP Keycode(s)", press the key corresponding to the required operation, as shown in the following table. You will then be given a chance to confirm the key assignment, or deassignment. If the selected operation is a menu option, the operation corresponding to the first key will be shown, followed by "***". eg. Map S to F S will display the operation as "File menu ***" QIP OPERATIONS The following is a list of all the QIP operations and equivalent keycodes. Key Name Operation --------- --------- "Abort key" "Enter key" "Move to beginning of line" "Move to end of line" "Toggle Insert/Overwrite mode" "Delete character" Left Arrow "Move left one character Right Arrow "Right one character" Up Arrow "Up one line" Down Arrow "Move down one line" "Back one screen" "Forward one screen" "Forward tab" "Save and exit" "Exit all menus" "Insert line below" "Move to left margin" "Move to right margin" "Edit cell" Del "Delete to end of line" Left Arrow "Left scroll" Right Arrow "Right scroll" Up Arrow "Up scroll" Down Arrow "Scroll down one page" "Back one Page" "Forward one page" "Back Tab" "Cursor to top of screen" "Cursor to bottom of screen" Left Arrow "Left one word" Right Arrow "Move right one word" "Move to start of document" "Move to end of document" A "Access menu" B "Block menu" C "Column menu" E "Effects menu" Page --103-- F "File menu" L "Layout menu" O "Output menu" P "Process menu" Q "Display SORD information" R "Row menu" S "Search menu" T "Table menu" X "Exit" = "Toggle scale line" - "Toggle scale column" B "Reformat buffer" C "Cursor to middle of screen " D "Move line to middle of screen" E "Move line to to end of screen" F "Refresh screen" K "Set mark at cursor pos" L "Find next" N "Insert line above" P "Insert page break" Q "Goto previously set mark" R "Replace" S "Search" T "Swap next two characters" U "Undo Key" W "Delete one word" X "Move line to bottom of screen" Y "Delete line" \ "Swap text/table modes" _ "Swap next two characters" ^ "Temporary indent" "Help key" "QIP calculator" "Start/End macro recording" "Playback a macro" "Hide menus" "Paste Key" "Goto prompt" "Swap text/table modes" "Start ruled line drawing mode" "Execute key" "Evaluate input line" "Open to program menu" "Yank current line" "Goto document buffer" "Ruled line mode" "Shifted execute Key" DEFAULT KEYMAPPINGS A "Wordstar: left one word" C "Wordstar: forward one screen" D "Wordstar: right one character" E "Wordstar: up one line" F "Wordstar: right one word" G "Wordstar: delete character" Page --104-- J "Wordstar: help key" R "Wordstar: move to end of screen" S "Wordstar: left one character" T "Wordstar: delete one word" V "Wordstar: Insert/Overwrite mode" W "Wordstar: scroll up" X "Wordstar: down one line" Z "Wordstar: scroll down" O+ "Alternative: delete to end of line" O+ "Alternative: move up one page" O+ "Alternative: move down one page" O+ "Alternative: move to left margin" O+ "Alternative: move to right margin" O+Left Arrow "Alternative: scroll left" O+Right Arrow "Alternative: scroll right" O+Up Arrow "Alternative: scroll up" O+Down Arrow "Alternative: scroll down" Note: These alternative key mappings are designed for use on keyboards which do not support Shifted Special-Function keys eg. T5100, J3100SGT For example: is remapped onto O+ CHANGE COLORS -------------- The screen colors used by QIP can be chosen interactively with QSETUP. When you select the Change Colors option, QSETUP will display a mockup of the QIP screen and the following menu: +----------------------+ | Change Current Set | | First Color Set | | Second Color Set | | Monochrome Set | | LCD/Plasma Set | +----------------------+ The First Color Set and Second Color Set are predefined for color monitors (the QIP default colors are the "First" color set). The Monochrome Set and LCD/Plasma Set have also been pre-defined to be suitable for monochrome and plasma screens. These pre-defined sets should provide a good match for each screen type. If not, (or if you want to choose your own colors) you should select Change Current Set. This will bring up another menu which has options that allow you to change text, menu, prompt, and system window colors. Note that this menu and its sub-menus remain open until they are explicitly closed by hitting the key. +----------------+ | Text / Effects | | Popup Windows | | System Windows | +----------------+ Page --105-- The Text / Effects option allows you to change items such as the default text color, the color used to show underlining (which cannot be displayed on a color monitor), and the colors used for marked text areas and block cursors. The Popup Windows option lets you set colors for all of QIP's menus, prompts (also their Hot Key, Selected, and Lowlight colors), error message windows, help text, and QPL windows. The System Windows option allows you to change the colors of the system information windows like the status, effect and reminder lines, and the scale line and scale column. All of these options allow you to modify colors interactively by displaying sample text, windows, menus, or prompts along with a color palette. As you select colors from the palette the screen colors change to illustrate the current foreground and background choices. This makes it quite easy to see how the QIP screen will finally look. The color palette displays as two rows of 16 colors each. Use the UP and DOWN arrow keys to switch between the upper and lower rows, and the RIGHT and LEFT arrow keys to move back and forth across the row. The current selection in each row is shown by the "box" cursor. When you have finished with a section hit to accept the current settings or to cancel any changes and restore previous values. In either case you will be returned to the menu you selected that option from. You should then use the arrow keys or a hot-key to select another option from the same menu, or hit to close the menu and return to the previous menu. Note that it is possible to change colors by editing QSETUP.TXT but it is somewhat tedious (and difficult to visualize what the screen will actually look like). The recommended method is to use QSETUP and modify them "interactively". WRITE SYSTEM FILE AND EXIT -------------------------- Use this option to exit QSETUP and write your modifications into the system file -- QSYSTEM.V01. Selecting this option will unconditionally update the system file. You will however, be asked if you want to write a new QSETUP.TXT file at this time as well. +-------------------------------------------+ | Write new QSETUP.TXT file also (Y/N): ... | +-------------------------------------------+ Answering "Y" (yes) will write a new QSETUP.TXT file with the current settings for all setup parameters. Answering "N" (no) will not write a new QSETUP.TXT file. If you have just edited QSETUP.TXT and then run QSETUP to create a new system file, you need not write QSETUP.TXT again because its values were not changed inside QSETUP (although you may if you want to -- it won't hurt anything). If you used QSETUP to change colors, you should answer "Y" (yes) to write QSETUP.TXT at this time because some values have been changed inside QSETUP. It is generally a good idea to assure that both files contain the same (most current) information. Page --106-- SAVE TO QSETUP.TXT (ONLY) ------------------------- Use this option to exit QSETUP and write your modifications into the text file QSETUP.TXT. Selecting this option will unconditionally update the text file. This option will NOT update the system file QSYSTEM.V01. EXIT WITHOUT WRITING -------------------- This is an immediate EXIT from QSETUP. No changes will be applied and no files will be written. QIP and its setup parameters will be exactly as they were before you loaded QSETUP. NOTES ----- When modifying the colors of the system windows no "special example" is displayed on the screen, instead the actual system windows of the mockup screen will change to reflect the colors as you select them. QSETUP reads and writes the QIP system file QSYSTEM.V01. If for some reason this file is lost (or does not exist when you run QSETUP), a new one can be created by QSETUP from the information in QSETUP.TXT or its own internal defaults for each parameter. However, this new file will NOT contain the HELP and ERROR messages normally stored in the system file. Therefore it is preferable to copy QSYSTEM.V01 from the original distribution disk then update it with the current values in QSETUP.TXT if your system file should be lost. Page --107-- A P P E N D I X E QIP SIZES and LIMITS -------------------- The following is a list of some important QIP size limits. Screen Display Width 75/80 Characters 5 used for Scale Column (optional) Screen Display Height 21 Lines 39 Lines in EGA 43-line mode Minimum Document Width 20 Characters Maximum Document Width 220 Characters Maximum Document Length 100 Pages (depends on available memory) Note that as you approach this limit, warning messages will be displayed. If you exceed this limit, data will lost from the end of the Document. Maximum Lines per Page 84 Lines (14" legal size paper at 6 lpi) Minimum Lines per Page 22 Lines Maximum Tables per Document 50 Tables (depending on memory) Maximum Rows per Table 8000 Rows Minimum Sections per Table 1 Section Maximum Sections per Table 100 Sections Minimum Table Column Width 1 Character Maximum Table Column Width 75 Characters (1 screen width) Maximum Columns per Table 50 Columns (including ruled-lines) Maximum Table Width 215 Characters Maximum Column Header Lines 3 Lines Maximum Program Buffer Length 840 Lines - Maximum 10 pages of 84 lines Maximum QPL Program Length 100 Lines Page --108-- I N D E X ACCESS Menu 27 ALARM CLOCK 6, 27, 28, 29 APPENDICES Built-in functions 85 Error codes 94 Macro programming 68 QPL programming 68 QSETUP 98 Sizes and Limits 107 ASCII ASCII() 86, 88 Import 40, 41, 42 Export 40, 41 Files 3, 98 ATTRIBUTES 5, 8, 17, 34, 36, 37, 56, 58, 64 Prompt 36, 37 BLOCK Menu 32 BUFFER 3, 5, 6, 7, 18, 22, 27, 30, 31, 32, 47, 61, 65, 71, 87 Document 10, 12, 20, 21, 29, 30, 31, 32, 33, 34, 63, 65, 79, 80 Program 7, 21, 29, 30, 31, 63, 68, 70, 71, 79 Switching 10, 31 CALC() 80 CALCULATOR 6, 10, 27, 28, 31, 79, 85, 92 Prompt 27 QPL 79 CELL 5, 7, 10, 11, 12, 20, 23, 24, 25, 26, 27, 28, 31, 37, 65, 66, 67, 72, 85, 94, 99 Editing 16, 17, 18, 19, 20 Marking 16, 17 COLUMN menu 34 DELETE() 79 DOC() 79 DOCUMENT 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 19, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 38, 40, 41, 42, 44, 45, 47, 49, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 74, 77, 79, 80, 82, 85, 92, 95, 107 DOS() 79 EDITING 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27, 28, 30, 31, 40, 41, 44, 45, 55, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 76, 82, 97, 98, 99 Keys 10, 11, 14, 15, 16 Programs 30 Table 5, 7, 8, 11, 15, 16, 20, 31, 55 Text 2, 7, 8, 11, 14, 16, 20 EFFECT 2, 3, 6, 8, 12, 13, 14, 15, 16, 17, 19, 20, 38, 39, 51, 53, 54, 55, 65, 82, 92, 95, 98, 104 Menu 38 Printing 50, 51 EXPRESSIONS 10, 18, 22, 24, 25, 26, 27, 29, 54, 72, 73, 79, 83, 85, 91, 95 Numeric 24, 25 Logical 25, 26, 54 Precedence 25, 72, 73 FILE Loading 3 Menu 40, QIP 19, 20 FILES 3, 19, 20, 40, 41, 42, 49, 96, 98, 99, 105 FUNCTIONS 2, 8, 10, 19, 21, 25, 26, 27, 29, 30, 31, 54, 55, 56, 57, 68, 69, 71, 77, 78, 79, 82, 83, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 96 Built-in 85 Conversion 88 Date 87, 88 Financial 91, 92 Graph 91 Numeric 89, 90 Progamming 92, 93 QPL 78, 79, 80, 81, 82 String 88, 89 System 92 Time 87, 88 GOTO() 79 GRAPHICS Characters 15, 41, 48, 49, 101 INSERT() 79 KEYS Control 11 Editing 10 Function 10, 11 Menu 13 Table Editing 16, 17, 18 KEY CUSTOMIZATION 101, 102, 103, 104 LAYOUT Menu 44 LINE 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 30, 32, 33, 34, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 54, 55, 57, 58, 59, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 75, 77, 79, 80, 81, 83, 84, 85, 86, 92, 94, 95, 96, 97, 107 LOGICAL Expressions 25, 26, 54 Operators 25, 26 MACROS 5, 8, 10, 13, 22, 68, 69, 70, 71, 78, 79, 80, 94, 96 Keys 68, 69, 70 Program 68, 69, 70 MACRO() 80 MARK() 80 MARKING 5, 6, 11, 14, 15, 16, 17, 18, 19, 21, 28, 32, 33, 34, 35, 36, 38, 42, 44, 45, 47, 58, 59, 60, 61, 63, 64, 65, 66, 67, 78, 79, 80, 92, 94, 95, 96 MENUS 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 21, 22, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 40, 42, 44, 47, 48, 50, 54, 57, 58, 59, 61, 63, 64, 65, 66, 67, 69, 70, 71, 78, 94, 97, 98, 99 MODES Auto Append 16 Insert 7, 8, 9, 11, 12, 14, 17, 18, 23, 32, 33, 34, 35, 38, 80 Overwrite 7, 8, 11, 12, 14, 18, 20, 33, 38, 80 Ruled Line 11, 15, 18 MOUSE 4, 5, 10, 18, 19, 21, 40 OUTPUT Menu 47 QPL 80 OUTPUT() 80 PAGE 5, 6, 7, 10, 13, 20, 22, 23, 24, 25, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 58, 63, 65, 72, 75, 79, 80, 85, 95, 96, 97, 100, 107 PAGE BREAKS 5, 7, 11, 44, 45, 58 PASTE() 80 PROCESS Menu 54 PROMPTS 4, 6, 8, 9, 10, 11, 12, 13, 14, 17, 19, 28, 29, 30, 31, 32, 34, 35, 36, 40, 41, 42, 43, 47, 48, 49, 50, 51, 55, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68, 70, 75, 76, 77, 78, 85, 94, 99 QPL 5, 8, 11, 20, 22, 25, 27, 28, 30, 31, 47, 68, 69, 71, 72, 73, 74, 78, 79, 80, 82, 83, 85, 86, 92, 93, 94, 97, 99, 107 Commands 75, 76, 77, 80, 81, 82, 83, 84 Functions 79, 80, 81, 82, 83, 84 Programs 71 Statements 73 Windows 77 REMINDER LINE 6, 8, 9, 18, 19, 28, 32, 44, 59 REPLACE 9, 17, 20, 53, 55, 61, 62, 70, 78, 80 REPLACE() 80 ROW Menu 58 RULED LINES 5, 7, 8, 15, 16, 17, 19, 23, 34, 45, 48, 51, 57, 58, 64 RULERS 5, 7, 11, 20, 44, 45, 46, 48, 95 Editing 44, 45 SCALE LINE 6, 7, 11, 12, 18, 20, 21, 48, 107 SCALE COLUMN 6, 7, 11, 18, 107 SEARCH Menu 61 QPL 81 SEARCH() 81 SECTION 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 27, 29, 30, 31, 32, 40, 42, 44, 45, 47, 48, 51, 54, 56, 57, 58, 59, 62, 63, 65, 66, 67, 73, 78, 79, 80, 81, 82, 84, 85, 87, 90, 95, 96, 97, 107 SNEXT() 81 SORT() 81 STATUS 6, 7, 8, 21, 37, 78, 81, 83, 85, 86, 92 Line 6, 7, 8, 21, 37 Variable 78, 83, 85 SUBTOTAL() 81 SYSTEM Menus Access 27 Block 32 Column 34 Effects 38 File 40 Layout 44 Output 47 Process 54 Row 58 Search 61 Table 64 Variables 71, 86 TABLE() 82 TABLE 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 37, 38, 41, 42, 45, 47, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73, 78, 79, 80, 81, 82, 85, 86, 88, 89, 90, 91, 92, 95, 96, 97, 98, 99, 100, 107 Editing 12, 13, 15, 16, 17, 18 Menu 64 Mode 7, 8, 11, 12, 15, 16, 18, 19, 20, 23, 27, 29, 31, 54, 59, 62, 63, 64, 65, 66, 70, 78 Positions 22, 23 Ranges 23, 24 TEXT() 82 TEXT 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 27, 28, 29, 31, 32, 33, 38, 39, 41, 42, 44, 45, 46, 47, 48, 51, 53, 57, 61, 62, 63, 64, 65, 66, 67, 71, 72, 79, 80, 82, 92, 94, 95, 97, 98 Editing 10, 11 12, 14, 15, 18 Mode 6, 7, 8, 12, 14, 16, 20, 27, 29, 45, 61, 63, 64, 65, 67, 79 Positions 22, 23 Ranges 23, 24 TOGGLES 9, 11, 13, 14, 16, 18, 19, 21, 29, 37, 42, 44, 46, 47, 48, 49, 50, 51, 56, 57, 61, 62, 66, 78, 80, 81, 82 UPDATE() 82 VERIFY 9, 34, 40, 42, 54, 55, 58, 59, 62, 80, 82 Prompts 34, 40, 58, 59 WILD CARDS 54, 55, 61, 62, 80, 81, 82 WINDOWS 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 28, 29, 30, 38, 40, 42, 43, 55, 76, 77, 83, 84, 85, 94, 97 WORDSTAR 4, 40, 41, 42, 103 WORDWRAP 20, 44, 46 WORK AREA 5, 10, 21, 32, 33, 59, 79, 80, 95, 96