DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦2b3149fd7⟧ Wang Wps File

    Length: 18724 (0x4924)
    Types: Wang Wps File
    Notes: FIX/1200/PSP/0054         
    Names: »3401A «

Derivation

└─⟦3b8d69e90⟧ Bits:30005794 8" Wang WCS Floppy ( A0306A )
    └─ ⟦this⟧ »3401A « 

WangText



…1c…                        …1b……08……1b……0a……1b……0b……1b……86…1
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        …02…
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        …02…
                        
                        
                        
                        …02…
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        

3401A…02…FIX/1200/PSP/0054

…02…
 OK/830407…02……02…#
JOURNAL
 PROCEDURE
 PSP
…02……02…FK
 7809













                 JOURNAL PROCEDURE PSP



                 FIX/1200/PSP/0054














                 Ove Kaastrup




                 Carl H]gstedt







                 AMC    (6)
                 CR     (3)
                 FILE   (2)














                          FIKS Manager    830407


         1    



         830407




…0f…3401A…02… FIX/1200/PSP/0054

 …02… OK/830407…02……02…R
JOURNAL PROCEDURE PSP
…02……02…      …0e…












       830407                  All      Issue 1 of Document




3401A…02… FIX/1200/PSP/0054

…02… OK/830407…02……02…i
JOURNAL PROCEDURE PSP 
…02……02…      





                                      …01…T̲A̲B̲L̲E̲ ̲O̲F̲ ̲C̲O̲N̲T̲E̲N̲T̲S̲

    1 SCOPE .........................................    1
      1.1 Introduction ..............................    1
      1.2 Abbreviations .............................    2

    2 APPLICABLE DOCUMENTS ..........................    3

    3 MODULE SPECIFICATION ..........................    4
      3.1 Functional Capabilities ...................    4
      3.2 Interface Description .....................   12
      3.3 Processing ................................   13
        3.3.1 JOURNAL, Main Program .................   15
        3.3.2 GET ̲POINTERS ..........................   21
        3.3.3 READ ̲SECTOR ...........................   25
        3.3.4 FIND ̲LAST ̲REC .........................   27
        3.3.5 UPDATE ̲FILE ...........................   29
        3.3.6 UPDATE ̲CTR ̲BLOCK ......................   32
      3.4 Data Organization .........................   33
      3.5 Storage Allocation ........................   36
      3.6 Performance Characteristics ...............   36
      3.7 Limitations ...............................   36
      3.8 Error Codes/Error Locations ...............   37
      3.9 Listing References ........................   37

    4 QUALITY ASSURANCE .............................   38
      4.1 Qualification Tests .......................   38
      4.2 Other Quality Assurance Provisions ........   38

    5 PREPARATIONS FOR DELIVERY .....................   39


1        S̲C̲O̲P̲E̲

         This document contains a detailed product specification of the process journal.


1.1      I̲n̲t̲r̲o̲d̲u̲c̲t̲i̲o̲n̲

         The JOURNAL Process is a backgound, process, which maintains a disk resident journal file,
         describing the narrative message flow in the MEDE.

         Typical events entered in the journal file are:

         .   a message is released
         .   a message is delivered to a terminal queue
         .   a message printout is started
         .   a message retrieval is initiated
             etc.

         (A complete list of events which are logged, is found in ref. I).

         A printout of the journal file is obtained by entering the command PMJ on a supervisory terminal.

         The printout contains a list of events which are logged in the time span between last printout
         request and the current printout request.


1.2      A̲b̲b̲r̲e̲v̲i̲a̲t̲i̲o̲n̲s̲

         Ref. DATA I/F chapt. 1.2 (ref.II).


2        A̲P̲P̲L̲I̲C̲A̲B̲L̲E̲ ̲D̲O̲C̲U̲M̲E̲N̲T̲S̲

         I   FIX/1256/PSP/0057       LOG ̲JOUR MONITOR PSP
         II  FIX/0100/MAN/0004       FIKS DATA I/F REF.
         III FIX/1200/PSP/0042       FIKS FILE GENERATORS PSP


