Example Using ICQCAL00
The PHONE CLIST in Figure 1 is a sample application that invokes ISPF dialog management services to display input and output panels. The PHONE CLIST searches the names directory and returns the phone number for a name that the user provides on the input panel. The input panel is shown in Figure 2.
The PHONE CLIST creates an input table and loads each phone number request in a row. It then invokes ICQCAL00 to search the names directory and displays the results on an output panel ( Figure 3). If more than one directory entry matches a request, they are displayed on the list panel shown in Figure 4.
/**********************************************************************/
/* THIS PROGRAM SEARCHES THE NAMES DIRECTORY FOR PHONE NUMBERS OF */
/* PERSONS SPECIFIED BY THE USER ON AN INPUT PANEL. DUPLICATE */
/* RESULTS ARE RETURNED ON A SELECTION PANEL FOR THE USER TO CHOOSE */
/* FROM, AND FINAL RESULTS ARE DISPLAYED ON AN OUTPUT PANEL. */
/**********************************************************************/
PROC 0 TRACE(N)
CONTROL END(ENDO)
CONTROL NOPROMPT NOFLUSH NOMSG
IF &NRSTR(&TRACE) = Y THEN +
CONTROL LIST CONLIST SYMLIST MSG ASIS
ELSE +
CONTROL ASIS NOLIST NOCONLIST NOSYMLIST
ISPEXEC CONTROL NONDISPL ENTER
ISPEXEC DISPLAY PANEL(ICQSIECA) /* DISPLAY DEFAULT NAME VARIABLES
ISPEXEC CONTROL ERRORS RETURN
ISPEXEC TBEND INTABLE /* END TABLE, IN CASE IT EXISTS
ISPEXEC CONTROL ERRORS CANCEL
/**************************************************************/
/* CREATE INPUT TABLE OF SEARCH REQUESTS */
/**************************************************************/
ISPEXEC TBCREATE INTABLE NAMES (QAAVARS QAAUSE QAAGNRIC +
QAALIST QAARTYPE QAADIR QAAMODE QAAMXSEL +
QAAMXMSG QAAEXPGP QAAFMSG QAAPANEL QAAPANGP QAADUPSR +
QAASCNIK QAAMSGID QAARETCD &QCANVARS) NOWRITE REPLACE
SET ISPCODE = &LASTCC
IF &ISPCODE > 4 THEN +
DO
WRITE ERROR IN TBCREATE: RETURN CODE OF &ISPCODE
GOTO EXIT
ENDO
SET NAMES_ENTERED = Y
DO WHILE &NAMES;_ENTERED = Y
ISPEXEC TBVCLEAR INTABLE
ISPEXEC DISPLAY PANEL(JRT1) /* GET DESIRED INFORMATION
SET ISPCODE = &LASTCC /* SAVE RETURN CODE
IF &ISPCODE ¬= 0 THEN +
SET NAMES_ENTERED = N
SET QAAUSE = Y /* SET UP USE FLAG
SET QAASCNIK = Y /* REPEAT WITH FIRST NAME AS NICKNAME
SET QAAPANEL = &STR(JRT3) /* WANT LIST TO USE THIS PANEL
/***********************************************/
/* USE ALL OTHER DEFAULT VALUES */
/***********************************************/
IF &NRSTR(&QAALAST) ¬= THEN +
SET QAAVARS = &QAAVARS QAALAST /* USE LAST NAME IN SEARCH
IF &NRSTR(&QAAFRST) ¬= THEN +
SET QAAVARS = &QAAVARS QAAFRST /* USE FIRST NAME IN SEARCH
IF &NRSTR(&QAAMIDLE) ¬= THEN +
SET QAAVARS = &QAAVARS QAAMIDLE /* USE MIDDLE NAME IN SEARCH
IF &NRSTR(&QAAUSER) ¬= THEN +
SET QAAVARS = &QAAVARS QAAUSER /* USE USER ID IN SEARCH
ISPEXEC TBADD INTABLE /* ADD ROW TO TABLE
IF &NAMES;_ENTERED = Y THEN +
DO
Figure of 'A Sample Application Using ICQCAL00 — the PHONE CLIST' (Continued)
/**************************************************/
/* CALL NAMES DIRECTORY PROGRAM ICQCAL00 */
/* OPTIONS: REMOVE DUPLICATE ENTRIES */
/* LEAVE DIRECTORY TABLES OPEN */
/**************************************************/
ICQCAL00 REMDUPS(Y) TBDISP(OPEN) INTABLE(INTABLE)
ISPEXEC TBTOP INTABLE /* GO TO TOP OF TABLE
ISPEXEC TBVCLEAR INTABLE
SET QAAUSE = X /* SET FOR ERROR FLAG
ISPEXEC TBSARG INTABLE
ISPEXEC TBSCAN INTABLE
IF &LASTCC = 0 THEN +
DO /* NAME FOUND
IF &QAAMSGID ¬= THEN +
ISPEXEC SETMSG MSG(&QAAMSGID) /* ID NOT BLANK, USE IT
ISPEXEC TBDISPL INTABLE PANEL(JRT2) /* DISPLAY RESULTS
ENDO
ELSE +
DO
ISPEXEC TBVCLEAR INTABLE
SET QAAUSE = N
ISPEXEC TBSARG INTABLE
ISPEXEC TBDISPL INTABLE PANEL(JRT2)
ENDO
ENDO
)ATTR DEFAULT(%+_)
/* % TYPE(TEXT) INTENS(HIGH) defaults displayed for */
/* + TYPE(TEXT) INTENS(LOW) information only */
/* _ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) */
@ TYPE(INPUT) INTENS(HIGH) PAD(' ') CAPS(OFF) JUST(LEFT)
! TYPE(OUTPUT) INTENS(LOW) PAD(' ') CAPS(OFF) JUST(LEFT)
)BODY
+ PHONE DIRECTORY SEARCH
%COMMAND ===>_ZCMD +
%
+Fill in the name of the person you want information about.
+To continue, press ENTER; to end, press END.
+
+ Last Name ===>@Z +
+ First Name ===>@Z +
+ Middle Name ===>@Z +
+ User Id ===>@Z +
)INIT
.ZVARS = '(QAALAST QAAFRST QAAMIDLE QAAUSER)' /* create input variables */
.CURSOR = QAALAST
)PROC
)END
)ATTR DEFAULT(%+_)
/* % TYPE(TEXT) INTENS(HIGH) defaults displayed for */
/* + TYPE(TEXT) INTENS(LOW) information only */
/* _ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) */
@ TYPE(INPUT) INTENS(HIGH) PAD(’ ’) CAPS(OFF) JUST(LEFT)
! TYPE(OUTPUT) INTENS(LOW) PAD(’ ’) CAPS(OFF) JUST(LEFT)
)BODY
+ PHONE DIRECTORY SEARCH
%COMMAND ===>_ZCMD +
%
+Fill in the name of the person you want information about.
+To continue, press ENTER; to end, press END.
++
Last Name ===>@Z +
+ First Name ===>@Z +
+ Middle Name ===>@Z +
+ User Id ===>@Z +
)INIT
.ZVARS = ’(QAALAST QAAFRST QAAMIDLE QAAUSER)’ /* create input variables */
.CURSOR = QAALAST
)PROC
)END
)ATTR
% TYPE(TEXT) INTENS(HIGH) CAPS(OFF)
+ TYPE(TEXT) INTENS(LOW) CAPS(OFF)
_ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT)
$ TYPE(INPUT) INTENS(HIGH) CAPS(OFF) JUST(LEFT) PAD(_)
# TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) PAD(_)
! TYPE(OUTPUT) INTENS(HIGH) CAPS(OFF) JUST(LEFT)
@ TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(LEFT) PAD(' ')
)BODY
+ PHONE DIRECTORY LIST OF RESULTS
%COMMAND ===>_ZCMD %SCROLL ===>_Z +
%
+The information you requested is shown below.
+Press ENTER or END to continue.
+
% TYPE LAST/GROUP NAME FIRST NAME USER ID PHONE NUMBER
)MODEL ROWS(SCAN)
@Z@Z @Z @Z @Z @Z
)INIT
.ZVARS = '(ZSCML,QAAPRIV,QAATYPE,QAALAST,+
QAAFRST,QAAUSER,QAAPHONE)' /*display variables */
IF (&ZSCML = ' ')
&ZSCML = 'PAGE'
)PROC
)END
)ATTR
% TYPE(TEXT) INTENS(HIGH) CAPS(OFF)
+ TYPE(TEXT) INTENS(LOW) CAPS(OFF)
_ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT)
$ TYPE(INPUT) INTENS(HIGH) CAPS(OFF) JUST(LEFT) PAD(_)
# TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) PAD(_)
! TYPE(OUTPUT) INTENS(HIGH) CAPS(OFF) JUST(LEFT)
@ TYPE(OUTPUT) INTENS(LOW) CAPS(OFF) JUST(LEFT) PAD(' ')
)BODY
+ PHONE DIRECTORY LIST OF ENTRIES
%COMMAND ===>_ZCMD %SCROLL ===>_Z +
%
+More than one match was found, to view an entry type V next to it.
+To select one, type S.
+To save selections, press END; to cancel, type CANCEL on the COMMAND line.
+
% TYPE LAST/GROUP NAME FIRST NAME USER ID PHONE NUMBER
)MODEL ROWS(SCAN)
#Z@Z@Z @Z @Z @Z @Z
)INIT
.ZVARS = '(ZSCML,QAANSEL,QAAPRIV,QAATYPE,QAALAST,+
QAAFRST,QAAUSER,QAAPHONE)'
IF (&ZSCML = ' ')
&ZSCML = 'PAGE'
)PROC
&ICQCMD = &ZCMD /* save command for display in msg ICQGC036 */
&QAANTSEL = &QAANSEL /* save selection character for msg ICQCA700 */
&QAAVCHAR = 'V'
&QAASCHAR = 'S'
&ZCMD = TRANS(&ZCMD
' ',' '
CANCEL,CANCEL
MSG = ICQGC036) /* validate command, blank, or CANCEL only */
&QAANSEL = TRANS(&QAANSEL
&QAAVCHAR;,'V'
&QAASCHAR;,'S'
' ',' '
MSG = ICQCA700) /* validate selection char: S, V, or blank */
IF (&ZCMD = 'CANCEL')/* if CANCEL is typed */
&QACAN = 'Y'
VPUT (QACAN) SHARED /* set CANCEL flag and save it*/
)END