plato:source:plaopl:bcuse
Table of Contents
BCUSE
Table Of Contents
Source Code
- BCUSE.txt
- BCUSE
- * /--- FILE TYPE = E
- * /--- BLOCK BCUSE 00 000 80/06/27 12.07
- PROGRAM BCUSE(BBC,TAPE1=BBC,TAPE2,TAPE3,TAPE10)
- C PUBLISHED LESSON USAGE OUTPUT TO BE PF TO DATASET
- C FOR COURSEWARE SERVICES
- C
- C --- PROGRAM TO PREPARE DATA ABOUT THE USAGE TIME FOR
- C --- LESSONS IN PARTICULAR ACCOUNTS. THE RESULTS ARE
- C --- *PF*ED BACK INTO A DATASET.
- C
- C --- TAPE1 (BC) IS THE DATA (FROM RAFPBC AND ASM1) ABOUT
- C --- LESSON USAGE.
- C
- C --- TAPE2 IS THE LIST OF SELECTED LESSON ACCOUNTS ABOUT
- C --- WHICH DATA IS TO BE GATHERED. IT IS A BLOCK
- C --- IN THIS FILE CALLED *PARAMETERS* AND IS *PF*ED
- C --- OUT TO THE LOCAL FILE (TAPE2). IT IS ALSO USED
- C --- AS THE UNSORTED DATA ABOUT THE SPECIFIED ACCTS.
- C
- C --- TAPE3 IS THE TEMPORARY FILE, WHERE THE LESSONS FROM
- C --- THE SELECTED ACCOUNTS ARE STORED IN ALPHABETIC
- C --- ORDER, TO BE SORTED LATER BY DESCENDING ORDER
- C --- OF USAGE TIME.
- C
- C --- TAPE10 IS THE SORTED VERSION OF TAPE3.
- C
- DIMENSION LINE(8)
- C
- INTEGER ACCTS(500)
- C
- EXTERNAL ADD
- C
- DATA NACCTS/1/,KOUNT/0/,ACCTS/500*0/
- C
- C --- READ IN THE LIST OF ACCOUNTS (MAXIMUM OF 500)
- C
- REWIND 2
- C
- 1 CONTINUE
- READ (2,2) ACCTS(NACCTS)
- 2 FORMAT (A7)
- IF (EOF(2)) 4, 3
- 3 CONTINUE
- NACCTS = NACCTS + 1
- IF (NACCTS .EQ. 501) GO TO 4
- GO TO 1
- C
- C --- MAKE *NACCTS* RIGHT SIZE
- C
- 4 CONTINUE
- C
- NACCTS = NACCTS - 1
- C
- C --- PULL THE SELECTED ACCOUNTS FROM TAPE1 AND WRITE ON
- C --- TAPE2 (SINCE THE SPECIFIED ACCOUNTS HAVE BEEN READ).
- C
- REWIND 1
- REWIND 2
- C
- 10 CONTINUE
- READ (1,11) LINE
- 11 FORMAT (3A10,A4,A10,A7,2F10.3)
- IF (EOF(1)) 15, 12
- 12 CONTINUE
- DO 14 INDEX = 1, NACCTS
- IF (ACCTS(INDEX) .NE. LINE(6)) GO TO 14
- WRITE (2,13) LINE(5), LINE(7)
- 13 FORMAT (A10,F8.3)
- GO TO 10
- 14 CONTINUE
- GO TO 10
- C
- C --- NOW REWIND AND SORT TAPE2 BY LESSON NAME,
- C --- ADDING ALL RECORDS WITH DUPLICATE KEYS,
- C --- AND WRITE THE RESULTS ON TAPE3.
- C
- 15 CONTINUE
- REWIND 2
- REWIND 3
- C
- CALL SM5SORT(0)
- CALL SM5FROM("TAPE2")
- CALL SM5TO("TAPE3")
- CALL SM5KEY(1,10,"DISPLAY","A")
- CALL SM5OWN5(ADD)
- CALL SM5END
- C
- C --- NOW SORT TAPE3 BY THE SECOND FIELD, USAGE TIME,
- C --- IN ASCENDING ORDER AND PUT THE RESULTS ON TAPE10.
- C
- REWIND 3
- REWIND 10
- C
- CALL SM5SORT(0)
- CALL SM5FROM("TAPE3")
- CALL SM5TO("TAPE10")
- CALL SM5KEY(11,8,"COBOL6","D")
- CALL SM5END
- C
- STOP
- END
- * /--- BLOCK ADD 00 000 78/11/16 10.07
- SUBROUTINE ADD(IRC,L1,LR1,L2,LR2)
- C
- C --- SUBROUTINE TO ADD THE TIMES OF TWO RECORDS WITH THE
- C --- SAME SORTING KEYS. CALLING ROUTINE MUST HAVE AN
- C --- *EXTERNAL ADD* STATEMENT FOR THIS TO WORK.
- C
- DIMENSION L1(2), L2(2)
- C
- DECODE (18,10,L1) NAME, TIME1
- 10 FORMAT (A10,F8.3)
- DECODE (18,11,L2) TIME2
- 11 FORMAT (10X,F8.3)
- C
- TIME1 = TIME1 + TIME2
- C
- ENCODE (18,10,L1) NAME, TIME1
- C
- C SET FLAG TO REPLACE RECORD.
- C
- IRC = 1
- C
- RETURN
- END
plato/source/plaopl/bcuse.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator