! size for viewpdf : 85 ! For year 89 ! Program to draw a Year planner for CS dept holidays. ! J Gordon Hughes (April 1980) for Heather Carlin. ! ! The chart has to last 36 weeks & have 67 staff members on it. ! each staff member (vertical axis) has 36 big boxes, subdivided into ! 5 smaller boxes. ! The program is written for the EDWIN graphics package, and is designed to ! be used on the departmental HP 7580. ! Updated Feb 83 for the Deparmental HP 7585 plotter %CONST %INTEGER NUM WEEKS = 53 %CONST %INTEGER NUM STAFF = 30 ! Monday dates %CONST %INTEGER %ARRAY DATES (1:NUM WEEKS) = 26,2,9,16,23,30,6,13,20,27,6,13,20,27,3,10,17,24,1,8,15,22,29,5,12,19,26, 3,10,17,24,31,7,14,21,28,4,11,18,25,2,9,16,23,30,6,13,20,27,4,11,18,25 !28,4,11,18,25,1,8,15,22,29,7,14,21,28,4,11,18,25,2,9,16,23,30,6,13,20,27,4,11,18,25,1,8,15, !22,29,5,12,19,26,3,10,17,24,31,7,14,21,28,5,12,19,26 ! Number of Mondays in each month %CONST %STRING (3) %ARRAY MONTHS(1:NUM WEEKS) = "DEC", "JAN" (5), "FEB" (4), "MAR" (4), "APR" (4), "MAY" (5), "JUN" (4), "JUL" (5), "AUG" (4), "SEP" (4), "OCT" (5), "NOV" (4), "DEC" (4) %CONST %STRING (5) %ARRAY YEARS (1:NUM WEEKS) = "1988","1989"(*) %include "edwina:specs.inc" %BEGIN %INTEGER I %ROUTINE OUTPUT NUM (%INTEGER NUM) ! This routine outputs a 2 digit number (as a string). %STRING (3) ST %IF NUM>=10 %THEN ST = TO STRING (NUM//10 + '0') %ELSE ST = " " ST = ST . TO STRING (NUM - (NUM//10)*10 + '0') TEXT (ST) %END INITIALISE FOR (default device) open output(1, "newyear.pdf") store on(1) !? comment out?! ! viewport (0, 75*400, 0, 55*400) WINDOW (0, 50 * NUM WEEKS + 100, 0, 40 * NUM STAFF + 80) NEW FRAME set colour (1) ! Do the outer box first MOVE ABS (0 , 40 * NUM STAFF + 80) LINE ABS (0 , 0) LINE ABS (50 * NUM WEEKS + 100, 0) LINE ABS (50 * NUM WEEKS + 100, 40 * NUM STAFF + 80) LINE ABS (0, 40 * NUM STAFF + 80) ! Now the annotation at the top. set colour (1) MOVE ABS (24, 40*NUM STAFF+80-30) TEXT ("Week") %for I = 1,1,NUM WEEKS %cycle MOVE ABS (112 + (I-1) * 50, 40*NUM STAFF+80-30) OUTPUT NUM (DATES(I)) %REPEAT MOVE ABS (2, 40*NUM STAFF+80-50) TEXT ("starting") %for I= 1,1,NUM WEEKS %cycle MOVE ABS (108 + (I-1) * 50, 40*NUM STAFF+80-50) TEXT (MONTHS(I)) %REPEAT %for I=1,1,NUM WEEKS %cycle MOVE ABS (102 + (I-1) * 50, 40*NUM STAFF+80-70) TEXT (YEARS(I)) %REPEAT set colour (1) ! Now do the horisontal lines. MOVE ABS (0, 40*NUM STAFF) %for I = 1,1,NUM STAFF//2 %cycle LINE REL (100 + NUM WEEKS * 50 , 0) MOVE REL (0, -40) LINE REL (- (100 + NUM WEEKS * 50) , 0) MOVE REL (0, -40) %REPEAT ! We are in the area of the bottom left corner. ! So now do all the vertical lines MOVE ABS (100,0) %for I = 1,1,NUM WEEKS %cycle MOVE REL (-1,0) LINE REL (0, 80 + NUM STAFF * 40) MOVE REL (2,0) LINE REL (0, -(80 + NUM STAFF * 40)) MOVE REL (9,0) LINE REL (0, NUM STAFF * 40) MOVE REL (10,0) LINE REL (0, - NUM STAFF * 40) MOVE REL (10,0) LINE REL (0, NUM STAFF * 40) MOVE REL (10, 0) LINE REL (0, - NUM STAFF * 40) MOVE REL (10,0) %REPEAT TERMINATE EDWIN %END %OF %PROGRAM