z/OS TSO/E Programming Services
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Example Using ICQCAL00

z/OS TSO/E Programming Services
SA32-0973-00

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.

Figure 1. A Sample Application Using ICQCAL00 — the PHONE CLIST

/**********************************************************************/
/* 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
     /**************************************************/
     /* 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
  ISPEXEC CONTROL ERRORS RETURN
  ISPEXEC TBEND INTABLE             /* END TABLE, IN CASE IT EXISTS
  ISPEXEC CONTROL ERRORS CANCEL
  ISPEXEC TBCREATE INTABLE NAMES (QAAVARS QAAUSE QAAGNRIC + 
              QAALIST QAARTYPE QAADIR QAAMODE QAAMXSEL + 
              QAAMXMSG QAAEXPGP QAAFMSG QAAPANEL QAAPANGP QAADUPSR + 
              QAASCNIK &QCANVARS) NOWRITE REPLACE
  SET ISPCODE = &LASTCC
  IF &ISPCODE > 4 THEN + 
    DO
      WRITE ERROR IN TBCREATE:  RETURN CODE OF &ISPCODE
      GOTO EXIT
     ENDO
ENDO
EXIT: + 
ISPEXEC VGET (QAATAB1 QAATAB2) SHARED /* GET NAMES OF OPEN DIRECTORIES */
ISPEXEC CONTROL ERRORS RETURN/* DON'T USE RETURN CODE PANELS  */
ISPEXEC TBEND &QAATAB1                /* CLOSE PRIVATE DIRECTORY       */
ISPEXEC TBEND &QAATAB2                /* CLOSE MASTER DIRECTORY        */
ISPEXEC CONTROL ERRORS CANCEL/* ALLOW RETURN CODE PANELS      */
EXIT CODE(0)                          /* EXIT WITH RETURN CODE         */
Figure 2. PHONE CLIST Input Panel Definition (JRT1)
)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
Figure 3. PHONE CLIST Output Panel Definition (JRT2)
)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
Figure 4. PHONE CLIST List Panel Definition (JRT3)
)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

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014