In this chapter we will discuss the various methods of creating Wizard reports. There are three main types of reports that you may create with Wizard.
The Instant form reports provides the simplest way to produce a report. The report you create using this procedure will be based on a data entry screen which you have already generated.
After you have created a forms-type report, you can customise your report with the Wizard Screens option from the W Menu.
When you select this option, you will be asked which data entry screen you want to reuse. Here you should type in the name of an existing data entry screen upon which you wish to base this report. The report, when it is created, will appear in a form that is virtually identical to this screen.
Once you have given the name of the data entry screen upon which you wish to base the report, you must then enter the name you wish to give the report. This is the name by which you may run the report.
The final step in generating the instant report is to answer Y to Wizard's question about whether you wish to generate this report. Note that you may answer N and, by using the Wizard Screen generator, make whatever adjustments to this report you wish, and then generate it.
To create an Instant Columnar Report, you select the fields to be printed on the report from a list of dictionary items. This makes it possible to design a columnar report in only a few minutes.
After you have created an instant columnar report you can customise your report with the Wizard Screens option on the W Menu.
Upon entering the Instant Columnar Report option, you are asked for the name of the file you wish to use. You respond by entering the name of an existing file.
Having entered the name of a valid file, Wizard will load the dictionaries from that file so that you can then construct the columnar report from them.
The next step in this process is to give Wizard the name the report. The name you give must be a unique name, not a name from any existing report or file, etc. The name you give will be used to run the report.
Note: Editing an Existing Columnar Report
If at this time, you attempt to enter the name of an existing columnar report, the name will be rejected, since it already exists. To edit an existing columnar report you should use the FS command from TCL or the Wizard Screens option on the W Menu.
Note that you do not need to generate a columnar report, it is sufficient to file it.
When you are building the Wizard Columnar Report, you will be asked to enter the number of the Field Definition that you want to reuse, N for the next detail line, D number to display, or OK if ok.
In response to this request by Wizard, you may enter:
If you select a field which is too long to fit on the current detail line, Wizard will prompt you, asking you if you want to place this field on the next line or leave it out altogether. Valid responses are:
Y (or YES) | to tell Wizard you want to put the field that you just selected on the next detail line (because the current line is about to exceed 240 characters in length). |
N (or NO) | to tell Wizard you do not want to select the field at all (at this time). |
Wizard asks you to enter the number of characters to indent the detail line.
Indenting a detail line also indents the corresponding line of the page heading.
One way to use this feature is to indent a 2nd detail line 5 to 10 characters, and then indent a 3rd detail line 10 to 15 characters. Indenting can make reports easier to read.
Wizard asks you to enter the number of the Field Definition that you want to change, Dnumber to display, or OK if ok.
You may respond by doing one of the following:
Wizard prompts you by asking you to enter L to change the Label, J to change the Justification, O to change the Output Length, or
In response you may enter one of the following:
Wizard asks you to enter a new Justification (L, R, or N). In response you enter one of the following:
If you want to change a field label, then Wizard asks you to enter a new label. You respond by typing either:
When changing the output length of a field, Wizard will ask you to enter a new output length for the field. You respond by entering either:
Wizard asks you to enter the number of the Field Definition that you want to sort by, or OK if otherwise.
To specify the type of sort you want the instant columnar report to do, you may type either:
in response to the prompt by Wizard for the type of sort this field is to execute.
Selecting by specified fields is achieved by entering, in response to the prompt by Wizard asking you to enter the number of the Field Definition that you want to SELECT with, or OK if OK, one of the following:
You may select any one of the following selection operators within the specification of selection criteria:
= | to specify that your Wizard Report selects records (items) in which the value in the select field equals the select value. If more than one select value is specified, a record will be selected if the select field equals ANY of the select values. (select values are explained in the next section.) |
# | to specify that your Wizard Report selects records (items) in which the value in the select field does not equal the select value. If more than one select value is specified, a record will be selected if the select field does not equal ANY of the select values. |
> | to specify that your Wizard Report selects records (items) in which the value in the select field is greater than the select value. |
< | to specify that your Wizard Report selects records (items) in which the value in the select field is less than the select value. |
>= | to specify that your Wizard Report selects records (items) in which the value in the select field is greater than or equal to the select value. |
<= | to specify that your Wizard Report selects records (items) in which the value in the select field is less than or equal to the select value. |
Wizard asks you to enter a value (such as a number or a date) to compare against the select field. You may enter a value, for example:
1000 | For each record (item), compare the select field against the value 1000. |
2-10-99 | For each record (item), compare the select field against the date 2-10-99. |
2/10/95 | Same as the previous example. Any date format is allowed. |
CA | For each record (item), compare the select field against the value CA. |
C] | For each record (item), compare the select field against any value that begins with C. The right bracket (]) at the end of the value means "begins with". |
[A | For each record (item), compare the select field against any value that ends with A. The left bracket ([) at the beginning of the value means "ends with". |
[CA] | For each record (item), compare the select field against any value that contains CA. Enclosing the value in brackets ([]) means "contains". |
CA,AZ | For each record (item), compare the select field against the value CA or the value AZ. The comma (,) means "or". Using a comma only makes sense for the equal (=) and not equal (#) select operators. |
714],213] | For each record (item), compare the select field against any value that begins with 714 or any value that begins with 213. |
When you have finished defining your report, you will be asked whether you want to save the definition you have created. You have two options here, these being:
Y (or YES) | to tell Wizard you want to save the report. The report is now ready to be run (used). |
N (or NO) | to tell Wizard you do not want to save the report. |
Once saved, the report can be run by typing its name from TCL or else from a menu once it has been installed in a menu.
You are probably familiar with Forms-Type Reports. Some examples of Forms-Type Reports that can be generated by Wizard are: Purchase orders, Cheques, Invoices, Statements, or even Form Letters.
There are two methods you may use to create a Forms-Type Report. For details on the first, refer to the first section in this chapter.
The second method of creating a Forms-Type Report is by using Wizard Screen Generator to create a Forms Detail Section, for example:
Form Letter Creation With The Forms Detail Section You can create form letters in minutes by selecting the Forms detail section from the Report Section menu. Use the (T)ext command to enter the main body of the letter. Use the (A)dd or (R)euse commands to enter field definitions, but do not enter data labels for them. Use the EP Command change the Field Name and justification if needed. |
Forms-Type Reports To Handle Pre-Printed Forms A special situation occurs when you want to print multi-valued data on pre-printed forms (such as pre-printed invoices). If the multi-valued data does not fit on one page, then you typically want to continue the multi-valued data on the next page at the same row as the first page. Also, you typically want to print the totals only on the last page of each invoice. To find out how to do this, see in the appendix under Pre-Printed Forms. |
If desired, you may add a Page Heading section to your report. The Page Heading will print at the top of each new page of the report.
If you want a Page Heading then select the Page Heading option from the Report Section Menu. The Page Heading marker will then appear on your formatting screen. It does not matter where you put the Page Heading section. Wizard will use it correctly. We suggest that you do put it in the correct place so that your documentation looks correct.
You may use the (A)dd command or the (T)ext command to enter field definitions or text into your heading. You may also use some of the special formatting @ commands which are also entered with the (T)ext command.
If you want a Page Footing then select the Page Footing option from the Report Section Menu. The Page Footing marker will then appear on your formatting screen. It does not matter where you put the Page Footing section Wizard will use it correctly.
You may use the (A)dd command or the (T)ext command to enter field definitions or text into your footing. You may also use some of the special formatting @ commands, which are also entered with the (T)ext command.
The Wizard report generator allows you to print a Report Header of any length (number of lines) you desire. The Report Header may consist of text, field definitions and the special formatting @ commands
To use a Report Header in your report you select the Report Header option from the Report Section Menu. The Report Header may be placed anywhere on the formatting screen.
If you want the Report Header to be on a page separate from the body of the report, then end the Report Header with the special formatting @ command for form-feed: @FF.
If you also have included a Page Header in your format, the Page Header will be printed at the top of every page including the page with the Report Header.
If a portion of a report contains Break sub-totals then it is generally desirable to print a grand-total at the bottom of a report. The Report Footing section accommodates the printing of grand-totals, as well as any other data or text that may be desired at the end of the report.
At this point, you would typically use the (C)opy command to copy one or more fields from the detail section to the report footing section.
For the following example, you could copy the SALES field from the Columnar Detail section to the Report Footing section. You might also want to add some text, and/or change the data labels.
You may want to print sub-totals on your Report. This is done by designating one or more data fields of the detail section to be Break control fields. A Break occurs whenever the data for a Break control field changes. At each change, the sub-totals will be printed for the data since the previous change. This data is called a Break group.
To define a Break control field, use the (S)tart section command. When presented with the Report Section Menu, select the BREAK FOOTING option.
Wizard will ask you for the Field Name of the Break Footing control field. You will enter one of the Field Names from the COLUMNAR DETAIL SECTION. Wizard will display a list of the Field Names at the top of the Screen.
At this point, you would typically use the (C)opy command to copy one or more fields from the DETAIL section to the Break Footing section
As an example, you could copy the REGION and SALES fields from the Columnar Detail section to the Break Footing section. You might also want to add some text, and/or change the data labels.
You may add as many Break Footing sections as your Report requires. However, multiple Break Footings require a definite order.
Important rule: The rule is that the Break Footing control field names must be ordered on the screen from the highest priority to the lowest priority.
In the above copy example, Region has the highest priority, since there are many States in a Region. States are the next highest priority, since there are many Cities in a State.
It is not necessary for Break Footings to be contiguous, only that they be ordered from highest priority to lowest priority.
You may find it desirable to specify a Break Heading to describe, with text and/or data, some information about the data that will be grouped together due to the break footings
Break Headings do not have to be ordered, and they may be placed anywhere on the screen. Wizard knows where to put the Break Heading section when it generates the Report program.
NOTE: a Wizard report can contain a break footing without a break heading, but a break heading must have a corresponding break footing.
The End of Report marker is used to add blank lines to the last report section on the formatting screen. (except the columnar detail section which ignores all blank lines).
Position the Cursor one or more blank lines beneath the last line you have formatted. Then enter the (S)tart section command, and select the End of Report marker option. The blank lines will be printed as blank lines on your report.
A selection of special formatting commands are available to you when building your reports. Actually, these commands are text strings that are entered with the (T)ext command. However, it is appropriate to discuss them here.
All these @ commands are items in the WDATATYPES file. The parameters in these items are used when the report is generated. You may find it useful to (very carefully) modify these parameters to suit your own requirements. Examine the parameters to figure out what they mean.
Also, you can create your own @ commands by creating new items (that start with the character @) in the WDATATYPES file, use the maintenance Screen provided.
It is possible to use Wizard Screen Generator to create Columnar reports which contain multi-line page headings and multi-line detail.
To create such reports, first you select the Columnar detail section from the Report Section menu. Then use the (A)dd command to define the data fields and their labels.
If you find it necessary to delete a Section marker, follow these steps:
Wizard will then delete the Section marker and return to the formatting screen. If you have previously entered data fields or text into the section, you may also want to delete the fields or text.
Remember, fields are deleted with the D command and text is deleted with the T command
The Common Time CS for reports is identical to that for screens.
The Entry Time CS for reports is identical to that for screens.
After Read is a Global Code Segment and can only be used in Wizard Reports.
It is executed every time Wizard Reads the Major file. This is exactly the same as Old Item Time. Wizard Reports do not write any records to the Major or Linked files.
This is a good place to check if the Item has already been printed; in the case of Invoices for example, if it has been printed already then either reject it or set a field to "Re-Print". It is also the place to write flags on the Major Item; indicating that it has been printed.
Note: If you do write the Item then you should first re-read the item using the READU command to lock the item before you write it; as Wizard will not write any Items in a Report it will not lock the Items it reads.The Exit Time CS for reports is identical to that for screens.
The User Defined CS for reports is identical to that for screens.
Report Heading is a Global Code Segment and can only be used in Wizard Reports
It is executed only once at the beginning of Wizard Reports, this is a good place to suppress the Report Heading.
Report Footing is a Global Code Segment and can only be used in Wizard Reports.
It is executed only once at the end of Wizard Reports, This is a good place to suppress the Report Footing.
Page Heading is a Global Code Segment and can only be used in Wizard Reports.
It is executed at the beginning of every page in a Wizard Report. This is a good place to suppress the Page Heading.
The PRINT.HEADING variable is set to 1 before Entry Time and after Page Footing.
Page Footing is a Global Code Segment and can only be used in Wizard Reports.
It is executed at the end of every page of a Wizard Report This is a good place to suppress the Page Footing.
After Read when the Page per Item has been set in the EF Command (except for the first read).
After Read and there are no more Items to be printed.
Report Footing.
Forms Detail is a Global Code Segment and can only be used in Wizard Reports.
It is executed for every line when printing the detail section within Wizard Reports, this is a good place to suppress the Forms Detail for a given multi-value or sub-multi-value.
Print Time is a Global Code Segment and can only be used in Wizard Reports
It is executed every time any line is printed, this is a good place to suppress a given line.
Before Print is a Field Code Segment and can only be used in Wizard Reports.
It is executed Before Printing a given Field and it is much the same as Before Field in a Wizard Screen. This is a good place to SKIP the current Field. Note: Before Print will affect the entire line that the Field is on; if you skip it.
Wizard will execute this Code Segment twice; Before it prints anything for this Report Section and after it has finished printing for this Section.
The variable BEFORE.PRINT is set to 1 the first time and is set to 0 the second time. Your code must look at this variable or it will be executed twice. For example:
IF BEFORE.PRINT THEN {Your Code for this Section before printing} END ELSE {Your Code for this Section after printing} END
The Pick PROC language is the most efficient way of processing ACCESS (also called English, Inform, or Recall) sentences and any series of Jobs, whether they be Basic Programs, Verbs or sentences.
That being said there are many problems associated with Procs. As one's skill increases these problems reduce but are never removed. Importantly as we solve the problems, the Proc becomes less and less efficient at run time and increasingly difficult to understand and maintain.
Some of the problems with Procs are:
... WITH CUSTOMER.NUMBER = "123""456"...
or multiple questions (if answer one was null, is the answer to the second question in buffer 1 or 2?)
Competent Proc writers have technical answers to most of these questions. They involve user-exists, basic programs, Proc-Read and Proc-Writes and buffer clearing. But how competent does a user have to be to maintain and modify the result?
One solution is to write Basic programs that execute a Sentence. This has some limitations but, most importantly, how does a user maintain them? Not only does a user need to know Access and Editor, they also have to understand Pick Basic. Does a user need all these skills to add STATE to the Customer List? Do we want all users to have editor privileges on Basic source files just to do this sort of change?
Some people never master Procs and now they do not have to. The Wizard PROCessor writes fully featured, working and efficient Procs. The process is easily understood and no knowledge of Proc is required. Correct, meaningful and up-to-date documentation is automatically produced.
In addition, the Wizard PROCessor gives a compatible platform for systems that do not support Proc, eg. Unidata, or do not run them very efficiently, eg., Information and PI Open.
The recommended technique for commencing all applications is to construct the menus and use the Menu System facilities then build the individual components.
To specify an item from a menu as a Wizard PROCessor routine, the type should be R (R for Report). Refer to the manual section on maintaining menus for more information.
Wizard PROCessor items are maintained via a system Wizard screen (called W.ENTER.REPORTS). You can get to this screen from the report menu in the W (Wizard screen generator menu. Alternatively, as recommended above, you can create or maintain a Process Definition which is already installed in a menu by moving the Menu highlight bar onto the item and typing ED followed by
If multiple Process definitions are linked together, after filing, (not Escaping from), one definition, the next will be fed to the maintenance program.
Some knowledge of ACCESS is mandatory. No knowledge of PROC is required. Online help is available including Dictionary lists.
The next release of Wizard PROCessor will substantially reduce the amount of ACCESS knowledge required.
A Process Definition is broken up into a number of logical components. This is done to provide the optimum in facilities. The structure may be bypassed and while the result may work, benefits will be lost. The structure is simple, logical and meaningful, please follow it.
The basic structure is:
All components are optional but certain associations must be made, for example, Output Specifications are useless without a Verb or File.
The Following pages show the Wizard Screen ENTER.REPORTS, this screen is used to maintain PROCess Definitions.
Tilde functions fall into these groups:
All valid tilde functions are replaced at runtime by their appropriate, then current, values.
Tilde functions only require Wizard's Menus and the Wizard PROCessor.
The rules are few and simple. The explanation seems a little harder at first, please keep reading. When you understand, your power will be increased many times over.
A simple example is to show who a report is for:
Include in the Heading:
this report is for ~WHO
At runtime, the user's name will be included in the heading, for example:
This report is for John
You may use tilde functions almost anywhere, the description on each will show by definition where they can and cannot go. For example ~PORT can go anywhere at any time as the Port is a constant, however ~I is only valid after operator Input.
If you wish a tilde function to be concatenated to text or another tilde function; entry is:
MY.LIST~PORT
or
~PORT~WHO
If on the other hand you wish to concatenate text to a tilde function then you must use the pipe (vertical bar) "|" key; entry is:
~PORT|MY.LIST
The Generic functions only require the Wizard Menu System and the Wizard WizPROCessor.
Generic tilde functions are as follows:
Refer to the section on Menu Maintenance for information on how to implement this powerful feature. Its main function is to allow the process to adapt itself to the particular situation.
Here is an example:
A menu is setup with two options, "Current Enquiry" and "History Enquiry". Both options use the same process but pass to it a different parameter say "CURRENT" and "HISTORY".
The process could then say:
SORT ~A1.FILE
In one case this would produce:
SORT CURRENT.FILE
and the other
SORT HISTORY.FILE
The ~I function has two steps.
~I or ~Inn input requests are entered in the User Selection Section. The ~I or ~Inn is put in the dual purpose With/And/Or column.
Note: ~I in this column will work the same as INPUT in this column.
Even though Verb/File/Sort Keys and Imbedded Selection Criteria sections are defined before the Selection Criteria Requested from User, they are processed after it. Therefore user responses are available to those sections.
~I functions are particularly useful for Selection definitions where user input is also required by a Linked program.
For example, Bank Code may not be part of a selection process to select data for a cheque printing process, but it is required by the print program. Rather than ask the user for selection criteria, then do what may be a lengthy selection process, then ask for Bank Code, it is best to ask for, and validate, all answers up front, and pass the necessary response to the Linked program. Similarly, Due Date may be required by the Selection process and by the Linked Program.
In this example the User Selection Section could look like this:
With/and/or | Dictionary | User Prompt |
---|---|---|
INPUT | Bank Code | |
AND WITH | DUE.DATE | Due Date |
and the Linked Process could be:
PRINT.CHEQUES ~I2 ~I1
the PRINT.CHEQUES program inputs the Due Date and then the Bank Code.
All user entries in response to the User Selection criteria, except for null responses, are stored in the Input Stack. The sequence is simple, the first entry is position one, the second entry is position two, and so on.
Important Note: This includes multiple response to one item where permitted.
If for example the first User Selection was for Optional, Multiple Supplier ID's, the position in the Input Stack of subsequent response would be unclear at the time of creating the Process Definition.
For example, if the second User Selection was for Bank code, and if no Creditors numbers were entered, then Bank Code would be I1. If one Supplier ID was entered, then Bank Code would be I2. If three were entered, I4 and so on.
To ensure the position of a required parameter, specify it before optional and multiple User Selections.
Or reference the Input stack as "~Inn,nn". When you use the comma (,) the Wizard PROCessor will reference the ~I{prompt number}, {multi-input number}. The {multi-input number} is optional.
That is in the above example the Bank Code would always be in ~I2,, regardless of the number of Supplier IDs or even if there was no Supplier IDs entered.
Note: You could reference the third Supplier IDs by ~I1,3; there may not be a third one.
When specifying the input of a ~I function it may have an optional one or two digit number following it. eg. ~I3 or ~I13. This will store the response (user input) in the nominated position in the Input Stack.
Warning: If you specify a low number, and one of the previous requests allows multiple responses, the data in this low number could be over written.
Also where the stack position is nominated, the counter is not increased. Having said that, you may still reference particular items in the input stack by the ~Inn,nn. The positions of these do not change even with Multiple, Optional entries.
Specifying where ~In values are to be inserted is quite simple. The position n must be specified (if not position 1 is assumed).
They may even be used in the User Selection Section itself. The particular stack entry must already have been loaded by a previously defined User Selection line or the stack position will be null.
Attribute one of the item may contain a general user name, typically the Organisation name, for inclusion in report headings, documentation, etc.
This text may be called up with the ~HDD function.
For example, a Heading containing:
Balance Sheet for ~HDD
would at runtime read:
Balance Sheet for Mega Corp Inc.
That is it follows all of the rules relating to where the Display data is going to go and subsequently where it comes from, and how and when you can use them.
As an example, let us say that you want a report showing all of the un-processed Sales Orders for a given Customer. Your User Selection Section could ask for the Customers Id., this would be validated against the CUSTOMER file and the Display would be the Customer's Name. The Customer's Name will go into the Display Stack at the same location as the Customer's Id would go into the Input Stack. Lets say the nn=1 and the entry was "BOB1".
The Verb/File/Sort Keys would be:
SORT SALES.ORDERS BY DATE.ORDERED
The Imbedded Selection Criteria of the PROC would be:
WITHOUT PROCESS.FLAG
The Heading would be:
<~ID> Un-Processed Sales Orders for Customer ~D1
This would give the following:
SORT SALES.ORDERS BY DATE.ORDERED WITHOUT PROCESS.FLAG WITH CUSTOMER.ID = "BOB11" {your Output DICTionaries} HEADING "<ProcId> Un-Processed Sales Orders for Customer Robert J. Guthrie"
Think before you use this function as it may be easier to use a ~D instead of a ~READ. The following will show how to specify a ~READ:
The file to read. Also {DICT_File}, if using a DICTionary file you MUST use the _ character.
The Item Id to be read.
The attribute number. Default is zero. ie. The entire Item.
The Multi-Value Default is zero. ie. The entire attribute.
The Sub Multi-Value Default is zero. ie. All of the Values
The Options. See below.
All of the above may be any valid ~ function including a ~READ, (ie. the result of ~READ can form part of the specification of another ~READ).
The Options are as follows:
C | Return the Id if the Item is not on the given file. If the data in the specified location is null then a null is returned. |
V | Validate that the Item is on file and that the value obtained is not null. |
X | Return null if the Item is not on file or if the value is null. |
To each of the above Options you may Prefix the letter T for Total. If you wish to use the total option a few rules apply:
All components of the ~READ must be valid. That is the {file} must be a valid file; the {amc}, {vmc}, and {svmc} must be numeric (null is Okay); the Options must be valid. If the Option is V then the {Id} must also be valid. If the Option is Prefixed with the letter T for TOTAL then each of the values must be numeric. If any of the above are invalid then an error will occur.
If you get an error with the ~READ function then the process will exit back to the Menu as if the operator hit the
The following is valid :
~READ;{file};{Id}
the following defaults would apply:
{amc}=0; {vmc}=0; {svmc}=0; {Opt}=X
For example ~OPER = "JOHN" (In most cases this is the same as ~WHO).
For Example:
You may have various Reports; based on the Report ~ID and/or the ~OPERator and you wish to control as to which Printer the given Report is to go to. You would have a program to look at all these values and work out the correct Printer assignment, therefore the Linked details could be:
Linked Process | Type |
---|---|
SP.CONT ~DEVICE ~ID ~OPER | BV |
SP.CONT would first check ~DEVICE if it is "P" then check the Report ~ID and ~OPERator to then EXECUTE the correct SP-ASSIGNment.
These functions take advantage of or provide access to files and values specific to the GPAC Application Software Packages. GPAC is a suite of Business Applications written in Wizard 4GL.
If auto processing, the user is not prompted and the current period number is used.
As well as its obvious use for selections ~PER may be used to modify dictionary items used. The reported data is thus altered to the user's current requirements. For example:
BUDGET~PER BALANCE~PER
When used in a Heading or Footing, ~PER will display both the period number and its associated period name from the Month file. For example:
3 September
~JNLNAMEGJ
or
~JNLNAME GJ
will return:
General Journal
Note: A single space is allowed between ~JNLNAME and the JRNLS ID. However, at least one space must follow the JRNLS ID. This is necessary because the length of the ID's in the JRNLS file is variable.
The JRNLS ID may be a variable entered by the user or handed over by the Menu System. For example:
~JNLNAME ~A1
Users may define their own Tilde functions without altering the source of the supplied program.
There are a few rules to follow.
Here is an example of a user defined subroutine.
The function is: | ~NAMES |
The ID is : | MENU.REP.SUB.NAMES |
The program is: |
SUBROUTINE MENU.REP.SUB.NAMES( NAME, AUTO.FLAG, HEAD.FLAG) * Test MENU.REP user defined subroutine BEGIN CASE CASE NAME = `JIM` NAME = 'Jim Spriggs' CASE NAME = 'NEDDY' NAME = 'Neddy Seagoon' END CASE RETURN END |
Note that all three parameters passed must be included in line one even if not used. On most Pick systems, if this is not done, the subroutine will abort.
On some systems the main program Wizard PROCessor may abort with a message:
Return executed with no gosub
In the latter case the problem is still definitely in the user written subroutine.
You can run a Wizard generated Report by doing the following:
You may, optionally, include selection criteria after the report name This will restrict the selection of the file to items matching your selection criteria.
The Selection Criteria is the same as the one used in an Access (also known as English, Recall, etc.) statement. Here are some examples that you can try, assuming that you have a report called RR-CUST.
RR-CUST WITH NAME "IBM" RR-CUST WITH ZIP "92715" RR-CUST WITH STATE "C]" RR-CUST WITH PHONE "714]" "213]" RR-CUST WITH STATE "C]" AND WITH NAME < "M"
Notice that in these examples we have to put the select values in quotes, and that two select values next to each other mean OR. Also, remember from the section on select values that ] means "begins with". So C] means "begins with the letter C".
When you run the report, Wizard will ask you where you want to send the output - you may send the output to either:
T | The terminal - That is, where you sit and type to the screen in front of you. |
P | The printer. You will not be asked which printer you want the output to be sent to, you will have to have already assigned the printer before running the report. |
S | The slave printer. This is the printer attached to the back of your terminal (presuming that such a printer is attached). This requires that your terminal definition is correctly defined (with codes to turn on and off the slave printer - refer to the terminal setup information). |
If you entered a T (or
You may browse forward or backward, left or right, regardless of the report length or width.
Wizard displays two numbers in the lower left corner of the report. The first number is the number of the last line browsed. The second number is the current line of the report (the Line Pointer).
At the bottom of each page of the report, Wizard displays the message:
Browsing Commands are: PR PL T B G RETURN / ?
The following are a series of commands available to you as you browse a report:
PR | Page Right. Displays a page of the report 40 columns to the right of the current page. |
PL | Page Left. Displays a page of the report 40 columns to the left of the current page. |
T | Displays the Top (first) page of the report. |
B | Displays the Bottom (last) page of the report. (the last page printed so far.) |
Gn | Sets the Line Pointer to the line number stated by n. |
Displays the next page of a report. | |
/ | Displays the previous page of a report. |
Causes a complete exit from the report. |