This document provides options to define a general screen layout:
With the terminal command %Y you can define how and where the Natural
function-key lines are to be displayed.
Below is information on:
The following terminal commands are available for defining the format of function-key lines:
- %YN
The function-key lines are displayed in tabular format:
Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc- %YS
The function-key lines display the keys sequentially and only show those keys to which names have been assigned (PF1=value, PF2=value, etc.):
Command ===> PF1=Help,PF3=Exit,PF12=Canc- %YP
The function-key lines are displayed in PC-like format, that is, sequentially and only showing those keys to which names have been assigned (F1=value, F2=value, etc.):
Command ===> F1=Help,F3=Exit,F12=Canc
Various other command options are available for function-key lines, such as:
single- and double-line display,
intensified display,
reverse video display,
color display.
For details on these options, see %Y - Control of PF-Key Lines in the Terminal Commands documentation.
- %YB
The function-key lines are displayed at the bottom of the screen.
16:50:53 ***** NATURAL ***** 2014-01-18 User SAG - Main Menu - Library SAGTEST Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc- %YT
The function-key lines are displayed at the top of the screen.
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc 16:50:53 ***** NATURAL ***** 2014-01-18 User SAG - Main Menu - Library SAGTEST Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===>- %Ynn
The function-key lines are displayed on line nn of the screen. In the example below the function-key line has been set to line 10:
16:50:53 ***** NATURAL ***** 2014-01-18 User SAG - Main Menu - Library SAGTEST Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc - Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===>
- %YC
This command makes the function-key lines cursor-sensitive. This means that they act like an action bar on a PC screen: you just move the cursor to the desired function-key number or name and press Enter, and Natural reacts as if the corresponding function key had been pressed.
To switch cursor-sensitivity off, you enter
%YCagain (toggle switch).By using
%YCin conjunction with tabular display format (%YN) and having only the function-key names displayed (%YH), you can equip your applications with very comfortable action bar processing: the user merely has to select a function name with the cursor and press Enter, and the function is executed.
Various options of the terminal command %M are available for defining how and where the
Natural message line is to be displayed.
Below is information on:
- %MB
The message line is displayed at the bottom of the screen.
16:50:53 ***** NATURAL ***** 2014-01-18 User SAG - Main Menu - Library SAGTEST Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc Please enter a function.- %MT
The message line is displayed at the top of the screen.
Please enter a function. 16:50:53 ***** NATURAL ***** 2014-01-18 User SAG - Main Menu - Library SAGTEST Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit
Other options for the positioning of the message line are described in %M - Control of Message Line in the Terminal Commands documentation.
- %MP
The message line is switched from unprotected to protected mode or vice versa. In unprotected mode, the message line can also be used for terminal input.
- %M=color-code
The message line is displayed in the specified color (for an explanation of color codes, see the session parameter
CDas described in the Parameter Reference).
You can use the terminal command %= to assign colors to field attributes for
programs that were originally not written for color support. The command causes all
fields/text defined with the specified attributes to be displayed in the specified
color.
If predefined color assignments are not suitable for your terminal type, you can use this command to override the original assignments with new ones.
You can also use the %= terminal command within Natural
editors, for example to define color assignments dynamically during map creation.
| Codes | Description |
|---|---|
| blank | Clear color translate table. |
| F | Newly defined colors are to override colors assigned by the program. |
| N | Color attributes assigned by program are not to be modified. |
| O | Output field. |
| M | Modifiable field (output and input). |
| T | Text constant. |
| B | Blinking |
| C | Italic |
| D | Default |
| I | Intensified |
| U | Underlined |
| V | Reverse video |
| BG | Background |
| BL | Blue |
| GR | Green |
| NE | Neutral |
| PI | Pink |
| RE | Red |
| TU | Turquoise |
| YE | Yellow |
Example:
%=TI=RE,OB=YE
This example assigns the color red to all intensified text fields and yellow to all blinking output fields.
Outlining (boxing) is the capability to generate a line around certain fields when they are displayed on the terminal screen. Drawing such "boxes" around fields is another method of showing the user the lengths of fields and their positions on the screen.
Outlining is only available on certain types of terminals, usually those which also support the display of double-byte character sets.
The terminal command %D=B is used to control outlining. For details on
this command, see the relevant section in the Terminal Commands
documentation.
The terminal command %X controls the display of the Natural statistics line/infoline. The line can be used either as a statistics line or as an infoline, but not both at the same time.
Below is information on:
To turn the statistics line on/off, enter the terminal command %X (this is a toggle
function). If you set the statistics line on, you can see statistical information, such
as:
the number of bytes transmitted to the screen during the previous screen operation,
the logical line size of the current page,
the physical line size of the window.
For full details regarding the statistics line, see the terminal command %X as described in the
Terminal Commands documentation.
The example below shows the statistics line displayed at the bottom of the screen:
> > + Program POS Lib SAG
All ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 SET CONTROL 'XB'
0020 SET CONTROL 'XI-'
0030 DEFINE PRINTER (2) OUTPUT 'INFOLINE'
0040 WRITE (2) 'EXECUTING' *PROGRAM 'BY' *INIT-USER
0050 WRITE 'TEST OUTPUT'
0070 END
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
IO=264,AI =292,L=0 C= ,LS=80,P =23,PLS=80,PCS=24,FLD=82,CLS=1,ADA=0
|
You can also use the statistics line as an infoline where status information can be displayed, for example, for debugging purposes, or you can use it as a separator line (as defined by SAA standards).
To define the statistics line as an infoline, you use the terminal command
%XI+.
Once you have activated the infoline with the above command, you can define the
infoline as the output destination for data with the DEFINE PRINTER statement as
demonstrated in the example below:
SET CONTROL 'XT' SET CONTROL 'XI+' DEFINE PRINTER (2) OUTPUT 'INFOLINE' WRITE (2) 'EXECUTING' *PROGRAM 'BY' *INIT-USER WRITE 'TEST OUTPUT' END
When the above program is run, the status information is displayed in the infoline at the top of the output display:
EXECUTING POS BY SAG
Page 1 2001-01-22 10:56:06
TEST OUTPUT
|
For further details on the statistics line/infoline, see the terminal command %X as described in the
Terminal Commands documentation.
Below is information on:
A window is that segment of a logical page, built by a program, which is displayed on the terminal screen.
A logical page is the output area for Natural; in other words the logical page contains the current report/map produced by the Natural program for display. This logical page may be larger than the physical screen.
There is always a window present, although you may not be aware of its existence.
Unless specified differently (by a DEFINE
WINDOW statement), the size of the window is identical to the
physical size of your terminal screen.
You can manipulate a window in two ways:
You can control the size and position of the window on the physical screen.
You can control the position of the window on the logical page.
The figure below illustrates the positioning of a window on the physical screen. Note that the same section of the logical page is displayed in both cases, only the position of the window on the screen has changed.

