!*************************** AMUS Program Label ******************************
! Filename: GETFPN.BAS Date: 12/13/92
! Category: ESP Hash Code: 446-151-162-266 Version: 1.0(100)
! Initials: GR/AM Name: JAMES A. JARBOE IV
! Company: EDUCATIONAL VIDEO NETWORK, INC Telephone #: 4092955767
! Related Files: GETFPN.M68, GETFPN.SCR, SKPFLD.SBR
! Min. Op. Sys.: 1.3D Expertise Level: BEG
! Special: Must have TOOLBX.SYS installed and GETFPN.SBR
! Description: Basic program to test out and demonstrate the usage of
! GETFPN.SBR.
!
!*****************************************************************************
!*! Updated on 13-Dec-92 at 7:27 PM by James A. Jarboe I V; edit time: 0:14:37
!*! Created on 13-Dec-92 at 6:16 PM by James A. Jarboe I V; edit time: 0:14:04
!***************************************************************************
! GETFPN.BAS - Tests GETFPN.SBR
!***************************************************************************
!
! This Program is a completement to GETFID.BAS
!
! GETFPN.SBR returns the PERMANENT ID NUMBER of an ESP Screen field using
! the ESP Screen's current FIELD NUMBER.
!
! GETFID.SBR returns the FIELD NUMBER of an ESP Screen field using the
! ESP Screen's field PERMANENT ID NUMBER. (SEE GETFID.BAS)
!
! This program tests the GETFPN.SBR which is to be used with ESP and TOOLBX.
! One gripe of ESP users is the unavailability to allow the user to
! modify the sequence of an ESP screen entry and always get, set or
! evaluate the proper information from the ESP screen to the basic
! program variables without changing the BASIC program or using some
! elaborate table that must always be modified correctly.
!
PROGRAM GETFPN, 1.0(100)
!
! THE GETFPN.SBR helps to overcome this problem by allowing the program
! to access an ESP screen Fields PERMANENT ID NUMBER and base evaluations
! upon the PERMANENT ID NUMBER as offset by the screen's current FIELD
! NUMBER.
!
! This program uses:
! SYSSTD.BSI (Provided with ESP)
! TOOLBX.SBR (Provided with ESP)
! TOOLBX.BSI (Provided with ESP)
! ERRSBR.BSI (Provided with ESP)
! GETFPN.SCR (Provided on AMUS NETWORK by James A. Jarboe IV)
! GETFPN.SBR (Provided on AMUS NETWORK by James A. Jarboe IV)
! Source also provided (GETFPN.M68)
! SKPFLD.SBR (Provided on AMUS NETWORK by James A. Jarbow IV)
!
! Any comments, suggestions, gripes should be directed to:
! GR/AM on the AMUS Network.
!
++include TOOLBX.BSI ! include standard TOOLBX symbolics.
++include SYSSTD.BSI ! include standard ESP symbolics.
!
map1 SCREEN$, S, 34 ! Screen to try out
map1 FLDCNT, F, 6 ! Number of fields in screen.
map1 FLDID, F, 6 ! Permanent Field ID.
map1 PFLD(50), F, 6 ! Permanent fields.
! Make big incase more screen fields are added.
map1 CFLD(50), F, 6 ! Current field (Field Number)
map1 CURNT'PERM'FIELD, F, 6
map1 PER'OFF, F, 6 ! Permanent offset for SETVAL for POSTEDITing
! Set permanent field offset for SETVAL call when setting field values.
! We use 6 because we are using a generic call to SET values and the
! first SET value permanent field value is 7 because I used permanent
! field 6 for something else. So the logic will be (PER'OFF+X)
!
PER'OFF = 6
! Set screen to use
!
SCREEN$ = "GETFPN.SCR"
!***************************************************************************
! GETFPN
!***************************************************************************
!
GETFPN:
! Properly initialize terminal.
!
xcall INITRM, "GETFPN.SBR Test Program","By James A. Jarboe IV"
! Properly Fetch screen.
!
xcall FETCH, SCREEN$, SCREEN, X
if X call FETCH'ERROR : goto FINISHED
! Get Number of fields in this screen.
!
xcall TOOLBX, TBX'FLDCNT, SCREEN, FLDCNT
! GETFPN.SBR does the following:
! Returns the current PERMANENT FIELD NUMBER of the current FIELD NUMBER
! of an ESP SCREEN FIELD.
!
! GETFLD, SCREEN, CURRENT'FIELD, PERM'FIELD
! Get and store the PERMANENT FIELD NUMBER of all current FIELD NUMBERs.
! Also, pre-SKIP all fields.
!
for X = 1 to FLDCNT
! Here is where we get the PERMANENT FIELD NUMBER of the current FIELD NUMBER
! An ESP Screen's current FIELD NUMBER is the one that can be changed in SEDIT
! to modify the entry sequence. The PERMANENT FIELD NUMBER is the one that
! cannot be changed. Set your user READ SECURITY LEVEL to 254 to see an
! an ESP screen's field PERMANENT FIELD NUMBER. This is the one displayed to
! the right of the Field Number: in CHANGE mode in SEDIT.
!
! Get Current field's Permanent ID number.
!
xcall GETFPN, SCREEN, X, CFLD(X)
! Here, through math, we store the current FIELD NUMBER, of the
! current PERMANENT FIELD NUMBER so that we can use it to SETVAL or
! GETVAL or evaluate expressions based on that situation.
!
if CFLD(X) <> 0 PFLD(CFLD(X)) = X
xcall SKPFLD, SCREEN, TRUE, X
next X
! Allow entry into only PERMANENT FIELDS 1-5 no matter what the user
! has changed them to.
!
for X = 1 to 5
xcall SKPFLD, SCREEN, FALSE, PFLD(X)
next X
CHAR = ESP'BEGLIN ! Set begginning of line.
! Set PERMANENT FIELD 1 as the field we always enter first no matter
! what the user changed the value to by using SEDIT.
!
FIELD = PFLD(1) ! Set first field as Permanent field 1
xcall OPNSCR, SCREEN ! Always properly open screen.
! Normal GTSCR processing.
!
GTSCR:
xcall GTSCR, SCREEN, CHAR, FIELD
if (CHAR and 255) = ESP'MENU goto FINISHED
if (CHAR and ESP'POSTEDIT) call POST'EDIT
if (CHAR and ESP'PREEDIT) call PRE'EDIT
if (CHAR and 255) = ESP'EXECUTE call EXECUTE
goto GTSCR
! Post Edit situation.
!
POST'EDIT:
! First we get the Current permanent field number based upon the current
! FIELD we are POST'EDITing from. This will allow us to get the proper
! variable from the proper string based upon the field's permanent ID
! number so it will always be correct.
!
CURNT'PERM'FIELD = CFLD(FIELD)
! POST EDIT process according to Proper PERMANENT field value.
!
ON CURNT'PERM'FIELD call PFLD'1, PFLD'2, PFLD'3 , PFLD'4, PFLD'5
return
! Do your own Post editing based upon the permanent field value.
!
PFLD'1:
PFLD'2:
PFLD'3:
PFLD'4:
PFLD'5:
! Get the proper value from the proper field based upon the current
! field we are editing offset by the proper PERMANENT field.
!
xcall GETVAL, SCREEN, PFLD(CURNT'PERM'FIELD), X$
! Set the proper value from the proper field based upon the current
! field we are editing offset by the proper PERMANENT field.
! Get values from permanent fields 1-5 and set them in permanent fields
! 7-11 (Note Fields 7-11 are used instead of 6-10 because when I created
! the GETFPN.SCR I used permanent field 6 for something esle, thus
! permanent field 6 does not follow permanent field 5 for the situation
! I have created. The next permanent field after permanent field 5 that
! this program will be using is permanent field 7. The user can change the
! FIELD NUMBER to what they want and the correct values will always be
! set in the proper fields.
! X will equal the permanent field values.
for X = 1 to 5
xcall GETVAL, SCREEN, PFLD(X), X$ ! Get permanent field value.
xcall SETVAL, SCREEN, PFLD(X+PER'OFF), X$ ! Set permanent field.
next X
return
FINISHED:
xcall CLSSCR, SCREEN ! Always properly close screen.
xcall INITRM ! De-initialize terminal.
END