|
|
The DDS for a Pop-up Calendar
* http://www.400times.com/FrameData/Pop-up_Calendar.htm *
A*%%TS SD 20020727 132400 BOOTH REL-V4R4M0 5769-PW1
A*
A*%%EC
A DSPSIZ(24 80 *DS3)
A CHGINPDFT
A PRINT
A ENTFLDATR((*COLOR RED) (*DSPATR RI))
A R FMT001
A*%%TS SD 20020727 132400 BOOTH REL-V4R4M0 5769-PW1
A CA03(03 'Exit')
A CA07(07 'Exit')
A CA12(12 'Exit')
A CF04(84)
A CF05(85)
A PAGEUP(84)
A PAGEDOWN(85)
A KEEP
A RTNCSRLOC(&CSRRCD &CSRFLD &CSRPOS)
A 05 CSRLOC(ROW COL)
A OVERLAY
A WINDOW(*DFT 9 21 *NOMSGLIN)
A WDWTITLE((*TEXT ' F3=Cancel, PgUp/D-
A own ') *BOTTOM)
A MOUBTN(*ULD ENTER)
A @DAY01 1A P
A @DAY02 1A P
A @DAY03 1A P
A @DAY04 1A P
A @DAY05 1A P
A @DAY06 1A P
A @DAY07 1A P
A @DAY08 1A P
A @DAY09 1A P
A @DAY10 1A P
A @DAY11 1A P
A @DAY12 1A P
A @DAY13 1A P
A @DAY14 1A P
A @DAY15 1A P
A @DAY16 1A P
A @DAY17 1A P
A @DAY18 1A P
A @DAY19 1A P
A @DAY20 1A P
A @DAY21 1A P
A @DAY22 1A P
A @DAY23 1A P
A @DAY24 1A P
A @DAY25 1A P
A @DAY26 1A P
A @DAY27 1A P
A @DAY28 1A P
A @DAY29 1A P
A @DAY30 1A P
A @DAY31 1A P
A @DAY32 1A P
A @DAY33 1A P
A @DAY34 1A P
A @DAY35 1A P
A @DAY36 1A P
A @DAY37 1A P
A @DAY38 1A P
A @DAY39 1A P
A @DAY40 1A P
A @DAY41 1A P
A @DAY42 1A P
A CSRRCD 10A H
A CSRFLD 10A H
A CSRPOS 4S 0H
A ROW 3S 0H
A COL 3S 0H
A MTHNAME 10A O 1 1DSPATR(HI)
A YEARNUM 4S 0O 1 17DSPATR(HI)
A 3 2'S'
A COLOR(RED)
A 3 5'M'
A COLOR(BLU)
A 3 8'T'
A COLOR(BLU)
A 3 11'W'
A COLOR(BLU)
A 3 14'T'
A COLOR(BLU)
A 3 17'F'
A COLOR(BLU)
A 3 20'S'
A COLOR(RED)
A DAY01 2A B 4 1DSPATR(&@DAY01)
A DAY02 2A B 4 4DSPATR(&@DAY02)
A DAY03 2A B 4 7DSPATR(&@DAY03)
A DAY04 2A B 4 10DSPATR(&@DAY04)
A DAY05 2A B 4 13DSPATR(&@DAY05)
A DAY06 2A B 4 16DSPATR(&@DAY06)
A DAY07 2A B 4 19DSPATR(&@DAY07)
A DAY08 2A B 5 1DSPATR(&@DAY08)
A DAY09 2A B 5 4DSPATR(&@DAY09)
A DAY10 2A B 5 7DSPATR(&@DAY10)
A DAY11 2A B 5 10DSPATR(&@DAY11)
A DAY12 2A B 5 13DSPATR(&@DAY12)
A DAY13 2A B 5 16DSPATR(&@DAY13)
A DAY14 2A B 5 19DSPATR(&@DAY14)
A DAY15 2A B 6 1DSPATR(&@DAY15)
A DAY16 2A B 6 4DSPATR(&@DAY16)
A DAY17 2A B 6 7DSPATR(&@DAY17)
A DAY18 2A B 6 10DSPATR(&@DAY18)
A DAY19 2A B 6 13DSPATR(&@DAY19)
A DAY20 2A B 6 16DSPATR(&@DAY20)
A DAY21 2A B 6 19DSPATR(&@DAY21)
A DAY22 2A B 7 1DSPATR(&@DAY22)
A DAY23 2A B 7 4DSPATR(&@DAY23)
A DAY24 2A B 7 7DSPATR(&@DAY24)
A DAY25 2A B 7 10DSPATR(&@DAY25)
A DAY26 2A B 7 13DSPATR(&@DAY26)
A DAY27 2A B 7 16DSPATR(&@DAY27)
A DAY28 2A B 7 19DSPATR(&@DAY28)
A DAY29 2A B 8 1DSPATR(&@DAY29)
A DAY30 2A B 8 4DSPATR(&@DAY30)
A DAY31 2A B 8 7DSPATR(&@DAY31)
A DAY32 2A B 8 10DSPATR(&@DAY32)
A DAY33 2A B 8 13DSPATR(&@DAY33)
A DAY34 2A B 8 16DSPATR(&@DAY34)
A DAY35 2A B 8 19DSPATR(&@DAY35)
A DAY36 2A B 9 1DSPATR(&@DAY36)
A DAY37 2A B 9 4DSPATR(&@DAY37)
A DAY38 2A B 9 7DSPATR(&@DAY38)
A DAY39 2A B 9 10DSPATR(&@DAY39)
A DAY40 2A B 9 13DSPATR(&@DAY40)
A DAY41 2A B 9 16DSPATR(&@DAY41)
A DAY42 2A B 9 19DSPATR(&@DAY42)
A R DUMMY
A*
A KEEP
A ASSUME
A 1 3' '
|
The RPG for the Pop-Up Calendar
* http://www.400times.com/FrameData/Pop-up_Calendar.htm *
*************************************************************
* A program to show a pop-up calendar *
* 7/02 Booth M. *
* (Uses mouse button click) *
* http://www.400times.com/FrameData/Pop-up_Calendar.htm *
*************************************************************
FUTLCALD cf e workstn INFDS(INFDS)
d StartDate s d INZ(*SYS)
d BlankDate s d
d firstdate s d datfmt(*iso) inz(d'1899-12-31')
d lowestdate s d datfmt(*iso) inz(d'1900-01-01')
d xdate s d
d today s 6 0
d day# s 2 0
d @p s 3 0
d work s 5 0
d pddath# s 5 0
d Count s 5 0
d ix s 3 0
d day s 2
d curmnth s 2 0
d curyear s 4 0
d InFds ds
dcursor 370 371b 0
d ArrayX ds
d Array 2 dim(42)
d PdmDS ds
d pdm 2 0 dim(13)
d MonthNames ds
d 9 inz('January ')
d 9 inz('February ')
d 9 inz('March ')
d 9 inz('April ')
d 9 inz('May ')
d 9 inz('June ')
d 9 inz('July ')
d 9 inz('August ')
d 9 inz('September')
d 9 inz('October ')
d 9 inz('November ')
d 9 inz('December ')
d MthNam 9 dim(12) overlay(MonthNames)
d DspAtribs ds
d @DAY01 1 inz(Normal)
d @DAY02 1 inz(Normal)
d @DAY03 1 inz(Normal)
d @DAY04 1 inz(Normal)
d @DAY05 1 inz(Normal)
d @DAY06 1 inz(Normal)
d @DAY07 1 inz(Normal)
d @DAY08 1 inz(Normal)
d @DAY09 1 inz(Normal)
d @DAY10 1 inz(Normal)
d @DAY11 1 inz(Normal)
d @DAY12 1 inz(Normal)
d @DAY13 1 inz(Normal)
d @DAY14 1 inz(Normal)
d @DAY15 1 inz(Normal)
d @DAY16 1 inz(Normal)
d @DAY17 1 inz(Normal)
d @DAY18 1 inz(Normal)
d @DAY19 1 inz(Normal)
d @DAY20 1 inz(Normal)
d @DAY21 1 inz(Normal)
d @DAY22 1 inz(Normal)
d @DAY23 1 inz(Normal)
d @DAY24 1 inz(Normal)
d @DAY25 1 inz(Normal)
d @DAY26 1 inz(Normal)
d @DAY27 1 inz(Normal)
d @DAY28 1 inz(Normal)
d @DAY29 1 inz(Normal)
d @DAY30 1 inz(Normal)
d @DAY31 1 inz(Normal)
d @DAY32 1 inz(Normal)
d @DAY33 1 inz(Normal)
d @DAY34 1 inz(Normal)
d @DAY35 1 inz(Normal)
d @DAY36 1 inz(Normal)
d @DAY37 1 inz(Normal)
d @DAY38 1 inz(Normal)
d @DAY39 1 inz(Normal)
d @DAY40 1 inz(Normal)
d @DAY41 1 inz(Normal)
d @DAY42 1 inz(Normal)
d DayAtr 1 dim(42) overlay(DspAtribs)
* RI=Reverse Image, HI=Hi Intensity, BL=blink, UL=Underline
* ND=Non Display
* NON Protect fields
d Normal c const(x'20')
d RI c const(x'21')
d HI c const(x'22')
d HIRI c const(x'23')
d UL c const(x'24')
d ULRI c const(x'25')
d ULHI c const(x'26')
d ND c const(x'27')
d BL c const(x'28')
d BLRI c const(x'29')
d BLHI c const(x'2A')
d BLHIRI c const(x'2B')
d BLUL c const(x'2C')
d BLULRI c const(x'2D')
d BLULHI c const(x'2E')
* Protect field
d PRNormal c const(x'A0')
d PRRI c const(x'A1')
d PRHI c const(x'A2')
d PRHIRI c const(x'A3')
d PRUL c const(x'A4')
d PRULRI c const(x'A5')
d PRULHI c const(x'A6')
d PRND c const(x'A7')
d PRBL c const(x'A8')
d PRBLRI c const(x'A9')
d PRBLHI c const(x'AA')
d PRBLHIRI c const(x'AB')
d PRBLUL c const(x'AC')
d PRBLULRI c const(x'AD')
d PRBLULHI c const(x'AE')
c again tag
c yearnum div 4 work4 4 0
c mvr leap 3 0
c if leap = *zero
c eval pdm(2) = 29
c else
c eval pdm(2) = 28
c endif
c clear DspAtribs
*===================================================================
* Find day of the week
*===================================================================
c startdate subdur firstdate pddath#:*d
c pddath# div 7 work
c mvr @p
c eval day# = @p + 1
c
c eval mthname = mthnam(mthnum)
c eval count = 0
c eval array = *blanks
c eval out = *blanks
* Fill array with date numbers
c do pdm(mthnum)
c eval count = count + 1
c move count out 2
c eval array(day#) = out
c eval day# = day# +1
c enddo
* Unprotect all fields that could be blank
c movea '0000000' *in(01)
c movea '0000000' *in(29)
c movea '0000000' *in(36)
* Fill screen fields
c eval day01 = array(01)
c eval day02 = array(02)
c eval day03 = array(03)
c eval day04 = array(04)
c eval day05 = array(05)
c eval day06 = array(06)
c eval day07 = array(07)
c eval day08 = array(08)
c eval day09 = array(09)
c eval day10 = array(10)
c eval day11 = array(11)
c eval day12 = array(12)
c eval day13 = array(13)
c eval day14 = array(14)
c eval day15 = array(15)
c eval day16 = array(16)
c eval day17 = array(17)
c eval day18 = array(18)
c eval day19 = array(19)
c eval day20 = array(20)
c eval day21 = array(21)
c eval day22 = array(22)
c eval day23 = array(23)
c eval day24 = array(24)
c eval day25 = array(25)
c eval day26 = array(26)
c eval day27 = array(27)
c eval day28 = array(28)
c eval day29 = array(29)
c eval day30 = array(30)
c eval day31 = array(31)
c eval day32 = array(32)
c eval day33 = array(33)
c eval day34 = array(34)
c eval day35 = array(35)
c eval day36 = array(36)
c eval day37 = array(37)
c eval day38 = array(38)
c eval day39 = array(39)
c eval day40 = array(40)
c eval day41 = array(41)
c eval day42 = array(42)
* Reverse image today's/selected date
c if mthnum = curmnth and yearnum = curyear
c move daynum day
c eval ix = 1
c day lookup array(ix) 80
c 80 eval DayAtr(ix) = RI
c endif
* Protect Blank fields
c day01 comp *blanks 01
c 01 eval @DAY01 = PRNormal
c day02 comp *blanks 02
c 02 eval @DAY01 = PRNormal
c day03 comp *blanks 03
c 03 eval @DAY01 = PRNormal
c day04 comp *blanks 04
c 04 eval @DAY01 = PRNormal
c day05 comp *blanks 05
c 05 eval @DAY01 = PRNormal
c day06 comp *blanks 06
c 06 eval @DAY01 = PRNormal
c day07 comp *blanks 07
c 07 eval @DAY01 = PRNormal
c day29 comp *blanks 29
c 29 eval @DAY01 = PRNormal
c day30 comp *blanks 30
c 30 eval @DAY01 = PRNormal
c day31 comp *blanks 31
c 31 eval @DAY01 = PRNormal
c day32 comp *blanks 32
c 32 eval @DAY01 = PRNormal
c day33 comp *blanks 33
c 33 eval @DAY01 = PRNormal
c day34 comp *blanks 34
c 34 eval @DAY01 = PRNormal
c day35 comp *blanks 35
c 35 eval @DAY01 = PRNormal
c day36 comp *blanks 36
c 36 eval @DAY01 = PRNormal
c day37 comp *blanks 37
c 37 eval @DAY01 = PRNormal
c day38 comp *blanks 38
c 38 eval @DAY01 = PRNormal
c day39 comp *blanks 39
c 39 eval @DAY01 = PRNormal
c day40 comp *blanks 40
c 40 eval @DAY01 = PRNormal
c day41 comp *blanks 41
c 41 eval @DAY01 = PRNormal
c day42 comp *blanks 42
c 42 eval @DAY01 = PRNormal
c doW Not *inLR
c exfmt fmt001
*
*
C Select
c When *inkc Or *INKG Or *INKL
c Eval *INLR = *On
*
* Go forward one month (F4)
c When *inkd or *IN84
c eval mthnum = mthnum + 1
c if mthnum = 13
c eval mthnum = 1
c eval yearnum = yearnum + 1
c endif
c clear startdate
c eval yearnum = yearnum - 1
c eval mthnum = mthnum - 1
c adddur yearnum:*y startdate
c adddur mthnum:*m startdate
c eval yearnum = yearnum + 1
c eval mthnum = mthnum + 1
c goto again
*
* Go back one month (F5)
c When *inke or *IN85
c eval mthnum = mthnum - 1
c if mthnum = 00
c eval mthnum = 12
c eval yearnum = yearnum - 1
c endif
c clear startdate
c eval yearnum = yearnum - 1
c eval mthnum = mthnum - 1
c adddur yearnum:*y startdate
c adddur mthnum:*m startdate
c eval yearnum = yearnum + 1
c eval mthnum = mthnum + 1
c if startdate <= firstdate
c eval startdate = lowestdate
c eval yearnum = 1900
c eval mthnum = 01
c eval daynum = 01
c endif
c goto again
*
C Other
* Fill return fields
c move *blanks out 2
c select
c when csrfld = 'DAY01'
c eval out = array(01)
c when csrfld = 'DAY02'
c eval out = array(02)
c when csrfld = 'DAY03'
c eval out = array(03)
c when csrfld = 'DAY04'
c eval out = array(04)
c when csrfld = 'DAY05'
c eval out = array(05)
c when csrfld = 'DAY06'
c eval out = array(06)
c when csrfld = 'DAY07'
c eval out = array(07)
c when csrfld = 'DAY08'
c eval out = array(08)
c when csrfld = 'DAY09'
c eval out = array(09)
c when csrfld = 'DAY10'
c eval out = array(10)
c when csrfld = 'DAY11'
c eval out = array(11)
c when csrfld = 'DAY12'
c eval out = array(12)
c when csrfld = 'DAY13'
c eval out = array(13)
c when csrfld = 'DAY14'
c eval out = array(14)
c when csrfld = 'DAY15'
c eval out = array(15)
c when csrfld = 'DAY16'
c eval out = array(16)
c when csrfld = 'DAY17'
c eval out = array(17)
c when csrfld = 'DAY18'
c eval out = array(18)
c when csrfld = 'DAY19'
c eval out = array(19)
c when csrfld = 'DAY20'
c eval out = array(20)
c when csrfld = 'DAY21'
c eval out = array(21)
c when csrfld = 'DAY22'
c eval out = array(22)
c when csrfld = 'DAY23'
c eval out = array(23)
c when csrfld = 'DAY24'
c eval out = array(24)
c when csrfld = 'DAY25'
c eval out = array(25)
c when csrfld = 'DAY26'
c eval out = array(26)
c when csrfld = 'DAY27'
c eval out = array(27)
c when csrfld = 'DAY28'
c eval out = array(28)
c when csrfld = 'DAY29'
c eval out = array(29)
c when csrfld = 'DAY30'
c eval out = array(30)
c when csrfld = 'DAY31'
c eval out = array(31)
c when csrfld = 'DAY32'
c eval out = array(32)
c when csrfld = 'DAY33'
c eval out = array(33)
c when csrfld = 'DAY34'
c eval out = array(34)
c when csrfld = 'DAY35'
c eval out = array(35)
c when csrfld = 'DAY36'
c eval out = array(36)
c when csrfld = 'DAY37'
c eval out = array(37)
c when csrfld = 'DAY38'
c eval out = array(38)
c when csrfld = 'DAY39'
c eval out = array(39)
c when csrfld = 'DAY40'
c eval out = array(40)
c when csrfld = 'DAY41'
c eval out = array(41)
c when csrfld = 'DAY42'
c eval out = array(42)
c endsl
c if out <> *blanks
c move mthnum outmth 2
c move yearnum outyear 4
c eval *inlr = *on
c endif
c endsl
c enddo
* End of routine:
c exit tag
c If %Parms = 3
c Eval p_outyear = outyear
c Eval p_outmth = outmth
c Eval p_out = out
c endIf
* ===============================================================
* == Sub Routines ==
* ===============================================================
c *inzsr begsr
c *entry plist
c parm p_outyear 4
c parm p_outmth 2
c parm p_out 2
c If %Parms = 3
c Eval Outyear = p_outyear
c Eval Outmth = p_outmth
c Eval Out = p_out
c end
c eval pdm(01) = 31
c eval pdm(02) = 28
c eval pdm(03) = 31
c eval pdm(04) = 30
c eval pdm(05) = 31
c eval pdm(06) = 30
c eval pdm(07) = 31
c eval pdm(08) = 31
c eval pdm(09) = 30
c eval pdm(10) = 31
c eval pdm(11) = 30
c eval pdm(12) = 31
c eval pdm(13) = 01
c if outyear = *blanks
c move *month mthnum 2 0
c move *year yearnum
c move *day daynum 2 0
* Get First Day of the month
c daynum sub 1 daynumw 2 0
c if daynumw <> 0
c startdate subdur daynumw:*d startdate
c endif
c else
c move out daynum
c move outmth mthnum
c move outyear yearnum
c eval yearnum = yearnum - 1
c eval mthnum = mthnum - 1
c adddur yearnum:*y blankdate
c adddur mthnum:*m blankdate
c eval startdate = blankdate
c eval yearnum = yearnum + 1
c eval mthnum = mthnum + 1
c endif
c eval curmnth = mthnum
c eval curyear = yearnum
c endsr
*-------------------------------------------------------------------
|
|
|
|
|
|