F*****************************************************************
F* *
F* Display Graph *
F* *
F*****************************************************************
F* *
F* RPGDSPGRPH - Display graph with RPGLE and DDS Subfile *
F*****************************************************************
F* *
F* FILES USED: *
F* DSPGRAPH - DISPLAY BAR GRAPH VALUES FOR 30 DAY PERIOD *
F* FORMATS- DATASF1, DATACT1, DATAFOOT, DATASF2, DATACT2 *
F* DATAFILE - DUMMY DATA FILE *
F* FORMAT - *
F* *
F* DISPLAY FORMAT INDICATORS USED: *
F* CA03 - EXIT PROGRAM *
F* 30 - SUBFILE INITIALIZATION *
F* *
F* PROGRAM INDICATORS USED: *
F* 90 - GENERAL PURPOSE *
F* *
F* SUBROUTINES USED: *
F* $INIT - INITIALIZE SUB-FILE *
F* $FILL - FILL DATA SUB-FILE *
F* *
F*****************************************************************
F*
FDSPGRAPH CF E WORKSTN INFDS(WORKS)
F SFILE(DATASF1:SF)
F SFILE(DATASF2:SFY)
F SFILE(DATASF3:SFX)
FDATAFILE IF E K DISK
D*
D MON S 1 DIM(12) CTDATA PERRCD(1) MONTH DESC.
D SHR S 5 2 DIM(30) 30 DAY HISTORY
D SCA S 5 2 DIM(15) Y-AXIS SCALE
D DTE S 5 DIM(30) 30 DAY DATES
D*
D WORKS DS
D STDFIL *FILE
D STDFMT *RECORD
D STDLIB 93 102
D STCMDK 287 310
D STACTN 369 369
D STCSRP 370 371B 0
D STSFLR 378 379B 0
D*
D SDS
D XXUSER 254 263
D*
D DS
D CMO 1 2
D SLSH 3 3
D CDAY1 4 4
D CDAY2 5 5
D @DATE 1 5
D*
D DS
D @SDA01 1 1
D @SDA06 2 2
D @SDA11 3 3
D @SDA16 4 4
D @SDA21 5 5
D @SDA26 6 6
D @SDA30 7 7
D DAY 1 7
D DIM(7) DAY FIELDS
C*
C*----------------------------------------------------------------
C* MAIN PROCESSING LOOP...
C*----------------------------------------------------------------
C* DO UNTIL F3(EXIT) OR F12(PREVIOUS/CALLING PROGRAM)
B1 C *IN03 DOUEQ '1'
C EXSR $INIT
C EXSR $FILL
C*
C* DISPLAY SCREEN UNTIL F3
B2 C* *IN03 DOUEQ'1'
C WRITE DATAFOOT
C WRITE DATACT3
C WRITE DATACT2
C WRITE DATACT1
C READ DATACT1 90
C*
E1 C END
C*
C*-------------------------
C*
C MOVE '1' *INLR
C RETURN
C*
C*----------------------------------------------------------------
C*----------------------------------------------------------------
C*--------- SUBROUTINES ------------------------------------------
C*----------------------------------------------------------------
C*----------------------------------------------------------------
C* INITIALIZE SUB-FILE
C*----------------------------------------------------------------
C $INIT BEGSR
C MOVE '1' *IN30
C WRITE DATACT1 INIT SUB-FILE
C WRITE DATACT2 INIT SUB-FILE
C WRITE DATACT3 INIT SUB-FILE
C MOVE '0' *IN30
C*
C Z-ADD 0 SF 2 0 SUB-FILE KEY
C ENDSR
C*
C*----------------------------------------------------------------
C* FILL SUB-FILE WITH MONTHLY VALUE AMOUNTS AND CALCULATIONS
C*----------------------------------------------------------------
C*
C $FILL BEGSR
C*
C*
C* LOAD SCALE AND CHECK TO SEE WHAT THE HIGHS AND LOWS ARE
C*
C CLEAR SHR
C CLEAR SCA
C Z-ADD 0 HIGH 5 2
C Z-ADD 88 LOW 5 2
C*
C Z-ADD 30 A 2 0
B1 C A DOWNE 0
C READ RFILE 90
C Z-ADD SXRATE SHR(A)
C*
C* CHECK ON SHARE PRICE - HIGH
C*
B2 C SXRATE IFGE HIGH
C Z-ADD SXRATE HIGH
E2 C END
C*
C* CHECK ON SHARE PRICE - LOW
C*
B2 C SXRATE IFLE LOW
C Z-ADD SXRATE LOW
E2 C END
C*
C* LOAD DATES IN DTE ARRAY
C*
B2 C A IFEQ 30
C A OREQ 26
C A OREQ 21
C A OREQ 16
C A OREQ 11
C A OREQ 6
C A OREQ 1
C MOVEL SXTRDE DTE(A)
E2 C END
C A SUB 1 A
E1 C END
C*
C* DETERMINE SCALE FACTOR
C*
C HIGH SUB LOW SCTOT 5 2
C SCTOT DIV(H) 15 SCALE 5 2
C*
C* LOAD SCA ARRAY WITH AMOUNTS
C*
B1 C LOW IFGE 0
B2 C 1 DO 15 X 2 0
C 15 SUB X Y 2 0
C Y ADD 2 Y
C SCALE MULT Y TMPSCA 5 2
C LOW ADD TMPSCA SCA(X)
E2 C END
X1 C ELSE
C Z-ADD 0 TMPHGH 5 2
C HIGH ADD SCALE TMPHGH
B2 C 1 DO 15 X
C 15 SUB X Y
C TMPHGH SUB SCALE SCA(X)
C Z-ADD SCA(X) TMPHGH
E2 C END
E1 C END
C*-------------------------
C*
C* DO FOR THE 30 DAYS
B1 C 1 DO 15 I 2 0
C*
B2 C 31 DO 60 Z 2 0
C MOVE '0' *IN(Z)
E2 C END
C*
B2 C 1 DO 30 B 2 0
C*
C Z-ADD SHR(B) SHARE 5 2
C*
C* READ THROUGH SHR ARRAY AND DETERMINE IF INDICATORS
C* 31 - 60 SHOULD BE TURNED ON FOR SHARE PRICE
C*
B3 C LOW IFGE 0
B4 C SHARE IFGE SCA(I)
C SHARE ANDNE 0
C B ADD 30 F 2 0
C MOVE '1' *IN(F)
E4 C END
X3 C ELSE
B4 C SHARE IFGE SCA(I)
C SCA(I) ANDGT 0
C B ADD 30 F 2 0
C MOVE '1' *IN(F)
X4 C ELSE
B5 C SHARE IFLT SCA(I)
C SCA(I) ANDLT 0
C B ADD 30 F 2 0
C MOVE '1' *IN(F)
E5 C END
E4 C END
E3 C END
E2 C END
C Z-ADD I SF INCR.RECD.#
C*
C* LOAD Y-AXIS VALUES
C*
C 15 SUB SF TMPSF 2 0
C TMPSF ADD 1 TMPSF
C TMPSF DIV 3 XXTEMP 2 0
C MVR XXREM 2 0
B4 C XXREM IFEQ 0
C Z-ADD SCA(I) @SCALE
E4 C END
C*
C WRITE DATASF1 90
C Z-ADD 0 @SCALE
E1 C END
C*
C* LOAD X-AXIS LINE
C*
C Z-ADD 1 SFY 1 0
C WRITE DATASF2 90
C*
C* LOAD X-AXIS VALUES
C*
B1 C 1 DO 4 V 1 0
C Z-ADD V SFX 1 0
C CLEAR DAY
C Z-ADD 0 D 1 0
B2 C 1 DO 30 A
B3 C A IFEQ 1
C A OREQ 6
C A OREQ 11
C A OREQ 16
C A OREQ 21
C A OREQ 26
C A OREQ 30
C MOVEL DTE(A) @DATE
C ADD 1 D
C*
B4 C V IFEQ 1
C MOVE CMO MO 2 0
C MOVEL MON(MO) DAY(D)
E4 C END
C*
B4 C V IFEQ 2
C MOVE '/' DAY(D)
E4 C END
C*
B4 C V IFEQ 3
C MOVE CDAY1 DAY(D)
E4 C END
C*
B4 C V IFEQ 4
C MOVE CDAY2 DAY(D)
E4 C END
E3 C END
E2 C END
C MOVE '0' *IN77
C V IFEQ 4
C MOVE '1' *IN77
C END
C WRITE DATASF3 90
E1 C END
C ENDSR
** PERIOD HEADINGS **
J
F
M
A
M
J
J
A
S
O
N
D