!*! Updated on 15-Dec-92 at 11:56 PM by James A. Jarboe I V; edit time: 1:23:30
!*! Created on 15-Oct-91 at 1:16 AM by James A. Jarboe I V; edit time: 0:03:58
!****************************************************************************
!
! SELFLD.BAS - Sample ESP program to test TOOLBZ.SBR xcall subroutines.
!
!****************************************************************************
! [101] 15-Dec-92 - updated comments and off to AMUS.
! [100] 15-Oct-90 by James A. Jarboe I V
!
! Sample program to show usage of:
! TOOLBZ.SBR - Available on AMUS Network.
! TOOLBZ.BSI - Available on AMUS Network.
! And
! Additional argument value on GTSCR.SBR
!
! This Program uses:
! SELFLD.SCR - Available on AMUS Network
! SELFL2.SCR - Available on AMUS Network
++include SYSSTD.BSI ! ESP standard values.
++include TOOLBZ.BSI ! TOOLBZ.SBR offsets and user flags.
MAP1 SC1'FLDCNT, F ! Screen 1 field count.
MAP1 SC2'FLDCNT, F ! Screen 2 field count.
MAP1 SC1'SCRSIZ, F ! Screen 1 size in bytes.
MAP1 SC2'SCRSIZ, F ! Screen 2 size in bytes.
MAP1 CHAR2, F ! Screen 2 Character value.
MAP1 FIELD2, F ! Screen 2 Field number.
MAP1 PREVSELECT, F ! Previous selection value.
MAP1 SELVAL, F ! Select value.
MAP1 A, F ! Misc
MAP1 Z, F ! Misc
MAP1 FFVAL(8), f ! Flag values to match second screen.
! The following are field selection flag values used with GTSCR's extended
! argument field. Usually GTSCR is called.
!
! XCALL GTSCR, SCREEN, CHAR, FIELD
!
! When using GTSCR as with an additional argument field you can designate
! some Field select options:
!
! XCALL GTSCR, SCREEN, CHAR, FIELD ,ESP'FLSSEL
!
! Field Select options. (Defined in TOOLBZ.BSI)
!
!MAP1 ESP'FLSSEL, f, 6 ! Flag value for Select screen.
!MAP1 ESP'FLSDEC, f, 6, 512*65536 ! Use filler character as edit filler.
!MAP1 ESP'FLSSLA, f, 6, 1024*65536 ! Allow selection of ALL fields.
!MAP1 ESP'FLSNEV, f, 6, 2048*65536 ! DON'T evaluate expressions.
!MAP1 ESP'FLSNRF, f, 6, 4096*65536 ! DON'T print report only fields.
!MAP1 ESP'FLSDSL, f, 6, 8192*65536 ! Disable selection during select mode.
!MAP1 ESP'FLSSLM, f, 6, 16384*65536 ! Select mode enabled.
!MAP1 ESP'FLSDBF, f, 6, 32768*65536 ! Display blanked field(s).
! Returned flag values for TBX'GETFLUF (Get Field User flags.)
!
! (Defined in TOOLBZ.BSI)
!
!MAP1 FLUF'HIDE, F, 6, 1 ! Returned if field is hidden.
!MAP1 FLUF'SKIP, F, 6, 2 ! Returned if field is skipped.
!MAP1 FLUF'SELECT, F, 6, 4 ! Returned if field is Selected.
! Start of SELFLD program Example.
!
SELFLD:
! Always properly init terminal.
!
XCALL INITRM,"Testing TOOLBZ.SBR", "By James A. Jarboe IV"
! Fetch needed screens.
!
XCALL FETCH, SCREEN1$, SCREEN1, X
IF X goto BAD'SCREEN
XCALL FETCH, SCREEN2$, SCREEN2, X
IF X goto BAD'SCREEN
! Set up needed situation.
!
CALL SET'MAIN'SCREEN
! Always properly open screens for windowing.
!
XCALL OPNSCR, SCREEN1
FIELD = 1
CHAR = ESP'BEGLIN
! Main Screen loop
!
GET'SCREEN:
! Set main screen to use the filler character "." to demonstrate.
!
XCALL GTSCR, SCREEN1, CHAR, FIELD, ESP'FLSDEC+ASC(".")
IF (CHAR AND 255)=ESP'MENU GOTO ALLDUN
IF (CHAR AND 255)=ESP'EXECUTE GOTO ALLDUN
IF (CHAR AND ESP'PREEDIT) THEN call DO'SELECT
GOTO GET'SCREEN
! End of Processsing.
!
ALLDUN:
XCALL CLSSCR, SCREEN1
XCALL INITRM
END
! Set up second screen for Space bar selection.
!
DO'SELECT:
! Get Field value from main screen to set second screen select
! values accordingly.
!
XCALL GETVAL, SCREEN1, 7, PREVSELECT
! Open Second screen properly.
!
XCALL OPNSCR, SCREEN2
! Set proper fields as selected or unselected.
!
A = 2 ! Set first value to test for.
FOR X = 1 to 8
! First always make field as Deselected (Dim)
!
XCALL TOOLBZ, TBX'SELFLD, SCREEN2, X, FALSE
! Get individual screen value using logical AND.
!
Z = (PREVSELECT AND A)
! If we match flag value make field as Selected (Bright)
!
IF Z > 0 XCALL TOOLBZ, TBX'SELFLD, SCREEN2, X, TRUE
A=A*2 ! Bump to next bit.
NEXT X
! Flags NOT set, so we will not:
! ESP'FLSSLA - Select all fields, (use only those that are NOT display only).
! ESP'FLSNEV - DON'T evaluate expressions. (We will evaluate any expressions).
! ESP'FLSNRF - DON'T print report only fields. (We will print report fields).
! ESP'FLSDSL - Disable selection during select mode. (We are enabling select).
!
! According to FLAG values set below, we will do:
! ESP'FLSDEC - Use default filler character (SPACE).
! ESP'FLSSLM - Enable Select mode.
! ESP'FLSDBF - Also display any blank fields.
ESP'FLSSEL = ESP'FLSDEC OR ESP'FLSSLM OR ESP'FLSDBF
! Set display all fields in case we enter this screen more than once.
!
CHAR2 = ESP'DAF ! Preset Display all fields.
FIELD2 = 1 ! Always set first field.
! Select screen editing with added argument flag.
!
EDIT'SELECT:
! **NOTE***
! This is an example of the extra argument on GTSCR call
! that allows field selection flags.
!
XCALL GTSCR, SCREEN2, CHAR2, FIELD2 ,ESP'FLSSEL
! If user presses menu on this screen make NO changes.
!
IF (CHAR2 AND 255) =ESP'MENU goto CLOSE'1
! If user presses EXECUTE then collect changes.
!
IF (CHAR2 AND 255) = ESP'EXECUTE goto SET'CLOSE'1
GOTO EDIT'SELECT
! User pressed EXECUTE, they want the change.
!
SET'CLOSE'1:
! Get sequential file size of screens.
!
XCALL TOOLBZ, TBX'SQFLSZ, SCREEN1$, SC1'SCRSIZ
XCALL TOOLBZ, TBX'SQFLSZ, SCREEN2$, SC2'SCRSIZ
! Get total field count of screens.
!
XCALL TOOLBZ, TBX'FLDCNT, SCREEN1, SC1'FLDCNT
XCALL TOOLBZ, TBX'FLDCNT, SCREEN2, SC2'FLDCNT
! Set wanted values in First screen.
!
XCALL SETVAL, SCREEN1, 1, SCREEN1$, SC1'SCRSIZ, SC1'FLDCNT, &
SCREEN2$, SC2'SCRSIZ, SC2'FLDCNT, 130
! Set up appropriate values for selection.
! This could be set up any number of ways, but for simple
! testing this is appropriate. It could be gotten from the
! ESP screen.
!
A = 2
FOR X = 1 to 8
FFVAL(X) = A
A=A*2
NEXT X
RETURN
BAD'SCREEN:
XCALL ERRDSP, "ESP Screen problem"
END