GDDM-PGF V2R1.3 Programming Guide and Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF | BOOK


ADMUSP5 - IMS PL/I program to draw a simple histogram

GDDM-PGF V2R1.3 Programming Guide and Reference
SC33-0333-01




     1ADMUSP5: PROC                                                          00500000
                 (IOPCBP,                 /* TO IO PCB                    */ 01000000
                  SYSPCBP                 /* TO SYSTEM DEFN. PCB          */ 01500000
                 ) OPTIONS(MAIN);                                            02000000
                                                                             02500000
      /********************************************************************/ 03000000
      /*          $MOD(ADMUSP5I),COMP(SMP-PLI),PROD(GDDMPGF):             */ 03100000
      /********************************************************************/ 03300000
      /*                        ADMUSP5                                   */ 03500000
      /*                                                                  */ 04000000
      /*          PROGRAM TO DISPLAY A SIMPLE HISTOGRAM USING THE         */ 04500000
      /*          PRESENTATION GRAPHICS FEATURE OF GDDM.                  */ 05000000
      /*                                                                  */ 05500000
      /*          THE HISTOGRAM DISPLAYS THE DISTRIBUTION OF AN           */ 06000000
      /*          IMAGINARY POPULATION BY AGE.                            */ 06500000
      /*                                                                  */ 07000000
      /*          THE PROGRAM IS PASSED TWO PCBS                          */ 07500000
      /*            (1). THE I/O PCB TO WHICH TO PICTURE IS SENT          */ 08000000
      /*            (2). THE SYSTEM DEFINITION DATABASE CONTAINING        */ 08500000
      /*                 TERMINAL CHARACTERISTICS                         */ 09000000
      /*                                                                  */ 09500000
      /********************************************************************/ 10000000
                                                                             10500000
       %INCLUDE (ADMUPINC);                                                  10900000
       %INCLUDE (ADMUPINE);                                                  11000000
       %INCLUDE (ADMUPINF);                                                  11700000
       %INCLUDE (ADMUPING);                                                  12100000
                                                                             12500000
      /********************************************************************/ 13000000
      /*    INPUT PARAMETERS                                              */ 13500000
      /********************************************************************/ 14000000
                                                                             14500000
      DECLARE                             /* INPUT PARAMETERS             */ 15000000
         IOPCBP POINTER,                  /* TO IO PCB                    */ 15500000
         SYSPCBP POINTER;                 /* TO SYSTEM DEFN. PCB          */ 16000000
      DECLARE                             /* SKELETAL PCB OVERLAY         */ 16500000
        1 PCB BASED,                                                         17000000
         2 PCBNAME CHAR(8),                                                  17500000
         2 PCBRESV FIXED BINARY(15),                                         18000000
         2 PCBSTAT CHAR(2);                                                  18500000
                                                                             19000000
      /********************************************************************/ 19500000
      /*    ATTRIBUTE ARRAYS USED FOR THE CHART.                          */ 20000000
      /********************************************************************/ 20500000
                                                                             21000000
       DECLARE                                                               21500000
           YELLOW (1) FIXED BIN(31) STATIC INIT(6),                          22000000
           RED (1) FIXED BIN(31)    STATIC INIT(2),                          22500000
           PAT (12) FIXED BIN(31)   STATIC INIT(1);                          23000000
                                                                             23500000
      /********************************************************************/ 24000000
      /*    HISTOGRAM BAR EXTREMES.                                       */ 24500000
      /*        RANGE1  GIVES LEFT-HAND SIDE OF CONSECUTIVE BARS,         */ 25000000
      /*        RANGE2  GIVES RIGHT-HAND SIDE.                            */ 25500000
      /*        - THERE ARE TO BE SEVEN BARS.                             */ 26000000
      /********************************************************************/ 26500000
       DECLARE                                                               27000000
           RANGE1 (7) FLOAT STATIC INIT(0,10,20,30,40,50,60),                27500000
           RANGE2 (7) FLOAT STATIC INIT(10,20,30,40,50,60,70),               28000000
      /********************************************************************/ 28500000
      /*    DATA TO BE PLOTTED.                                           */ 29000000
      /*    THE DATA IS CONSTANT IN THIS EXAMPLE PROGRAM SO THAT THE      */ 29500000
      /*    PROGRAM WILL RUN WITHOUT INPUT.                               */ 30000000
      /*    THERE IS ONE VALUE FOR EACH BAR, GIVING ITS HEIGHT.           */ 30500000
      /********************************************************************/ 31000000
           DATA (7) FLOAT INIT(12.3,15,21.3,20.2,15.3,11.4,4.5);             31500000
                                                                             32000000
      DECLARE                                                                37000000
        PLITDLI EXTERNAL ENTRY,         /* IMS PLI INTERFACE ROUTINE   */ 37500000
        THREE FIXED BIN(31) STATIC INIT(3),                                  38000000
        GUFUNC CHAR(4) STATIC INIT('GU  '), /* GET UNIQUE DLI CODE        */ 38500000
        1 INPUTSEG,                     /* INPUT SEGMENT                  */ 39000000
         2 INPUTLL FIXED BIN(31),       /* INPUT LENGTH                   */ 39500000
         2 INPUTZZ CHAR(2),             /* THE ZZ BYTES                   */ 40000000
         2 INPUT_TEXT CHAR(80);         /* THE INPUT MESSAGE              */ 40500000
      DECLARE                                                                41000000
        (IOPCB STATIC INIT(0),          /* ESPCB CODE FOR I/O PCB         */ 41500000
         DBPCB STATIC INIT(2))          /* ESPCB CODE FOR DATABASE PCB    */ 42000000
            FIXED BIN(31);                                                   42500000
                                                                             43000000
     1/********************************************************************/ 43500000
      /*                                                                  */ 44000000
      /*       ISSUE A GU TO THE IOPCB. TERMINATE THE TRANSACTION IF      */ 44500000
      /*       NO MESSAGE IS RETURNED.                                    */ 45000000
      /*                                                                  */ 45500000
      /********************************************************************/ 46000000
                                                                             46500000
       GU:                                                                   47000000
         CALL PLITDLI(THREE,GUFUNC,IOPCBP->PCB,INPUTSEG);                    47500000
         IF IOPCBP->PCBSTAT='  ' THEN GOTO EXIT;                            48000000
         INPUTLL=INPUTLL-4;             /* SET LENGTH OF TEXT ENTERED     */ 48500000
                                                                             49000000
      /********************************************************************/ 49500000
      /*                                                                  */ 50000000
      /*       INITIALIZE GDDM, AND IDENTIFY THE PCBS TO GDDM             */ 50500000
      /*                                                                  */ 51000000
      /********************************************************************/ 51500000
                                                                             52000000
                                                                             52500000
       CALL FSINIT;                     /* INITIALIZE.                    */ 53000000
                                                                             53500000
       CALL ESPCB(IOPCB,IOPCBP->PCB);   /* DEFINE IO PCB                  */ 54000000
       CALL ESPCB(DBPCB,SYSPCBP->PCB);  /* DEFINE SYSTEM DEFINITION PCB   */ 54500000
                                                                             60500000
      /********************************************************************/ 61000000
      /*    SPECIFY THE CHART HEADING IN COLOR YELLOW. BECAUSE NO OTHER   */ 61600000
      /*    ATTRIBUTES ARE GIVEN, THEY WILL DEFAULT TO STANDARD SIZE,     */ 62200000
      /*    STANDARD CHARACTER-SET MODE 1 TEXT.                           */ 62800000
      /********************************************************************/ 63400000
           CALL CHHATT(1,YELLOW);                                            64000000
           CALL CHHEAD(47,'PERCENTAGE POPULATION DISTRIBUTION BY AGE GROUP');64600000
      /********************************************************************/ 65200000
      /*    SPECIFY THE X (HORIZONTAL) TITLE AND THE Y (VERTICAL) TITLE.  */ 65800000
      /*    THE ATTRIBUTES ARE NOT GIVEN AND WILL BE THE DEFAULT ONES -   */ 66400000
      /*    (GREEN, STANDARD MODE 1 TEXT).                                */ 67000000
      /********************************************************************/ 67600000
           CALL CHXTTL (10,'AGE GROUPS');                                    68200000
           CALL CHYTTL (10,'PERCENTAGE');                                    68800000
      /********************************************************************/ 69400000
      /*    BECAUSE THE BARS REPRESENT RANGES, EACH IS LABELED WITH       */ 70000000
      /*    THE RANGE IT REPRESENTS.  IF THIS LABELING IS OMITTED         */ 70600000
      /*    THE NORMAL NUMERIC AXIS LABELING WOULD BE SUFFICIENT TO       */ 71200000
      /*    INDICATE THE RANGES EXCEPT AT THE EXTREMES.                   */ 71800000
      /*    THE RANGE OF X VALUES IS 0 TO 70, WITH TICKS EVERY 10.        */ 72400000
      /*    THE LABELS ARE CENTERED BETWEEN THE TICKS.                    */ 73000000
      /********************************************************************/ 73600000
           CALL CHXRNG(0,70);                                                74200000
           CALL CHXTIC(10,0);                                                74800000
           CALL CHXLAB(8,5,'      <11 11-2021-3031-4041-5051-60 >60 ');      75400000
           CALL CHXSET('LABMIDDLE');                                         76000000
      /********************************************************************/ 76600000
      /*    SPECIFY A VERTICAL Y RANGE OF 22 WITH LONG (MAJOR) TICKS      */ 77200000
      /*    EVERY TWO, AND ONE SHORT (MINOR) TICK BETWEEN.                */ 77800000
      /*    - IF THE RANGE IS OMITTED, AUTOSCALING WILL NORMALLY          */ 78400000
      /*    PRODUCE A SUITABLE AXIS RANGE PROVIDED CONSISTENCY FROM       */ 79000000
      /*    CHART TO CHART IS NOT IMPORTANT.                              */ 79600000
      /********************************************************************/ 80200000
           CALL CHYRNG(0,22);                                                80800000
           CALL CHYTIC(2,1);                                                 81400000
                                                                             82000000
                                                                             82600000
      /********************************************************************/ 83200000
      /*    HAVING SPECIFIED THE AXIS CHARACTERISTICS, THE DATA           */ 83800000
      /*    IS PLOTTED.   THE HISTOGRAM IS SPECIFIED AS RED AND           */ 84400000
      /*    USING PATTERN 12 (A DUSTING OF DOTS).  BY DEFAULT THE         */ 85000000
      /*    PGF ROUTINES WILL GENERATE THE GRAPH IN BLUE USING PATTERN 1. */ 85600000
      /********************************************************************/ 86200000
           CALL CHCOL(1,RED);                                                86800000
           CALL CHPAT(1,PAT);                                                87400000
           CALL CHHIST(1,7,RANGE1,RANGE2,DATA);                              88000000
                                                                             88600000
      /********************************************************************/ 89200000
      /*    PUT A NOTE AT THE BOTTOM LEFT OF THE CHART WITH INSTRUCTIONS  */ 89800000
      /********************************************************************/ 90400000
           CALL CHNOTE('BL',38,'PRESS CLEAR AND ENTER NEXT TRANSACTION');    91000000
                                                                             91600000
                                                                             92200000
      /********************************************************************/ 92800000
      /*    FINALLY CAUSE THE OUTPUT TO BE SENT TO THE TERMINAL USING     */ 93400000
      /*    THE FSFRCE FUNCTION.                                          */ 94000000
      /********************************************************************/ 94600000
           CALL FSFRCE;                                                      95200000
      /********************************************************************/ 95800000
      /*    TERMINATE GDDM AND THEN REISSUE THE GU.                       */ 96400000
      /********************************************************************/ 97000000
           CALL FSTERM;                                                      97600000
           GOTO GU;                                                          98200000
       EXIT:;                                                                98800000
       END ADMUSP5;                                                          99400000

Go to the previous page Go to the next page



Copyright IBM Corporation 1990, 2012