!*! Updated on 07-Aug-92 at 12:37 AM by James A. Jarboe I V; edit time: 0:28:43
!*! Created on 22-Sep-91 at 11:46 PM by James A. Jarboe I V; edit time: 0:12:23
!
! HIDSKP - Sample Test program for HIDFLD, SKPFLD, GETPUI, SETPUI
!
! Uses the following Xcalls available on AMUS Network.
!
!   HIDFLD.SBR - HIDE or SHOW field.
!   SKPFLD.SBR - SKIP or ALLOW field.
!   GETPUI.SBR - Get POPUP'ITEM value.
!   SETPUI.SBR - Set POPUP'ITEM value.
!
++INCLUDE SYSSTD.BSI
!
MAP1    SCR$, S, 6, "HIDSKP"            ! ESP screen to use.
MAP1    YES, F, 6, 1                    ! Value to HIDE or SKIP
MAP1    NO,  F, 6, 0                    ! Value to SHOW or ALLOW
MAP1    CHAR'BYTE, F, 6                 ! Byte Value of Character.
MAP1    CHAR'FLAG, F, 6                 ! Flag Value of Character.
MAP1    HIDE'FLAG, F, 6                 ! Hide Flag (yes or no)
MAP1    POPUP'VALUE, F, 6               ! Value of gotten Popup value.

! Initialize terminal.

       XCALL INITRM, "Test Program", "By James A. Jarboe IV"

! Fetch Screen
!
       XCALL FETCH, SCR$, SCREEN, X
       IF X GOTO SCREEN'FETCH'ERROR

! Open it properly
!
       XCALL OPNSCR, SCREEN

! Hide all appropriate fields.
!
       XCALL HIDFLD, SCREEN, YES, 2,3,4,5,6
       FIELD = 1
       CHAR = ESP'BEGLIN

! Fields 3 and 4 are set as regular edit fields in the HIDSKP.SCR screen.
! Here we make it so that they are SKIPped and we cannot enter them.
!
       XCALL SKPFLD, SCREEN, YES, 3, 4

! Main Edit loop until we MENU to Exit.
!
EDIT'LOOP:
       XCALL GTSCR, SCREEN, CHAR, FIELD

       CHAR'BYTE = CHAR and 255
       CHAR'FLAG = CHAR XOR CHAR'BYTE

! Handle MENU Exit.
!
       IF CHAR'BYTE = ESP'MENU then GOTO FINISHED

! Handle Pre-edit.
!
       IF (CHAR AND ESP'PREEDIT) then CALL PRE'EDIT

! Handle Post-edit.
!
       IF (CHAR AND ESP'POSTEDIT) then CALL POST'EDIT

! Redit screen.
!
       GOTO EDIT'LOOP

! Finished, clean up properly.
!
FINISHED:
       XCALL CLSSCR, SCREEN
OUT:
       XCALL INITRM
       END

! Currently no Pre Edit.
!
PRE'EDIT:
       RETURN

! All work is done at Post Edit.
!
POST'EDIT:

! Always set popup values to fields 3 and 4 every time we post edit.
!
       XCALL GETPUI, SCREEN, 1, POPUP'VALUE
       XCALL SETPUI, SCREEN, 3, POPUP'VALUE
       XCALL GETPUI, SCREEN, 2, POPUP'VALUE
       XCALL SETPUI, SCREEN, 4, POPUP'VALUE

! Call the proper field post'edit condition.
!
       ON FIELD CALL ONE'OR'TWO, ONE'OR'TWO
       ON FIELD-4 CALL FIVE

       RETURN


ONE'OR'TWO:
       XCALL GETPUI, SCREEN, FIELD, POPUP'VALUE
       IF POPUP'VALUE = 1  HIDE'FLAG = NO ELSE HIDE'FLAG = YES
       XCALL HIDFLD, SCREEN, HIDE'FLAG, 2, 3, 4, 5, 6
       RETURN

FIVE:
       XCALL GETPUI, SCREEN, FIELD, POPUP'VALUE
       XCALL SETPUI, SCREEN, 6, POPUP'VALUE
       RETURN

! Tell why screen didn't load.
!
SCREEN'FETCH'ERROR:
       XCALL ALERT, X, X$
       X$ = LCS(RIGHT$(X$, LEN(X$)-1))
       X$ = "?Cannot fetch " + SCR$ +" "+X$
       XCALL ERRDSP, X$
       GOTO OUT

++INCLUDE ERRSBR.BSI

! End of HIDSKP.BAS