SUBROUTINE STD.SCREEN(PROGRAM.NO, TITLE, SCREEN, MSG)
****
* Std.Screen - Standard screen generator.
****
* Parameter   Description
* ----------  ----------------------------------------------------------
* PROGRAM.NO  program number
* TITLE       program title
* SCREEN      standard screen that is generated by this routine
*             To omit the SELECTION prompt on line 21, set SCREEN to the
*             literal "OMIT.SELECT" before the call.
*             MUST BE ASSIGNED A VALUE BEFORE THE CALL.
* MSG         validity check variable returned to the caller.
*             Messages in the MSG variable are separated by @FM.
****
*                           R E V I S I O N   L O G
* PR#     WHEN     WHO        WHY
* ======= ======== ========== ==========================================
* HC0096  11-18-86 SMK        Initial coding.
* 001     07JAN87  MCLAUGHLIN Minor adjustments to code.
* M1109   03-25-87 J DIGNAN   Abort when CONSTANT file can't be opened.
* M1109   04-15-87 SMK        If constant file can't be opened then
*                             try to open CONSTANT.IPA.
* HC0091  05-29-87 J D        Document OMIT.SELECT option.
****

**** begin code

$INSERT SYSLIB>INSERTS>STD.SUBROUTINES.INS.IBAS

     EQU PGM TO "STD.SCREEN"

** OPEN THE CONSTANT FILE HERE

     OPEN '','CONSTANT' TO CONSTANT ELSE
        OPEN '','CONSTANT.IPA' TO CONSTANT ELSE                  ;*[M1109]
           MSG := 'CANT OPEN THE CONSTANT FILE !!':@FM
           CALL @ABORT$(MSG,PGM)
        END                                                      ;*[M1109]
     END
     TIME.OF.DAY = OCONV(TIME(),'MT')
     DASH        = STR('-',52)
     DASH1       = STR('-',80)
     CS          = @(-1)

** BUILD THE SCREEN HERE

     SELECT.FLG = (SCREEN NE 'OMIT.SELECT')

     SCREEN.SPACE  = SPACE(40-(LEN(PROGRAM.NO)+INT(LEN(TITLE)/2)))
     SCREEN.SPACE1 = SPACE(39-(INT(LEN(TITLE)/2)+LEN(TIME.OF.DAY)))
     TITLE.LINE    = @(0,0):PROGRAM.NO:SCREEN.SPACE:TITLE:SCREEN.SPACE1:TIME.OF.DAY
     IF LEN(TITLE.LINE) > 84 THEN MSG := 'TITLE CANT BE LARGER THAN 80 BYTES':@FM

** GET REGION HERE

     REGION = 'Region: '                                           ;*[001]
     READ REGION.REC FROM CONSTANT,'REGION' ELSE
        MESS = 'CANT READ REGION RECORD !!':@FM
     END
     IF REGION.REC<3> THEN
        REGION := REGION.REC<1>:'-':REGION.REC<3>
     END ELSE
        IF REGION.REC<1> THEN
           REGION := REGION.REC<1>
        END ELSE
           REGION := 'UNKNOWN'
        END
     END
     NEXT.LINE = @(0,1):FMT(REGION,'-R#80')
     SCREEN = CS
     SCREEN :=  TITLE.LINE:NEXT.LINE:@(0,20):DASH1
     IF SELECT.FLG THEN
        SCREEN := @(0,21):'SELECTION   '
     END
     SCREEN := @(0,22):DASH1

     RETURN

**** end code

  END
