This section contains example programs that demonstrate calling the ICU
from an application program with the CHART call.
See the GDDM-PGF Application Programming Guide for examples of programs
using the CSxxxx calls.
The first CHART call program, shown in Figure 11, calls the ICU to display
program-supplied data. It creates a line graph with three lines and five
points on each line. It shows how to use the chart_control structure, the
data value parameters, and the CHART call.
Figure 12 shows how to send a chart to a page printer. The name of the
chart is specified as a parameter to the program. The type of printer
must be specified in a DSOPEN statement. In this case, it is an IBM 4250
printer (a family-4 printer in GDDM terms).
For more information about the DSOPEN and DSUSE calls, see the GDDM Base
Application Programming Reference book.
LGRAPH: PROC OPTIONS(MAIN);
%INCLUDE ADMUPINC; /* 'C..' ENTRY POINTS */
%INCLUDE ADMUPINF; /* 'F..' ENTRY POINTS */
DCL 1 CHART_CONTROL, /* CHART CONTROL PARAMETER */
2 LEVEL FIXED BIN(31) INIT(1), /* FULL STRUCTURE FORMAT */
2 DISPLAY FIXED BIN(31) INIT(1), /* ALL MENU PANELS ACCESSIBLE */
2 HELP FIXED BIN(31) INIT(1), /* PF KEYS SHOWN ON DISPLAY */
2 ISOLATE FIXED BIN(31) INIT(0), /* SAVE/RESTORE/DIRECTORY OK */
2 FORMNAME CHAR(8) INIT('*'), /* DEFAULT CHART FORMAT */
2 DATANAME CHAR(8) INIT('*'), /* DATA IS PASSED IN ARRAY x */
2 BINDING FIXED BIN(31) INIT(0), /* DATA IS NORMAL IE. TIED */
2 NG FIXED BIN(31) INIT(3), /* 3 DATA GROUPS */
2 NE FIXED BIN(31) INIT(5), /* 5 ELEMENTS IN EACH GROUP */
2 KEYL FIXED BIN(31) INIT(0), /* NO KEYS */
2 LABELL FIXED BIN(31) INIT(0), /* NO LABELS */
2 HEADINGL FIXED BIN(31) INIT(14), /* 14 CHARACTER HEADING */
2 DESTNAME CHAR(8) INIT('*'), /* PRINT DESTINATION UNKNOWN */
2 PRTDEP FLOAT DEC(6) INIT(0), /* DEFAULT PRINT DEPTH */
2 PRTWID FLOAT DEC(6) INIT(0), /* DEFAULT PRINT WIDTH */
2 PRTCOPY FIXED BIN(31) INIT(1), /* JUST 1 PRINT COPY */
2 PRTHEAD FIXED BIN(31) INIT(0), /* NO PRINT HEADER PAGE */
2 PRTVOFF FLOAT DEC(6) INIT(-1), /* DEFAULT PRINT VERTICAL OFFSET */
2 PRTHOFF FLOAT DEC(6) INIT(-1), /* DEFAULT PRINT HORIZTAL OFFSET */
2 PRTUNIT FIXED BIN(31) INIT(0), /* DEFAULT PRINT UNITS (%AGES) */
2 RESERVED FIXED BIN(31) INIT(0), /* ICU RESERVED */
2 DRYNAME CHAR(8) INIT(' '), /* NO INITIAL DIRECTORY NAME */
2 DRYTYPE FIXED BIN(31) INIT(0), /* DEFAULT DIRECTORY TYPE */
2 DRYTYPEQ FIXED BIN(31) INIT(0), /* DEFAULT DIRECTORY SUBTYPE */
2 DRYLIB CHAR(8) INIT(' '), /* DEFAULT DIRECTORY LIBRARY */
2 EXPLVL FIXED BIN(31) INIT(0); /* STANDARD EXPERIENCE LEVEL */
DCL DATA_CONTROL(1) FIXED BIN(31); /* ONLY USED FOR FREE DATA */
DCL X(5) FLOAT DEC(6) /* x VALUES DATA ARRAY */
INIT(1,2,3,4,5);
DCL Y(15) FLOAT DEC(6) /* y VALUES DATA ARRAY: */
INIT(100,122,172,200,217, /* 1ST DATA GROUP */
100,105,118,127,153, /* 2ND DATA GROUP */
100,110,129,144,177); /* 3RD DATA GROUP */
DCL KEYS(1) CHAR(1); /* DUMMY KEYS ARRAY */
DCL LABELS(1) CHAR(1); /* DUMMY LABELS ARRAY */
DCL HEADING CHAR(14) /* HEADING TEXT */
INIT('ICU LINE GRAPH');
CALL FSINIT; /* INITIALIZE GDDM */
CALL CHART /* CALL CHART UTILITY */
(CHART_CONTROL,DATA_CONTROL,X,Y,KEYS,LABELS,HEADING);
CALL FSTERM; /* TERMINATE GDDM PROCESSING */
END LGRAPH;
Figure 11. Program to display line graphs using the ICU
PRTCHART: PROC(NAME) OPTIONS(MAIN);
%INCLUDE ADMUPINC; /* 'C..' ENTRY POINTS */
%INCLUDE ADMUPIND; /* 'D..' ENTRY POINTS */
%INCLUDE ADMUPINF; /* 'F..' ENTRY POINTS */
DCL 1 CHART_CONTROL, /* CHART CONTROL PARAMETER */
2 LEVEL FIXED BIN(31) INIT(1), /* FULL STRUCTURE FORMAT */
2 DISPLAY FIXED BIN(31) INIT(6), /* BUILD CHART IN USER'S PAGE; */
/* DO NOT TERMINATE PG ROUTINES */
2 HELP FIXED BIN(31) INIT(1), /* PF KEYS SHOWN ON DISPLAY */
2 ISOLATE FIXED BIN(31) INIT(0), /* SAVE/RESTORE/DIRECTORY OK */
2 FORMNAME CHAR(8), /* FORMAT NAME SET LATER */
2 DATANAME CHAR(8), /* DATA NAME SET LATER */
2 BINDING FIXED BIN(31) INIT(0), /* DATA IS NORMAL IE. TIED */
2 NG FIXED BIN(31), /* NOT USED */
2 NE FIXED BIN(31), /* NOT USED */
2 KEYL FIXED BIN(31), /* NOT USED */
2 LABELL FIXED BIN(31), /* NOT USED */
2 HEADINGL FIXED BIN(31), /* NOT USED */
2 DESTNAME CHAR(8) INIT(' '), /* PRINT DESTINATION UNKNOWN */
2 PRTDEP FLOAT DEC(6) INIT(60), /* DEFAULT PRINT DEPTH */
2 PRTWID FLOAT DEC(6) INIT(90), /* DEFAULT PRINT WIDTH */
2 PRTCOPY FIXED BIN(31) INIT(1), /* JUST 1 PRINT COPY */
2 PRTHEAD FIXED BIN(31) INIT(0), /* NO PRINT HEADER PAGE */
2 PRTVOFF FLOAT DEC(6) INIT(-1), /* DEFAULT PRINT VERTICAL OFFSET */
2 PRTHOFF FLOAT DEC(6) INIT(-1), /* DEFAULT PRINT HORIZTAL OFFSET */
2 PRTUNIT FIXED BIN(31) INIT(4), /* ROW & COLUMN PRINT UNITS */
2 RESERVED FIXED BIN(31) INIT(0), /* ICU RESERVED */
2 DRYNAME CHAR(8) INIT(' '), /* NO INITIAL DIRECTORY NAME */
2 DRYTYPE FIXED BIN(31) INIT(0), /* DEFAULT DIRECTORY TYPE */
2 DRYTYPEQ FIXED BIN(31) INIT(0), /* DEFAULT DIRECTORY SUBTYPE */
2 DRYLIB CHAR(8) INIT(' '), /* DEFAULT DIRECTORY LIBRARY */
2 EXPLVL FIXED BIN(31) INIT(0); /* STANDARD EXPERIENCE LEVEL */
DCL NAME CHAR(8) VARYING; /* CHART NAME (PARAMETER) */
FORMNAME = NAME; /* SET CHART FORMAT AND CHART */
DATANAME = NAME; /* DATA NAMES TO PARAMETER. */
DCL /* DUMMY DECLARES FOR CHART CALL */
DATA_CONTROL(1) FIXED BIN(31), /* NOT USED */
X(1) FLOAT DEC(6), /* NOT USED */
Y(1) FLOAT DEC(6), /* NOT USED */
KEYS(1) CHAR(1), /* NOT USED */
LABELS(1) CHAR(1), /* NOT USED */
HEADING CHAR(1); /* NOT USED */
DCL /* DECLARES FOR THE DSOPEN */
PROCNT FIXED BIN(31) INIT(12),/* PROCESSING OPTION COUNT */
PROLIST(12) FIXED BIN(31), /* PROCESSING OPTION LIST */
NAMCNT FIXED BIN(31) INIT(1), /* NAME COUNT */
NAMLIST(1) CHAR(8); /* NAME LIST */
PROLIST(1) = 5; /* OPT GROUP: PRIMARY/SECONDARY */
PROLIST(2) = 0; /* PRIMARY */
PROLIST(3) = 6; /* OPT GROUP: SPILL/NO-SPILL */
PROLIST(4) = 0; /* SPILL */
PROLIST(5) = 7; /* OPT GROUP: SWATHES */
PROLIST(6) = 10; /* 10 SWATHES */
PROLIST(7) = 8; /* OPT GROUP: PAGE SIZE */
PROLIST(8) = 50; /* WIDTH 5 INCHES */
PROLIST(9) = 50; /* DEPTH 5 INCHES */
PROLIST(10)= 0; /* 1/10 INCHES */
PROLIST(11)= 9; /* OPT GROUP: UN/FORMATTED */
PROLIST(12)= 1; /* FORMATTED */
NAMLIST(1) = NAME; /* USE CHART NAME AS PRINT-FILE */
/* NAME */
CALL FSINIT; /* INITIALIZE GDDM */
CALL DSOPEN /* OPEN A FAMILY-4 PRINTER */
(88,4,'IMG600X',PROCNT,PROLIST,NAMCNT,NAMLIST);
CALL DSUSE(1,88); /* MAKE IMG600X PRIMARY DEVICE */
CALL CHART /* CALL CHART UTILITY */
(CHART_CONTROL,DATA_CONTROL,X,Y,KEYS,LABELS,HEADING);
CALL FSFRCE; /* TRANSMIT PAGE TO PRINT FILE */
CALL FSTERM; /* TERMINATE GDDM PROCESSING */
END PRTCHART;
Figure 12. Program to send a chart to a page printer
|