The figure below illustrates the positioning of a window on the logical page.
When you change the position of the window on the logical page, the size and position of the window on the physical screen will remain unchanged. In other words, the window is not moved over the page, but the page is moved "underneath" the window.

You use the DEFINE WINDOW
statement to specify the size, position and attributes of a window on the physical
screen.
A DEFINE WINDOW statement does not activate a window; this is done with a
SET WINDOW statement or
with the WINDOW clause of an INPUT statement.
Various options are available with the DEFINE
WINDOW statement. These are described below in the context of the
following example. It refers to Natural's default terminal type setting;
see also terminal command %T= and profile parameter TTYPE).
The following program defines a window on the physical screen.
** Example 'WINDX01': DEFINE WINDOW
************************************************************************
DEFINE DATA LOCAL
1 COMMAND (A10)
END-DEFINE
*
DEFINE WINDOW TEST
SIZE 5*25
BASE 5/40
TITLE 'Sample Window'
CONTROL WINDOW
FRAMED POSITION SYMBOL BOTTOM LEFT
*
INPUT WINDOW='TEST' WITH TEXT 'message line'
COMMAND (AD=I'_') /
'dataline 1' /
'dataline 2' /
'dataline 3' 'long data line'
*
IF COMMAND = 'TEST2'
FETCH 'WINDX02'
ELSE
IF COMMAND = '.'
STOP
ELSE
REINPUT 'invalid command'
END-IF
END-IF
END
The window-name identifies the window. The name may be up to 32 characters long. For a
window name, the same naming conventions apply as for user-defined variables. Here the
name is TEST.
The window size is set with the SIZE option. Here the window is 5 lines high and 25 columns
(positions) wide.
The position of the window is set by the BASE option. Here the top left-hand corner of the window is
positioned on line 5, column 40.
With the TITLE option, you can define a title that is to be displayed
in the window frame (of course, only if you have defined a frame for the window).
With the CONTROL
clause, you determine whether the PF-key lines, the message line and the statistics line
are displayed in the window or on the full physical screen. Here CONTROL
WINDOW causes the message line to be displayed inside the window. CONTROL
SCREEN would cause the lines to be displayed on the full physical screen
outside the window. If you omit the CONTROL clause, CONTROL
WINDOW applies by default.
With the FRAMED
option, you define that the window is to be framed. This frame is then cursor-sensitive.
Where applicable, you can page forward, backward, left or right within the window by
simply placing the cursor over the appropriate symbol (<, -, +, or >; see
POSITION
clause) and then pressing Enter. In other words, you are moving the
logical page underneath the window on the physical screen. If no symbols are
displayed, you can page backward and forward within the window by placing the cursor in
the top frame line (for backward positioning) or bottom frame line (for forward
positioning) and then pressing Enter.
With the POSITION clause of the FRAMED option, you define that information on the position
of the window on the logical page is to be displayed in the frame of the window. This
applies only if the logical page is larger than the window; if it is not, the
POSITION clause will be ignored. The position information indicates in
which directions the logical page extends above, below, to the left and to the right of
the current window.
If the POSITION clause is omitted, POSITION SYMBOL TOP RIGHT
applies by default.
POSITION
SYMBOL causes the position information to be displayed in form of
symbols: "More: < - + >". The information is displayed in the top
and/or bottom frame line.
TOP/BOTTOM determines whether the position information is
displayed in the top or bottom frame line.
LEFT/RIGHT determines whether the position information is
displayed in the left or right part of the frame line.
You can define which characters are to be used for the frame with the terminal
command %F=chv.
| c | The first character will be used for the four corners of the window frame. |
|---|---|
| h | The second character will be used for the horizontal frame lines. |
| v | The third character will be used for the vertical frame lines. |
Example:
%F=+-!
The above command makes the window frame look like this:
+------------------------+ ! ! ! ! ! ! ! ! +------------------------+
The INPUT
WINDOW statement activates the window defined in the DEFINE WINDOW statement. In the
example, the window TEST is activated. Note that if you wish to output data in a window
(for example, with a WRITE
statement), you use the SET
WINDOW statement.
When the above program is run, the window is displayed with one input field
COMMAND. The session parameter AD is used to define that the value of the field
is displayed intensified and an
underscore is used as filler
character.
Output of Program WINDX01:
> r > + Program WINDX01 Lib SYSEXPG
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** Example 'WINDX01': DEFINE WINDOW
0020 ******************************* +----Sample Window-----+ ***************
0030 DEFINE DATA LOCAL ! message line !
0040 1 COMMAND (A10) ! COMMAND __________ !
0050 END-DEFINE ! dataline 1 !
0060 * +More: + >---------+
0070 DEFINE WINDOW TEST
0080 SIZE 5*25
0090 BASE 5/40
0100 TITLE 'Sample Window'
0110 CONTROL WINDOW
0120 FRAMED POSITION SYMBOL BOTTOM LEFT
0130 *
0140 INPUT WINDOW='TEST' WITH TEXT 'message line'
0150 COMMAND (AD=I'_') /
0160 'dataline 1' /
0170 'dataline 2' /
0180 'dataline 3' 'long data line'
0190 *
0200 IF COMMAND = 'TEST2'
....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1
|
In the bottom frame line, the position information More: + >
indicates that there is more information on the logical page than is displayed in the
window.
To see the information that is further down on the logical page, you place the cursor in the bottom frame line on the plus (+) sign and press Enter.
The window is now moved downwards. Note that the text long data line
does not fit in the window and is consequently not fully visible.
> r > + Program WINDX01 Lib SYSEXPG
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** Example 'WINDX01': DEFINE WINDOW
0020 ******************************* +----Sample Window-----+ ***************
0030 DEFINE DATA LOCAL ! message line !
0040 1 COMMAND (A10) ! dataline 3 long data !
0050 END-DEFINE ! dataline 2 !
0060 * +More: - >---------+
0070 DEFINE WINDOW TEST
0080 SIZE 5*25
0090 BASE 5/40
0100 TITLE 'Sample Window'
0110 CONTROL WINDOW
0120 FRAMED POSITION SYMBOL BOTTOM LEFT
0130 *
0140 INPUT WINDOW='TEST' WITH TEXT 'message line'
0150 COMMAND (AD=I'_') /
0160 'dataline 1' /
0170 'dataline 2' /
0180 'dataline 3' 'long data line'
0190 *
0200 IF COMMAND = 'TEST2'
....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1
|
To see this hidden information to the right, you place the cursor in the bottom frame
line on the less-than symbol (>) and press Enter. The window is now
moved to the right on the logical page and displays the previously invisible word
line:
> r > + Program WINDX01 Lib SYSEXPG
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** Example 'WINDX01': DEFINE WINDOW
0020 ******************************* +----Sample Window-----+ ***************
0030 DEFINE DATA LOCAL ! message line !
0040 1 COMMAND (A10) ! line ! <==
0050 END-DEFINE ! !
0060 * +More: < - ---------+
0070 DEFINE WINDOW TEST
0080 SIZE 5*25
0090 BASE 5/40
0100 TITLE 'Sample Window'
0110 CONTROL WINDOW
0120 FRAMED POSITION SYMBOL BOTTOM LEFT
0130 *
0140 INPUT WINDOW='TEST' WITH TEXT 'message line'
0150 COMMAND (AD=I'_') /
0160 'dataline 1' /
0170 'dataline 2' /
0180 'dataline 3' 'long data line'
0190 *
0200 IF COMMAND = 'TEST2'
....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1
|
You can, of course, open multiple windows. However, only one Natural window is active at any one time, that is, the most recent window. Any previous windows may still be visible on the screen, but are no longer active and are ignored by Natural. You may enter input only in the most recent window. If there is not enough space to enter input, the window size must be adjusted first.
When TEST2 is entered in the COMMAND field, the program
WINDX02 is executed.
** Example 'WINDX02': DEFINE WINDOW
************************************************************************
DEFINE DATA LOCAL
1 COMMAND (A10)
END-DEFINE
*
DEFINE WINDOW TEST2
SIZE 5*30
BASE 15/40
TITLE 'Another Window'
CONTROL SCREEN
FRAMED POSITION SYMBOL BOTTOM LEFT
*
INPUT WINDOW='TEST2' WITH TEXT 'message line'
COMMAND (AD=I'_') /
'dataline 1' /
'dataline 2' /
'dataline 3' 'long data line'
*
IF COMMAND = 'TEST'
FETCH 'WINDX01'
ELSE
IF COMMAND = '.'
STOP
ELSE
REINPUT 'invalid command'
END-IF
END-IF
END
A second window is opened. The other window is still visible, but it is inactive.
message line > r > + Program WINDX01 Lib SYSEXPG Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 ** Example 'WINDX01': DEFINE WINDOW 0020 ******************************* +----Sample Window-----+ *************** 0030 DEFINE DATA LOCAL ! message line ! Inactive 0040 1 COMMAND (A10) ! COMMAND TEST2_____ ! Window 0050 END-DEFINE ! dataline 1 ! <== 0060 * +More: + >---------+ 0070 DEFINE WINDOW TEST 0080 SIZE 5*25 0090 BASE 5/40 0100 TITLE 'Sample Window' 0110 CONTROL WINDOW 0120 FRAMED POSITION SYMBOL B +------Another Window-------+ Currently 0130 * ! COMMAND __________ ! Active 0140 INPUT WINDOW='TEST' WITH TEXT ' ! dataline 1 ! Window 0150 COMMAND (AD=I'_') / ! dataline 2 ! <== 0160 'dataline 1' / +More: +------------------+ 0170 'dataline 2' / 0180 'dataline 3' 'long data line' 0190 * 0200 IF COMMAND = 'TEST2' |
Note that for the new window the message line is now displayed on
the full physical screen (at the top)
and not in the window.
This was defined by the CONTROL SCREEN clause in the WINDX02
program.
For further details on the statements DEFINE
WINDOW, INPUT WINDOW and SET WINDOW, see the corresponding descriptions in the
Statements documentation.
A standard layout can be defined in the map editor. This layout guarantees a uniform appearance for all maps that reference it throughout the application.
When a map that references a standard layout is initialized, the standard layout becomes a fixed part of the map. This means that if this standard layout is modified, all affected maps must be re-cataloged before the changes take effect.
In contrast to a standard layout, a dynamic layout does not become a fixed part of a map that references it, rather it is executed at runtime.
This means that if you define the map layout as dynamic in the map editor, any modifications to the layout map are also carried out on all maps that reference it. The maps need not be re-cataloged.
For details on defining standard and dynamic map layouts, see Format in Map Editor in the Editors documentation.
Using Natural, you can create multilingual applications for international use.
Maps, helproutines, error messages, programs, subprograms and copycodes can be defined in up to 60 different languages (including languages with double-byte character sets).
Below is information on:
In Natural, each language has a language code (from 1 to 60). The table below
is an extract from the full table of language codes. For a complete overview, refer to
the description of the system variable *LANGUAGE in the System
Variables documentation.
| Language Code | Language | Map Code in Object Names |
|---|---|---|
| 1 | English | 1 |
| 2 | German | 2 |
| 3 | French | 3 |
| 4 | Spanish | 4 |
| 5 | Italian | 5 |
| 6 | Dutch | 6 |
| 7 | Turkish | 7 |
| 8 | Danish | 8 |
| 9 | Norwegian | 9 |
| 10 | Albanian | A |
| 11 | Portuguese | B |
The language code (left column) is the code that is contained in the system variable
*LANGUAGE. This code is used by Natural
internally. It is the code you use to define the user language (see Defining the User
Language below). The code you use to identify the language of a
Natural object is the map code in the right-hand column of the table.
Example:
The language code for Portuguese is "11". The code you use when cataloging a Portuguese Natural object is "B".
For the full table of language codes, see the system variable *LANGUAGE as
described in the System Variables documentation.
To define the language of a Natural object (map, helproutine, program, subprogram or copycode), you add the corresponding map code to the object name. Apart from the map code, the name of the object must be identical for all languages.
In the example below, a map has been created in English and in German. To identify the languages of the maps, the map code that corresponds to the respective language has been included in the map name.
DEMO1 = English map (map code 1)
DEMO2 = German map (map code 2)
Map codes are in the range 1-9, A-Z or a-y. The alphabetical map codes require special handling.
Normally, it is not possible to catalog an object with a lower-case letter in the name - all characters are automatically converted into capitals.
This is however necessary, if for example you wish to define an object for Kanji
(Japanese) which has the language code 59 and the map code x.
To catalog such an object, you first set the correct language code (here 59) using the
terminal command %L=nn, where
nn is the language code.
You then catalog the object using the ampersand (&) character instead of the actual
map code in the object name. So to have a Japanese version of the map DEMO,
you stow the map under the name DEMO&.
If you now look at the list of Natural objects, you will see that the map is correctly
listed as DEMOx.
Objects with language codes 1-9 and upper case A-Z can be cataloged directly without the use of the ampersand (&) notation.
In the example list below, you can see the three maps DEMO1,
DEMO2 and DEMOx. To delete the map DEMOx, you
use the same method as when creating it, that is, you set the correct language with
the terminal command %L=59 and then confirm the deletion with the
ampersand (&) notation (DEMO&).
11:48:55 ***** NATURAL LIST COMMAND ***** 2014-02-17
User SAG - LIST Objects in a Library - Library SAGTEST
Cmd Name Type S/C SM Version User ID Date Time
--- *________ M__________ *__ * *______ *________ *__________ *________
__ DEMO Ma +---------------DELETE---------------+ 013-10-24 11:31:51
de DEMOx Ma ! +----------DELETE----------+ ! 013-10-24 11:31:51
__ DEMOB Ma ! ! ! ! 013-10-24 11:31:51
__ DEMO1 Ma ! ! Please confirm deletion ! ! 013-10-24 11:31:51
__ DEMO2 Ma ! ! with name DEMOx ! ! 013-10-24 11:31:51
__ MAPTEST Ma ! ! DEMO&___ ! n ! 012-07-24 10:04:44
__ MAP01 Ma ! +--------------------------+ ! 012-07-24 10:04:25
! !
+------------------------------------+
7 Objects found
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Sort -- - + ++ > Canc |
You define the language to be used per user - as defined in the system variable
*LANGUAGE - with the profile parameter
ULANG (which is
described in the Parameter Reference) or with the terminal command
%L=nn (where
nn is the language code).
To reference multilingual objects in a program, you use the ampersand (&) character in the name of the object.
The program below uses the maps DEMO1 and DEMO2. The
ampersand (&) character at the end of the map name stands for the map code and
indicates that the map with the current language as defined in the
*LANGUAGE system variable is to be used.
DEFINE DATA LOCAL 1 PERSONNEL VIEW OF EMPLOYEES 2 NAME (A20) 2 PERSONNEL-ID (A8) 1 CAR VIEW OF VEHICLES 2 REG-NUM (A15) 1 #CODE (N1) END-DEFINE * INPUT USING MAP 'DEMO&' /* <--- INVOKE MAP WITH CURRENT LANGUAGE CODE ...
When this program is run, the English map (DEMO1) is displayed. This is
because the current value of *LANGUAGE is 1 = English.
MAP DEMO1
SAMPLE MAP
Please select a function!
1.) Employee information
2.) Vehicle information
Enter code here: _
|
In the example below, the language code has been switched to 2 = German
with the terminal command %L=2.
When the program is now run, the German map (DEMO2) is displayed.
BEISPIEL-MAP
Bitte wählen Sie eine Funktion!
1.) Mitarbeiterdaten
2.) Fahrzeugdaten
Code hier eingeben: _
|
For some applications it may be useful to define multilingual programs. For example, a standard invoicing program might use different subprograms to handle various tax aspects, depending on the country where the invoice is to be written.
Multilingual programs are defined with the same technique as described above for maps.
Using the Natural utility SYSERR, you can translate Natural error messages into up to 60 languages, and also define your own error messages.
Which message language a user sees, depends on the *LANGUAGE
system variable.
For further information on error messages, see SYSERR Utility in the Utilities documentation.
The language used for date and time fields defined with edit masks also depends on the
system variable *LANGUAGE.
For details on edit masks, see the session parameter EM as described in the Parameter
Reference.
Users with varying levels of skill may wish to have different maps (of varying detail) while using the same application.
If your application is not for international use by users speaking different languages, you can use the techniques for multilingual maps to define maps of varying detail.
For example, you could define language code 1 as corresponding to the skill of the beginner, and language code 2 as corresponding to the skill of the advanced user. This simple but effective technique is illustrated below.
The following map (PERS1) includes instructions for the end user on how to select a function from the menu. The information is very detailed. The name of the map contains the map code 1:
MAP PERS1
SAMPLE MAP
Please select a function
1.) Employee information _
2.) Vehicle information _
Enter code: _
To select a function, do one of the following:
- place the cursor on the input field next to desired function and press ENTER
- mark the input field next to desired function with an X and press ENTER
- enter the desired function code (1 or 2) in the 'Enter code' field and press
ENTER
|
The same map, but without the detailed instructions is saved under the same name, but with map code 2.
MAP PERS2
SAMPLE MAP
Please select a function
1.) Employee information _
2.) Vehicle information _
Enter code: _
|
In the example above, the map with the detailed instructions is output, if the
ULANG profile parameter has the value 1, the map without the
instructions if the value is 2. See also the description of the profile parameter
ULANG (in the
Parameter Reference).