3        M̲O̲D̲U̲L̲E̲ ̲S̲P̲E̲C̲I̲F̲I̲C̲A̲T̲I̲O̲N̲


3.1      F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲C̲a̲p̲a̲b̲i̲l̲i̲t̲i̲e̲s̲

         Fig. 3.1 shows in a block diagram the interface between JOURNAL and other subsystems.

         Major events are: (the numbers refer to fig. 3.1)

         A:  Loggings:
             A subsystem has reached a state where a logging is to be made (i.e. a message is released).
             The log information is collected in a work area and the monitor LOG ̲JOUR is called (1).

             LOG ̲JOUR generates of pseudo MTCB and copies data from the applications work area into
             the MTCB.

             The MTCB is enqueued to the JOURNAL process (2).

             The MTCB is read by JOURNAL and its contents are copied to a local buffer.  If the buffer
             is full (8 entries made) it is copied to the disk resident MJF file (3).

         3:  Pintout requests:

             A supervisor has entered the command PMJ, which causes the terminal process to enqueue
             a pseudo MTCB containing the log request into JOURNAL's  input queue (4).


             If previous loggings have not yet been copied to disk, the buffer is copied to the MJF
             file (3). The number of records to be printed is calculated and transferred to the PIP
             subsystem (5).

             PIP accesses the MJF file, formats the data and prints it on the ROP (6) connected to
             the requesters VDU.

         C: Timeout:

             When an entry in the JOURNAL queue has been processed the process enters a wait state
             of 10 seconds.

             If no entries are made in the input queue during this period, the incore buffer is automatically
             inspected and, if not empty, it is copied to MJF file.

































                                            FIG. 3.1
                                       JOURNAL Interface
                                         BLOCK DIAGRAM


         M̲J̲F̲ ̲F̲I̲L̲E̲ ̲L̲A̲Y̲O̲U̲T̲

         Each log on the MJF is a record of 8 words:

             word 1  :               TYPE
             word 2-3:               DTG
             word 4-6:               Message id
             word 7  :               Terminal no.
             word 8  :               Spare

         The 2 first records on the file is a header of 8 words and a control block of 8 words:

            word 1   : FIRST ̲REC     (oldest record no. on file)
            word 2-3 : DTG ̲FIRST ̲REC (DTG of oldest entry on the file)
            word 4   : F ̲WRAP ̲AROUND (flag indicating that the end of the file is reached and that
                                     logging is continued at the start of the file).

            word 5   : F ̲EMPTY ̲FILE  (Indicates that no entries are made on file, i.e. a printout
                                     have been made or the file has not been accessed since creation)

            word 6   : F ̲ESP ̲WARNING (Indicates that a warning that the file is getting full has already
                                     been issued to ESP)


         The control block is at system startup copied to an incore control block.  Each time an event
         causes a change in one or more of the parameters or flags, the control block is copied to
         disk.

         The layout of the syclic MJF file is shown in fig. 3.2.

         Offline initialization (presetting) of the MJF file is done by activating the generator MFJ
         ̲INIT.C (For details please refer to FILE GENERATORS PSP, chapt. 3.2.12, (ref. III).
































                                            FIG. 3.2
                                        MJF FILE Layout


         C̲O̲N̲S̲I̲S̲T̲E̲N̲C̲E̲ ̲I̲N̲ ̲D̲A̲T̲A̲

         A requirement to the journal log is, that none of the reported events must be lost.

         As a disk access for each event log would cause a heavy load on the file system in a busy
         hour situation, the log records are temporary stored in an incore buffer.

         The buffer is copied to disk if one of the following events occurs:

            .    The buffer is full (8 records)
            .    A journal printout is requested
            .    10 seconds have elapsed since the arrival of last log.

         The 10 seconds timeout ensures that, in case of a fatal error in another process, the buffer
         will be copied to disk before the system is closed down. (The time span between the detection
         of a fatal error and the removal of processes is 10 sec.).

         R̲E̲C̲O̲V̲E̲R̲Y̲

         At system initialization time the recovery part of the JOURNAL process is activated.

         The control block is read from disk, and the pointers to oldest record and the DTG of oldest
         record is extracted.  The unknown parameters are now: last stored record no. and DTG of last
         stored record.



         A binary search is started in order to find 2 neighbour records, where the DTG of the first
         record is newer than the DTG of the following record.  The last stored record no. is then
         defined as the record no. of the 1 of the 2 records.


3.2      I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         Interface data :  MTCB layout: see ref.II chapt. 7.1.2.3
         Input-queue    :  LJP-queue
         Output-queue   :  LP-queues of terminals

         I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲t̲o̲ ̲o̲t̲h̲e̲r̲ ̲s̲u̲b̲s̲y̲s̲t̲e̲m̲s̲:̲

         TEP, MDS, SRR, PIP, SFS:    Via JOG ̲JOUR monitor procedure (LOG-requests)

         SFS                    :    Log printout request: a Pseudo MTCB is inserted in the LJP-queue.

         PIP                    :    JOURNAL inserts a Pseudo MTCB in a supervisors LP ̲queue at printout
                                     requests

         F̲i̲l̲e̲ ̲A̲c̲c̲e̲s̲s̲

         MJF                    :Via IO-system (Read, Write).


3.3      P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         Fig. 3.3 shows a block diagram of the JOURNAL process.

         The procedures GET ̲POINTERS, READ ̲SECTOR and FIND ̲LAST ̲REC are only used at system initialization
         time.

































                                            FIG. 3.3
                                     JOURNAL Block diagram


3.3.1    J̲O̲U̲R̲N̲A̲L̲,̲ ̲M̲a̲i̲n̲ ̲P̲r̲o̲g̲r̲a̲m̲

         Fig. 3.3.1 shows a flow chart of the main program.

         Main events are:

            Files are opened and the MTCB monitor initiated (1).

            The LJP ̲queue is inspected (2).

            If it is empty, the procedure is suspended by 10 seconds or until it is awaked by an arriving
            queue element (3-6).  If no queue elements are inserted within the 10 secs., the incore
            record buffer is copied to file (7).

            When a queue element is read, the pseudo MTCB is inspected and the category is found (8-10).

            Category = log request:

                 If the incore record buffer is full, it is copied to disk (12.1 - l2.4).

                 The log record is copied into buffer (12.5).

            Category = printout request:

                 The incore buffer is copied to file (11.1) and the number of records to be printed
                 is calculated (11.5 - 11.7)-



                 The updated MTCB is enqueued to the requesting supervisors LP ̲queue (11.8).

                 Pointers to the MJF file is updated (11.10 - 11.5) (ref. FIG. 3.2) and copied to
                 the control block of MJF (11.6).

            The MTCB is released (13) and the queue is scanned again (2).
































                                           FIG. 3.3.1
                                       JOURNAL Processing
                                            (1 of 4)

































                                           FIG. 3.3.1
                                       JOURNAL Processing
                                            (2 of 4)
































                                           FIG. 3.3.1
                                       JOURNAL Processing
                                            (3 of 4)
































                                           FIG. 3.3.1
                                       JOURNAL Processing
                                            (4 of 4)


3.3.2    GET ̲POINTERS
…0e……0e…          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f……0f…

         Fig 3.3.2 shows the flow chart of GET ̲POINTERS.

         GET ̲POINTERS is an initialization/recovery procedure and is only called once in the lifetime
         of the JOURNAL process.

         The function of the procedure is to establish the pointers to the MJF file: FIRST ̲REC, LAST
         ̲REC, DTG ̲FIRST ̲REC, DTG ̲LAST.

         Main Events:

            The control block is copied from MJF to incore buffer (1).

            If the 'empty file' flag is false, a binary search of the last stored record is initiated
            (2,3):

                 The range of records within which the last stored record must be found is calculated
                 (3.1-3.5, see also fig. 3.2)

                 The record in the middle of the range is calculated (3.6) and a sector starting with
                 this record is copied to an incore buffer.



                 The DTG's of the first and last record in the buffer is inspected and if DTG first
                   DTG of oldest record   DTG last, the procedure GET ̲LAST ̲REC is called (3.10). 
                 Otherwise new parameters for the possible record range is set up and the sequence
                 is repeated (3.8, 3.9, 3.6).

            The variable 'no. of records stored' and LAST ̲REC are updated (5-7) and the file offset
            to 1 free record is set up (8).
































                                           FIG. 3.3.2
                                    GET ̲POINTERS Processing
                                            (1 of 2)
































                                           FIG. 3.3.2
                                    GET ̲POINTERS Processing 
                                            (2 of 2)


3.3.3    READ ̲SECTOR
…0e……0e…          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f……0f…

         The flow chart is shown in fig. 3.3.3

         The input to READ ̲SECTOR is REC ̲NO. (register 1)

         The output is an indicator of whether the searched 'last record' is in the buffer or not:

            Register 2 is returned with one of the values:

            1:   the DTG's of the records in the buffer are all less than or equal to the DTG of 'first
                 record stored'.

            2:   the DTG's of the records in the buffer are all bigger that that of 'first record
                 stored'.

            3:   the DTG of '1. record stored' lies within the range. (Last record stored must be
                 in the buffer).
































                                           FIG. 3.3.3
                                          READ ̲SECTOR


3.3.4    FIND ̲LAST ̲REC
…0e……0e…          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f……0f…

         The flow chart is shown in fig. 3.3.4.

         The procedure is called by the recovery procedure GET ̲POINTERS.

         The input is a buffer of MLF-records.  One of the records is the record last stored, and
         the purpose of this procedure is to locate this record.  The record number is returned in
         register 1 and the corresponding DTG in registers 2 and 3.

         Major events are:

            The DTG of 1 record in the buffer is found (1).

            The DTG of the next record is found (2.3) and compared with DTG of 1. record (5).  If
            DTG of 1. record is less than this DTG, the DTG of next record is found (4.3) and compared
            (5).  The buffer is scanned until a record with a DTG less than the DTG of 1. record is
            found. The record no. and DTG is set up in return register (7.8).
































                                           FIG. 3.3.4
                                    FIND ̲LAST ̲REC flow chart


3.3.5    UPDATE ̲FILE
…0e……0e…          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f……0f…

         UPDATE ̲FILE is called by the main program in 3 cases:

            l:   When the internal buffer is full.
            2:   When 10 seconds have passed since last update.
            3:   When a printout request is received.

         The purpose of the procedure is to copy the contents of the incore record buffer to the MJF
         file, and to update the file pointers.

         Major events are:

            If the buffer is empty: return to calling procedure (1).
            Calculate no. of bytes to be copied (2).

            If the end of the MJF file is reached, the flag F ̲SWAP ̲AROUND is set (4,5) and the flag
            indicating that the control block is to be updated is set (6).

            The buffer is copied to file (7) and file pointers are updated (9,13).

            If there is less than 600 records free on MJF, a warning is issued. The warning is issued
            for each 100 records stored until a printout request (which presets the file) is received
            (14,19).

            If the control block update flag is set, the incore control block is copied to file (29,31).
































                                           FIG. 3.3.5
                                     UPDATE ̲FILE flow chart
          (1 of 2)…86…W         …02…  …02…    …02…   …02… …02…             …02…                           






























                                           FIG. 3.3.5
                                     UPDATE ̲FILE flow chart
                                            (2 of 2)


3.3.6    UPDATE ̲CTR ̲BLOCK
…0e……0e…          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f……0f…

         The procedure writes the incore control block to the disk resident control block.

         The procedure is called whenever a change of one or more parameters in the control block
         have been changed.


3.4      D̲a̲t̲a̲ ̲O̲r̲g̲a̲n̲i̲z̲a̲t̲i̲o̲n̲

         The layout of the log record and control block is shown in fig. 3.4.

         Variables, arrays and constants are listed on next pages.
































                                            FIG. 3.4
                                   MJF RECORD, CONTROL ̲BLOCK


         inds`ttes 1 side 


3.5      S̲t̲o̲r̲a̲g̲e̲ ̲A̲l̲l̲o̲c̲a̲t̲i̲o̲n̲

         Program size  :612 words
         Process size  :365 words

         The program may be loaded as a background program.


3.6      P̲e̲r̲f̲o̲r̲m̲a̲n̲c̲e̲ ̲C̲h̲a̲r̲a̲c̲t̲e̲r̲i̲s̲t̲i̲c̲s̲

         N/A


3.7      L̲i̲m̲i̲t̲a̲t̲i̲o̲n̲s̲

         The capacity of the MJF file is 8192 records.
         If the limit is exceeded, the oldest records on the file are overwritten.

         To prevent loss of data by overwriting, a warning is issued (MON ERROR is called with the
         error code #2222, which is treated as a recoverable error) when there is 600 records left.
          The warning is repeated for each 100 loggings, until the file is preset (caused by a printout
         request).

         Printout of the message log is done under semaphore protection.

         Attempts to start a printout before the previous printout is finished will cause an error
         (of type procedure) issued to the user.


3.8      E̲r̲r̲o̲r̲ ̲C̲o̲d̲e̲s̲/̲E̲r̲r̲o̲r̲ ̲L̲o̲c̲a̲t̲i̲o̲n̲s̲

         L̲A̲B̲E̲L̲   P̲R̲O̲C̲E̲D̲U̲R̲E̲           R̲A̲I̲S̲E̲D̲ ̲B̲Y̲ ̲C̲A̲L̲L̲ ̲O̲F̲:

          1      Main                IO,GETROOT (MOVHEAD)
          2       "                  IO,LOOKUP (MJF)
          3       "                  IO,GETROOT (FIXHEAD)
          4       "                  MTCB,INITE
          5       "                  QACCESS,READ ̲DEST
          6       "                  MTCB,READ
         30       "                  MTCB,WRITE
         40       "                  QACCESS,INS
         50       "                  MTCB,RELEAS
          0       "                  (Code = 2222) Warning: MJF-file is getting full, Printout request
                                     necessary.
          4      GET ̲POINTERS        ID,READBYTES
          1      READ ̲SECTOR         ID,REDBYTES
         60      UPDATE ̲CTR ̲BLOCK    ID,MODIFYBYTES
        #FFFF        FIN ̲LAST ̲REC    (Recarry failed, data confusion in MJF)


3.9      L̲i̲s̲t̲i̲n̲g̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

         Refer to chapt. 5.


4        Q̲U̲A̲L̲I̲T̲Y̲ ̲A̲S̲S̲U̲R̲A̲N̲C̲E̲


4.1      Q̲u̲a̲l̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲T̲e̲s̲t̲s̲

         N/A


4.2      O̲t̲h̲e̲r̲ ̲Q̲u̲a̲l̲i̲t̲y̲ ̲A̲s̲s̲u̲r̲a̲n̲c̲e̲ ̲P̲r̲o̲v̲i̲s̲i̲o̲n̲s̲

         N/A


5        P̲R̲E̲P̲A̲R̲A̲T̲I̲O̲N̲S̲ ̲F̲O̲R̲ ̲D̲E̲L̲I̲V̲E̲R̲Y̲

         Command files and source files are found on FIXLIB volume in directory:

         FIX ̲SOURCE.D * JOURNAL.D * JOURNAL xxxx.D
         (xxxx = version number)

         G̲e̲n̲e̲r̲a̲t̲i̲o̲n̲ ̲o̲f̲ ̲O̲b̲j̲e̲c̲t̲ ̲C̲o̲d̲e̲ ̲F̲i̲l̲e̲:

         Copy the source directory of the actual version into a work directory.

         .  Activate the command file   JOURNAL.CR0
         .  Activate the command file   JOURNAL.CP
         .  Activate the command file   JOURNAL.L0

         The code file JOURNAL.C is now ready for installation.

         L̲i̲s̲t̲i̲n̲g̲s̲

         The computer and linker output may be obtained by activating the command file JOURNAL.PP