|
The !SCREEN() subroutine performs screen based input using a screen definition created using the SCRB command.
Format
CALL !SCREEN(scrn, data, step, status)
where
| scrn | is a dynamic array holding the screen definition. |
| data | is the data record to be processed. |
| step | holds the step number at which screen execution is to commence. If this is a variable, it will be updated on exit to contain the step at which execution ended. |
| status | identifies the termination cause on returning to the calling program. |
The !SCREEN() subroutine executes the screen starting at step except for the special step values described below.
| 0 | Clear the screen and paint text and data from all steps except those items with X in their mode value. |
| -1 | Paint text and data from all steps except those items with X in their mode value without clearing the screen. |
| -2 | Clear the screen without painting any data. |
| -3 | Return a single keystroke value. |
On returning to the calling program, status contains
| -3 | Illegal exit key code found in screen definition. |
| -2 | Illegal validation code found in screen definition. |
| 0 | Normal exit (X action code) |
| 1 | Exit key (escape) used with action code X |
| 2 | Backstep key used with no step history. |
| n | Function key used. n is the key value as in KEYIN.H. |
Example
READ SCRN FROM SCR.F, 'MY.SCREEN' ELSE ABORT 'Cannot read screen'
DATA = ''
CALL !SCREEN(SCRN, DATA, STEP, SCR.STATUS)
The above code fragment reads a screen definition and executes the screen driver to process the data record using this definition.
|