{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathagenda_subs.inc
More file actions
3390 lines (3359 loc) · 133 KB
/
Copy pathagenda_subs.inc
File metadata and controls
3390 lines (3359 loc) · 133 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*---------------------------------------------------------------
.
. Module Name: agenda_subs.inc
. Description: Called Subroutines Module
.
. Revision History:
.
* File I/O Routines
. APPOINTMENT FILE
. Write Agenda Appointment Record By Key and Insert The Aim Key
AG1010
FILEPI 2;AGENDA
WRITE AGENDA,KEY17;KEY17,ENDHOUR,ENDMIN,STIME,ETIME:
TPOS,NBLOCKS,SECFLAG,TFLAG,DATA
INSERT AGENDAIM
RETURN
AG1090
FILEPI 1;AGENDA
DELETE AGENDA,KEY17
GOTO INTERR IF OVER This was a call prior to putting into this
. Called Routine. It has been changed to a
. GOTO to maintain the same stack level when
. entering INTERR
RETURN
. End of APPOINTMENT FILE I/O
. NOTE FILE
. Write Agenda Note Record By Key and Insert The Aim Key
AG2010
FILEPI 2;NOTEFILE
WRITE NOTEFILE,KEY20;KEY20,DATE,TIME,DATA
INSERT NOTEFILA
RETURN
. Delete Agenda Appointment Record By Key
AG2090
FILEPI 1;NOTEFILE
DELETE NOTEFILE,KEY20
GOTO INTERR IF OVER // This was a call prior to putting into this
. // Called Routine. It has been changed to a
. // GOTO to maintain the same stack level when
. // entering INTERR
RETURN
. End of NOTE File I/O
. SCRATCH FILE
. Open SCRATCH File
AG9000
COMPARE ONE,SWITCHI // IS SCRATCHI FILE OPEN ?
CALL AG9005 IF EQUAL // YES, CLOSE IT NOW
TRAP TRAPIO IF IO
PREP SCRATCHI,FSW,FSW,"6","26"
TRAPCLR IO
MOVE ONE,SWITCHI // FILE IS OPEN
RETURN
. Close and delete the SCRATCH File
AG9005
CLOSE SCRATCHI,DELETE
MOVE ZERO,SWITCHI // FILE IS CLOSED
RETURN
. End of SCRATCH File I/O
. End Of I/O Routines
BANNER
MOVE TEN TO MTOP
MOVE THIRTY1 TO MLEFT
MOVE EIGHTY TO MRIGHT
MOVE SIXTEEN TO MBOT
CALL SETSW01
CALL BANNER01
DISPLAY *HOFF,*HD,*EL;
RETURN
BANNER01
DISPLAY *P1:21,*HON,*EL,VISAGNI,VERSION;
RETURN
*
.Duplicate Keys - Bump the Seconds by One
.
DUPBUMP
RESET KEY18,17
MOVE KEY18,SECOND
ADD ONE,SECOND
BUMP KEY18,-1
APPEND SECOND,KEY18
RESET KEY18
RETURN
+..............................................................................
.
.Compute the Day of the Week from a Specified Date
.
. Enter with: JDAYWORK = Julian Date to Convert
. YEARWORK = Year to Convert
.
. Exits with: NWORK2 = Day of the Week (1=Sunday, 7=Saturday)
.
. Based on the Fact That 01/01/20 Was a Wednesday
.
FINDOW MOVE YEARWORK,NWORK2
SUB TWENTY,NWORK2
ADD JDAYWORK,NWORK2 Offset 1 Day per Year
ADD THREE,NWORK2 01/01/20 Was a Wednesday
*
.Allow 1 Day per Year for Each Leap Year Since 2020
.
MOVE YEARWORK,NWORK1
SUB "17",NWORK1
.
FINDOW1 SUB FOUR,NWORK1
GOTO FINDOW2 IF LESS
ADD ONE,NWORK2
GOTO FINDOW1
*
.Divide by Seven and Use the Remainder for the Dow
.
FINDOW2 SUB SEVEN,NWORK2
GOTO FINDOW3 IF ZERO
GOTO FINDOW2 IF NOT LESS
.
FINDOW3 ADD SEVEN,NWORK2
RETURN
*..............................................................................
. .
. Keyin a Y or N to Reply .
. You must enter from KREPLYN or KREPLYY .
. You will exit through KREPLYZZ With REPLY = Y or N .
. This routine will accept Cap's or Lower Case .
. This routine will check Shutdown, Messages, Meetings .
. and Alarms every 90 seconds. .
KREPLY
DISPLAY " ? ",REPLYH;
GOTO KREPLY20
KREPLY10
MOVE FLAG1 TO REPLY Save FLAG1
MOVE TWO TO FLAG1 Check
CALL CHKALRM0 Shutdown Only
MOVE REPLY TO FLAG1 Restore FLAG1
DISPLAY " ";
KREPLY20
MOVE REPLYH TO REPLY
KEYIN *HA -1,*DV,REPLYH,*HA -1,*T90,*RV,REPLY;
GOTO KREPLY10 IF LESS
AND 0137 TO REPLY
CMATCH YES TO REPLY
GOTO KREPLYZZ IF EQUAL
CMATCH NO TO REPLY
GOTO KREPLYZZ IF EQUAL
GOTO KREPLY20
KREPLYN
RESET REPLYH
CMOVE NO TO REPLYH
GOTO KREPLY
KREPLYY
RESET REPLYH
CMOVE YES TO REPLYH
GOTO KREPLY
KREPLYZZ
RETURN
. .
*..............................................................................
LOAD01
LOAD DIM9 BY MON FROM JAN,FEB,MAR,APR,MAY:
JUN,JUL,AUG,SEP,OCT,NOV,DEC
MOVE DIM9 TO MONTH
RETURN
LOAD02
LOAD NWORK1 BY MONWORK FROM THIRTY1,DAYFEB,THIRTY1:
THIRTY,THIRTY1,THIRTY,THIRTY1:
THIRTY1,THIRTY,THIRTY1,THIRTY,THIRTY1
RETURN
LOAD03
LOAD DIM40 BY NWORK2 FROM SUNDAY,MONDAY,TUESDAY:
WEDNESDY,THURSDAY,FRIDAY,SATURDY
RETURN
LOAD04
LOAD KEYWORK BY NWORK1 FROM KEYA,KEYB,KEYC,KEYD,KEYE:
KEYF
RETURN
LOAD05
LOAD KEY17 BY KEYPTR FROM KEYA,KEYB,KEYC,KEYD,KEYE,KEYF
RETURN
LOAD06
LOAD NWORK1 BY FREQ FROM ONE,SEVEN
RETURN
LOAD07
LOAD USERID BY KEYPTR FROM KEYA,KEYB,KEYC,KEYD,KEYE:
KEYF,KEYG,KEYH,KEYI,KEYJ *Five extra ID's
RETURN
PACK01
PACK TABLE USING BLANKS,BLANKS,BLANKS,BLANKS
REPLACE BN IN TABLE
RETURN
SETMAR01
MOVE SIX TO MTOP
MOVE TWELVE TO MBOT
MOVE FOUR TO MLEFT
MOVE TWENTY6 TO MRIGHT
CALL SETSW01
RETURN
SETSW01
DISPLAY *SETSWALL MTOP:MBOT:MLEFT:MRIGHT,*ES,*SETSWALL=1:24:1:80;
GOTO SETSW99
SETSW02
DISPLAY *SETSWALL MTOP:MBOT:MLEFT:MRIGHT,*ES;
GOTO SETSW99
SETSW03
DISPLAY *SETSWALL MTOP:MBOT:MLEFT:MRIGHT;
GOTO SETSW99
SETSW99
MOVE THREE TO MTOP
MOVE TWO TO MLEFT
MOVE SEVENTY9 TO MRIGHT
MOVE TWENTY1 TO MBOT
RETURN
SETTOP06
MOVE SIX TO MTOP
RETURN
SETTOP14
MOVE FOURTEEN TO MTOP
RETURN
SETTOP16
MOVE SIXTEEN TO MTOP
RETURN
*
. Draw a big box
.
SHOWBOX1 DISPLAY *ES,*P2:1,USRNAME: LINE 1
*H 59,DATE,SPACE2,TIME:
*N,ULC,*RPTCHAR HE:78,URC: LINE 2
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 3 + 4
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 5 + 6
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 7 + 8
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 9 + 10
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 11 + 12
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 13 + 14
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 15 + 16
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 17 + 18
*N,VB,*H 80,VE,*N,VB,*H 80,VE: LINE 19 + 20
*N,VB,*H 80,VE: LINE 21
*N,LLC,*RPTCHAR HB:HLPPOSNI,"-",HLPCMDNI,"-",LRC;
RETURN
SHOWBOXN
CALL SHOWBOX1
DISPLAY *P34:1,DSKNOTE,*P1:23,*H 73,PGSTAT,PAGE:
*HD;
RETURN
*
.Check the Alarm
.
. Enter with FLAG1 = 0 Check Shutdown, Alarm, Messages, Meetings
. 1 Don't Check Messages
. 2 Check for Shutdown Only
.
...............................................................................
. FLAG2 NO LONGER SET IN THIS ROUTINE AND IT IS NO LONGER
. CHECKED UPON EXITING THIS ROUTINE.
.
. Exits with FLAG2 = 0 Bottom Line Intact
. 1 Bottom Line Destroyed
.
...............................................................................
CHKALRM DISPLAY *H HPOS,*+,FUNCDESC;
MOVE ZERO TO FORM1
*
.Check for a System Shutdown Command
.
CHKALRM0
FILEPI 1;CONTROL
READTAB CONTROL,ZERO;REPLY
.
CMATCH SPACE,REPLY
GOTO START IF NOT EQUAL
*
.At Logon Screen ?
.
COMPARE TWO,FLAG1
RETURN IF EQUAL
*
.Disable During Inquiry
.
COMPARE ONE,INQSW
RETURN IF EQUAL
*
.Is the Alarm Set ?
.
DISPLAY *P1:23;
CALL CLOCKDT
COMPARE ZERO,AYEAR // Alarm Not Set
GOTO CHKMSG IF EQUAL // Go Check Messages
*
.Right Date/Time ?
.
PACK KEYWORK WITH AYEAR,ADAY,AHOUR,AMIN,ASEC
PACK KEY20 WITH YEARWORK,JDAYWORK,HOURWORK,MINWORK,SECOND
MATCH KEYWORK,KEY20
GOTO CHKALRM4 IF LESS // Not Time...
*
.Set the First Alarm Time as Needed
.
...............................................................................
COMPARE ONE,ALRMFLG // Skip alarm display if from alarm
GOTO CHKALRM4 IF EQUAL //
DISPLAY *C,*HON,*B,*BLINKON,ALRM,*HOFF;
ADD ONE TO FORM1
CHKALRM4 CALL FATIME
+..............................................................................
.
.See if the User Has Any New Messages
.
CHKMSG BRANCH FLAG1 TO CHKMEET // Skip Checking Messages
*
.Position to His New Messages
.
PACK KEY9 WITH X02,CURRUSER
.
FILEPI 1;USRFILE
READTAB USRFILE,KEY9;*82,FMTIME,*91,MEETFLG
CALL INTERR IF OVER
*
.Right Type/User/Year/Day/Hour/Min ?
.
PACK KEY WITH YEARWORK,JDAYWORK,HOURWORK,MINWORK
MATCH FMTIME,KEY
GOTO CHKMSG1 IF EQUAL
GOTO CHKMEET IF LESS
*
.He Has Some Messages
.
CHKMSG1
COMPARE ONE,ALRMFLG // Skip message display if from alarm
GOTO CHKMEET IF EQUAL //
DISPLAY *H 10,*HON,*B,*BLINKON,MSGALRM,*HOFF;
ADD ONE TO FORM1
.
.See if He Has Any New Meetings
.
CHKMEET COMPARE ZERO,MEETFLG
GOTO CHKZ0020 IF EQUAL
COMPARE ONE,ALRMFLG // Skip planning disp if from alarm
GOTO CHKZ0020 IF EQUAL //
TRAP RDJMP IF IO
OPEN PLAN1,FSP1,SHARE
PACK KEY6 FROM USRNO
FILEPI 1;PLAN1
READ PLAN1,KEY17B;;
GOTO CHKZ0099 IF OVER
RDJMP FILEPI 1;PLAN1
READKS PLAN1;USRNO1,YEARWORK,JDAYWORK,HOUR,MIN,COUNTER:
USRNO2,ENDHOUR,ENDMIN,DATE,STIME,ETIME,USRNAME1:
LOCATION,CONFIRM,DATA
IF OVER
PACK KEY9 WITH X02,CURRUSER
FILEPI 3;USRFILE
READTAB USRFILE,KEY9;REPLY;
CALL INTERR IF OVER
UPDATAB USRFILE;*91,ZERO
GOTO CHKZ0099
ENDIF
COMPARE USRNO1,USRNO
GOTO RDJMP IF NOT EQUAL
MATCH CONFIRM,CN
IF EQUAL
COMPARE YEARWORK,YEAR
GOTO RDJMP IF GREATER
COMPARE JDAYWORK,JULDAY
GOTO RDJMP IF GREATER
COMPARE HOUR,HOURWORK
GOTO RDJMP IF GREATER
DISPLAY *H 22,*HON,*B,*BLINKON,PLANALRM,*HOFF;
ELSE
GOTO RDJMP
ENDIF
ADD ONE TO FORM1
CHKZ0020
COMPARE ZERO TO FORM1
GOTO CHKZ0099 IF EQUAL
DISPLAY *W1,*B;
SUB ONE FROM FORM1
GOTO CHKZ0020
CHKZ0099
TRAPCLR IO
RETURN
*..............................................................................
.
.Routine to Set the First Message Time & Date
.
. Enter with: DIM6 = User Number
.
. Exits with: User Record Updated Correctly
.
FMTIME PACK KEY9 WITH X02,DIM6
.
FILEPI 1;USRFILE
READTAB USRFILE,KEY9;*82,DIM9
CALL INTERR IF OVER
*
.See if the User Has Any New Messages
.
PACK KEY WITH ONE,DIM6
.
. DISPLAY *P1:23,*EL,"KEY:",KEY,*W5;
FILEPI 2;MESSAGE
READ MESSAGE,KEY;;
READKSTB MESSAGE;DIM7,FMTIME
GOTO FMTIME1 IF OVER
*
.Right Record Type/User ?
.
MATCH KEY,DIM7
GOTO FMTIME1 IF NOT EQUAL
*
.Do We Need to Update the First Message Time ?
.
MATCH DIM9,FMTIME
RETURN IF EQUAL
GOTO FMTIME2
*
.No New Messages for This User
.
FMTIME1 MATCH "99",DIM9
RETURN IF EQUAL
MOVE NINE9,FMTIME
*
.Update the User's Record
.
FMTIME2 FILEPI 1;USRFILE
UPDATAB USRFILE;*82,FMTIME
RETURN
+..............................................................................
.
.Routine to Set the Alarm Time
.
. Enter with: CURRUSER = User Number
.
. Exits with: Alarm Time and Date Set Correctly
.
FATIME PACK KEY20 WITH ONE,CURRUSER
.
FILEPI 2;NOTEFILE
READ NOTEFILE,KEY20;;
READKS NOTEFILE;REPLY,USRNO1,AYEAR,ADAY,AHOUR,AMIN,ASEC:
COUNTER,ADATE,ATIME,ALARMSG
RETURN IF OVER
*
.Right Record Type/User ?
.
CMATCH "1",REPLY
GOTO FATIME1 IF NOT EQUAL
COMPARE CURRUSER,USRNO1
RETURN IF EQUAL
*
.Turn Off the Alarms
.
FATIME1 MOVE ZERO,AYEAR
RETURN
+..............................................................................
.
.Year Computation Routine
.
. Enter with: YEARWORK = Year Selected
.
. Exits with: DAYFEB = Number of Days in February
. YEARLEN = Number of Days in Year Selected
. PYEARLEN = Number of Days in Prior Year
.
*
.Determine the Number of Days in February and the Year's Length
.
YEARCOMP MOVE TWENTY8,DAYFEB
MOVE THREE65,YEARLEN
.
MOVE YEARWORK,NWORK1
DIV FOUR,NWORK1
MULT FOUR,NWORK1
COMPARE YEARWORK,NWORK1
GOTO YEARCMP1 IF NOT EQUAL
ADD ONE,DAYFEB
ADD ONE,YEARLEN
*
.Determine the Length of the Previous Year
.
YEARCMP1 MOVE THREE65,PYEARLEN
.
MOVE YEARWORK,NWORK1
SUB ONE,NWORK1
.
MOVE NWORK1,NWORK2
DIV FOUR,NWORK2
MULT FOUR,NWORK2
COMPARE NWORK1,NWORK2
RETURN IF NOT EQUAL
.
ADD ONE,PYEARLEN
RETURN
+.............................................................................
.
.Draw the Calendar
.
. Enter with: MON = Month Selected
. YEAR = Year Selected
. DAY = Day Selected
. USRNO = User Number
. TERMTYPE = 0 - Advanced Video Features Available
. 1 - Advanced Video Features Unavailable
.
. Exits with: Calendar on the Screen
. Selected Day Highlighted
. ENDDAY = Number of Days in Month
. HPOSEND/VPOSEND = Screen Position of the Last Day in the Month
. MONTABLE = Set Up
.
*
.Find the Starting Day of the Week
.
DRAWCAL MOVE ONE,DAYWORK
MOVE MON,MONWORK
MOVE YEAR,YEARWORK
CALL GREGJUL
CALL FINDOW
MOVE NWORK2,FSTDAY // Capture the column pos. of 1st of month
COMPARE ONE,DATESWCH
IF EQUAL
COMPARE FSTDAY,ONE
IF EQUAL
MOVE SEVEN,FSTDAY
MOVE SEVEN,NWORK2
ELSE 039
SUB ONE,FSTDAY
SUB ONE,NWORK2
ENDIF 039
ENDIF 039
*
.Determine the Number of Days in the Month
.
LOAD ENDDAY BY MON FROM THIRTY1,DAYFEB,THIRTY1,THIRTY:
THIRTY1,THIRTY,THIRTY1,THIRTY1:
THIRTY,THIRTY1,THIRTY,THIRTY1
*
.Make Sure the Day is Not Beyond the End of the Month
.
COMPARE ENDDAY,DAY
GOTO DRAWCAL1 IF LESS
MOVE ENDDAY,DAY
*
.Compute the Screen Position of the 1st Day of the Month
.
DRAWCAL1 SUB ONE,NWORK2
MULT THREE,NWORK2
ADD FOUR,NWORK2
.
MOVE NWORK2,HPOSEND
MOVE SEVEN,VPOSEND
*
.Reset the Month Table
.
PACK MONTABLE WITH BLANKS,BLANKS
REP " N",MONTABLE
*
.Position the Graph File to This User
.
COMPARE ZERO,F1HIT // Was F1 hit ?
GOTO DRAWCA1A IF EQUAL // No, no special display
BRANCH TERMTYPE TO DRAWCAL7
GOTO DRAWCA1B
DRAWCA1A BRANCH TERMTYPE TO DRAWCAL7
DRAWCA1B SUB ONE,JDAYWORK
PACK DIM11 WITH USRNO,YEARWORK,JDAYWORK
ADD ONE,JDAYWORK
FILEPI 1;GRAPH
READ GRAPH,DIM11;;
*
.Read the Next Graph Record
.
DRAWCAL6 MOVE ZERO,FLAG2
FILEPI 1;GRAPH
READKS GRAPH;USRNO1,YEARWRK1,JDAYWRK1
GOTO DRAWCAL7 IF OVER
COMPARE USRNO,USRNO1
GOTO DRAWCAL2 IF EQUAL
*
.No More Appointments for This User
.
DRAWCAL7 MOVE NINTY9,YEARWRK1
*
.Draw the Calendar
.
DRAWCAL2 COMPARE DAYWORK,DAY
GOTO DRAWCAL8 IF NOT EQUAL
.
MOVE HPOSEND,HPOSDAY
MOVE VPOSEND,VPOSDAY
DISPLAY *HON;
MOVE ONE,FLAG3
*
.Appointment on This Day ?
.
DRAWCAL8 COMPARE ZERO,F1HIT // Was F1 hit ?
GOTO DRAWCA8A IF EQUAL // No, no special display
BRANCH TERMTYPE TO DRAWCAL3
GOTO DRAWCA8B
DRAWCA8A BRANCH TERMTYPE TO DRAWCAL3
DRAWCA8B COMPARE YEARWORK,YEARWRK1
GOTO DRAWCAL3 IF NOT EQUAL
COMPARE JDAYWORK,JDAYWRK1
GOTO DRAWCAL3 IF NOT EQUAL
*
.Highlight This Date, Flag the Month Table
.
RESET MONTABLE,DAYWORK
CMOVE CY,MONTABLE
MOVE ONE,FLAG2
BRANCH FLAG3 TO DRAWCAL3
DISPLAY *V2LON;
.
DRAWCAL3 DISPLAY *PHPOSEND:VPOSEND,DAYWORK,*HOFF;
COMPARE DAYWORK,ENDDAY
RETURN IF EQUAL
.
MOVE ZERO,FLAG3
ADD ONE,JDAYWORK
ADD ONE,DAYWORK
ADD THREE,HPOSEND
COMPARE TWENTY5,HPOSEND
GOTO DRAWCAL5 IF NOT EQUAL
.
ADD ONE,VPOSEND
MOVE FOUR,HPOSEND
*
.If We Turned on the Date, Get the Next Graph Day
.
DRAWCAL5 COMPARE ZERO,F1HIT // Was F1 hit ?
GOTO DRAWCA5A IF EQUAL // No, no special display
BRANCH TERMTYPE TO DRAWCAL2
GOTO DRAWCA5B
DRAWCA5A BRANCH TERMTYPE TO DRAWCAL2
DRAWCA5B BRANCH FLAG2 TO DRAWCAL6
GOTO DRAWCAL2
+..............................................................................
.
.Compute the Dates Needed to Graph the Week
.
. Enter with: JULDAY = Julian Date Selected
. YEAR = Year Selected
. YEARLEN = Length of Year Selected (Days)
. GRAPHSW = 1 - Force Graph to be Redrawn
. 0 - Don't Redraw if Already On the Screen
.
. Exits with: YEARSTR = Week's Starting Year
. YEAREND = Week's Ending Year
. DAY 1 - DAY 7 = Julian Dates
. GRAPHSW = 0
.
. Note: If this is the first week of the month, we'll graph any of the
. previous month's days which fall within this week. The same holds
. true for the end of the month, and also for the year.
*
.See if the Week is Already on the Screen
.
GRAPH COMPARE ONE,DATESWCH
IF EQUAL
SUB ONE,JULDAY
ENDIF 039
BRANCH GRAPHSW TO GRAPH1
SEARCH JULDAY FROM DAY1 TO SEVEN INTO INDEX
.
IF NOT OVER
COMPARE ONE,DATESWCH
IF EQUAL
ADD ONE,JULDAY
ENDIF 039
RETURN 039
ENDIF 039
*
.Determine the Selected Day of the Week
.
GRAPH1
CALL SETTOP06
MOVE TWENTY9 TO MLEFT
MOVE TWELVE TO MBOT
CALL SETSW01
MOVE ZERO,GRAPHSW
.
MOVE JULDAY,JDAYWORK
MOVE YEAR,YEARWORK
CALL FINDOW
*
.Determine the Week's Starting Date
.
MOVE YEAR,YEARSTR
MOVE JULDAY,NWORK1
SUB NWORK2,NWORK1
ADD ONE,NWORK1
*
.Is This the First Week in the Year ?
.
MOVE ZERO,SWITCH
COMPARE ONE,NWORK1
GOTO GRAPH2 IF NOT LESS
*
.This Week Begins in the Previous Year
.
MOVE ONE,SWITCH
ADD PYEARLEN,NWORK1
SUB ONE,YEARSTR
*
.At This Point, NWORK1 = Week's Starting Date
.
.Set up the Date Table
.
GRAPH2 MOVE ONE,INDEX
MOVE YEARSTR,YEAREND
.
GRAPH3 STORE NWORK1 BY INDEX INTO DAY1,DAY2,DAY3:
DAY4,DAY5,DAY6,DAY7
.
ADD ONE,INDEX
COMPARE EIGHT,INDEX
GOTO GRAPH5 IF EQUAL
ADD ONE,NWORK1
*
.Check for Correct Year Overflow
.
BRANCH SWITCH TO GRAPH4
*
.Check for This Year's Length
.
COMPARE NWORK1,YEARLEN
GOTO GRAPH3 IF NOT LESS
MOVE ONE,NWORK1
ADD ONE,YEAREND
GOTO GRAPH3
*
.Check for the Prior Year's Length
.
GRAPH4 COMPARE NWORK1,PYEARLEN
GOTO GRAPH3 IF NOT LESS
MOVE ONE,NWORK1
ADD ONE,YEAREND
GOTO GRAPH3
*..............................................................................
.
.Graphically Display the Week's Appointments
.
. Enter with: USRNO = User Number
. YEARSTR = Week Starting Year
. DAY1 = Week Starting Julian Day
. YEAREND = Week Ending Year
. DAY7 = Week Ending Julian Day
. GRAPHPOS = 1 Begin Graphing at Midnight
. 2 Begin Graphing at Seven AM
. 3 Begin Graphing at Noon
.
. Exits with: Week Graphed on the Screen
.
.Display the Time Rule
.
GRAPH5 LOAD DATA BY GRAPHPOS FROM RULE1,RULE2,RULE3
DISPLAY *P29:5,*+,DATA;
*
.Position the Appointment Graph File
.
MOVE DAY1,JDAYWORK
SUB ONE,JDAYWORK
PACK DIM11 WITH USRNO,YEARSTR,JDAYWORK
.
FILEPI 1;GRAPH
READ GRAPH,DIM11;;
*
.Build a Key to Match With
.
PACK KEYWORK WITH USRNO,YEAREND,DAY7
*
.Read Through the Appointment Graph File
.
GRAPH6 FILEPI 1;GRAPH
READKS GRAPH;DIM11,COUNT,TABLE
IF OVER
COMPARE ONE,DATESWCH
IF EQUAL
ADD ONE,JULDAY
ENDIF
UNPACK DIM11 TO USRNO1,YEARWORK,JDAYWORK
RETURN
ENDIF
UNPACK DIM11 TO USRNO1,YEARWORK,JDAYWORK
*
.Right User/Year/Week ?
.
COMPARE ONE,DATESWCH
IF EQUAL
SUB ONE,JDAYWORK
ENDIF 039
PACK KEY WITH USRNO1,YEARWORK,JDAYWORK
MATCH KEY,KEYWORK
IF LESS
COMPARE ONE,DATESWCH
IF EQUAL
ADD ONE,JULDAY
ENDIF
RETURN
ENDIF
*
.Display the Day's Appointments
.
BRANCH DATESWCH OF GRAPH6A
CALL DISPDAY
GOTO GRAPH6
.
GRAPH6A ADD ONE,JDAYWORK
CALL DISPDAY
SUB ONE,JDAYWORK
GOTO GRAPH6
+..............................................................................
.
.Display the Appointments for the Selected Day
.
. Enter with: USRNO = User Number
. JULDAY = Julian Day Selected
. YEAR = Year Selected
.
. Exits with: Up to Six Appointments on the Screen
. Graph File Positioned to the Selected Day
.
*
.Format the Date and Day
.
SHOWDTL1 MOVE JULDAY,JDAYWORK
MOVE YEAR,YEARWORK
CALL FINDOW // NWORK2 := DAY OF WEEK
COMPARE ONE,DATESWCH
IF EQUAL
COMPARE ONE,NWORK2
IF EQUAL
MOVE SEVEN,NWORK2
ELSE
SUB ONE,NWORK2
ENDIF
LOAD DIM40 BY NWORK2 FROM MONDAY,TUESDAY,WEDNESDY:
THURSDAY,FRIDAY,SATURDY,SUNDAY
ELSE
CALL LOAD03
ENDIF
MOVE DIM40 TO KEY
.
CALL LOAD01
*
.Remove the Leading Space in Single Digit Dates
.
MOVE DAY,DIM2
CMATCH SPACE,DIM2
GOTO SHOWDTL2 IF NOT EQUAL
BUMP DIM2
*
.Build the Line
.
SHOWDTL2
PACK DIM30 USING KEY,COMMA,SPACE,DIM9,SPACE,DIM2,COMMA,SPACE:
YEARPREFIX,YEAR
.
LOAD HPOS BY MON FROM ONE,ZERO,TWO,TWO,THREE,TWO:
TWO,ONE,ZERO,ONE,ZERO,ZERO
ADD THIRTY2,HPOS
*
.Highlight the Day of the Week on the Graph
.
MOVE KEY,REPLY
MOVE FIVE,VPOS
ADD NWORK2,VPOS
*
.Fix Up the Screen
.
CALL SETTOP16
CALL SETSW02
BRANCH DATESWCH OF SD2A
DISPLAY *SETSWTB 1:24,*P31:14,*EL,*SETSWALL=1:24:1:80:
*P28:6,CSUN,*P28:7,CMON,*P28:8,CTUE,*P28:9,CWED:
*P28:10,CTH,*P28:11,CFRI,*P28:12,CSAT:
*P28:VPOS,*HON,REPLY,*HOFF:
*PHPOS:14,AGTITLE,*+,DIM30,*V 16;
GOTO SD2B
SD2A DISPLAY *SETSWTB 1:24,*P31:14,*EL,*SETSWALL=1:24:1:80:
*P28:6,CMON,*P28:7,CTUE,*P28:8,CWED,*P28:9,CTH:
*P28:10,CFRI,*P28:11,CSAT,*P28:12,CSUN:
*P28:VPOS,*HON,REPLY,*HOFF:
*PHPOS:14,AGTITLE,*+,DIM30,*V 16;
SD2B
*
.Position the File
.
PACK KEYWORK WITH USRNO,YEAR,JULDAY
.
FILEPI 1;AGENDA
READ AGENDA,KEYWORK;;
*
.Set Up for the Appointments
.
MOVE ZERO,DTLCOUNT
MOVE ZERO,NOMORE
MOVE ONE,NOPREV
*
.Read Through the Appointment File
.
SHOWDTL3 FILEPI 1;AGENDA
READKS AGENDA;USRNO1,YEARWORK,JDAYWORK,HOUR,MIN:
COUNTER,ENDHOUR,ENDMIN,STIME,ETIME,TPOS,NBLOCKS:
SECFLAG,TFLAG,DATA
GOTO SHOWDTL5 IF OVER
*
.Right User/Year/Day ?
.
PACK KEY WITH USRNO1,YEARWORK,JDAYWORK,HOUR,MIN,COUNTER
MATCH KEY,KEYWORK
GOTO SHOWDTL5 IF NOT EQUAL
*
.Save the Appointment Key
.
COMPARE SIX,DTLCOUNT
GOTO SHOWDTL5 IF EQUAL // Screen is Full
.
ADD ONE,DTLCOUNT
STORE KEY BY DTLCOUNT INTO KEYA,KEYB,KEYC:
KEYD,KEYE,KEYF
*
.Don't Display Confidential Information if Inquiring
.
COMPARE ZERO,INQSW // Inquiring ?
GOTO SHOWDTL4 IF EQUAL // No....
CMATCH SPACE,SECFLAG // Confidential ?
GOTO SHOWDTL4 IF EQUAL // No
MOVE CONMSG,DATA
*
.Display the Appointment
.
SHOWDTL4 DISPLAY *H 3,STIME,*H 13,*+,ETIME,*H 23,SECFLAG,DATA
GOTO SHOWDTL3
*
.Read the Day Table and Return
.
SHOWDTL5
IF NOT OVER
MATCH KEY,KEYWORK
IF EQUAL
COMPARE SIX,DTLCOUNT
IF EQUAL
DISPLAY *P=23:22,*LTK,MOREPR,*DNA,SPACE,*RTK;
ELSE
DISPLAY *P=23:22,*RPTCHAR=HB:10;
DISPLAY *P=23:15,*RPTCHAR=HB:10;
ENDIF
ELSE
DISPLAY *P=23:22,*RPTCHAR=HB:10;
DISPLAY *P=23:15,*RPTCHAR=HB:10;
ENDIF
ELSE
DISPLAY *P=23:22,*RPTCHAR=HB:10;
DISPLAY *P=23:15,*RPTCHAR=HB:10;
ENDIF
PACK DIM11 WITH USRNO,YEAR,JULDAY
FILEPI 1;GRAPH
READTAB GRAPH,DIM11;*12,COUNT,TABLE
RETURN IF NOT OVER
*
.No Appointments for the Selected Day; Build an Empty Table
.
MOVE ZERO,COUNT
CALL PACK01
RETURN
+..............................................................................
.
.Compute Appointment Information
.
. Enter with: HOUR = Appointment Starting Hour
. MIN = Appointment Starting Minute
. ENDHOUR = Appointment Ending Hour
. ENDMIN = Appointment Ending Minute
.
. Exits with: NBLOCKS = Number of 15 Minute Blocks to Update
.
. Note: Starting Time is Rounded Down to the Even Quarter Hour; Ending
. Time is Rounded Up.
. Note II: The above Note was changed for Ver 2.7.A, See ROUNDTIME.
.
.Compute the Number of 15 Minute Blocks to Update
.
COMPUTE MOVE ENDHOUR,NWORK2
COMPARE ZERO,NWORK2 // End at Midnight ?
GOTO COMPUTE1 IF NOT EQUAL // No...
COMPARE ZERO,HOUR // Start at Midnight ?
GOTO COMPUTE1 IF EQUAL // Yes...
.
MOVE TWENTY4,NWORK2
GOTO COMPUTE3
*
.Compute the Number of Minutes
.
COMPUTE1 MOVE MIN,NWORK3 // Round the Starting Time Down
You can’t perform that action at this time.
