DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

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

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦fe7102239⟧ TextFile

    Length: 19840 (0x4d80)
    Types: TextFile
    Names: »D109«

Derivation

└─⟦2520239fd⟧ Bits:30005867/disk13.imd Dokumenter (RCSL m.m.)
    └─⟦this⟧ »D109« 

TextFile

                    
 \f

                                        i 
           
          I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_ 
           
          1.  INTRODUKTION ...........................................   1 
           
          2.  METODEN ................................................   2 
              2.1  Proceduren test _print .............................   2 
                   2.1.1  Kald .......................................   3 
                   2.1.2  Fejludskrifter .............................   5 
              2.2  Proceduren print _record ...........................   5 
                   2.2.1  Eksempel på print _record procedure .........   7 
              2.3  Program ...........................................   8 
           
           
          B_I_L_A_G_: 
           
          A.  REFERENCER .............................................  11 
           
          B.  PROGRAMTEKSTEN TIL test _print ..........................  12 
           
          C.  PROGRAMTEKSTEN TIL print _record ........................  13 
           
           \f

                                        ii 
           \f

F_       1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_K_T_I_O_N_    1.
           
          Dette skrift beskriver en metode til fleksibel udskrivning af
          testfiler genereret af RC8000 Coroutine System. Brugervejlednin-
          gen til coroutinesystemet, ref. 1, angiver at filen kan udskri-
          ves med fp-kommandoen 
           
               print <fil> word words.8 
           
              men det resulterer i en ren numerisk udskrift, der er meget be-
          sværlig at fortolke. Formålet med den udskrivningsmetode, der be-
          skrives heri, er at lette fortolkningen af testoutput samt at mu-
          liggøre udvælgelse af individer på en nem måde. 
           
          Metoden er første gang anvendt i forbindelse med Scroll Mode Map-
          ping (SMM) modulet i CENTERNET, hvilket er grunden til at den in-
          dividuelle del af metoden er illustreret med det, der anvendes
          til SMM testoutput udskrivning. 
           
          Teksterne til procedurerne test _print og print _record findes i
          henholdsvis bilag B og C. 
           
                   Manualen igennem anvendes termen bs-fil om begrebet baggrundsla-
          ger fil (engelsk: backing storage file). 
           
           \f

F_       2_._ _ _ _ _ _ _ _ _M_E_T_O_D_E_N_    2.
           
          Metoden består af en standarddel og en brugerafhængig del. 
           
          Standarddelen sørger ud fra en passende trimning for at 
           
               - positionere i filen til først ønskede individ 
               - læse individerne 
               - udvælge de individer, der skal udskrives 
               - afslutte læsningen. 
           
          Den brugerafhængige del kan betragtes på to forskellige niveauer,
          den faste del og den varierende del. Den f_a_s_t_e_ del er den ud-
          skrivningsmetode, der skal anvendes på de udvalgte individer,
          mens den v_a_r_i_e_r_e_n_d_e_ del er den trimning, der er nødvendig for i
          hvert enkelt tilfælde at få positioneret filen, samt at få ud-
          valgt de ønskede individer fra den korrekte fil. 
           
          Standarddelen er implementeret som en external procedure -
          test _print - hvor positioneringen angives i parametrene, mens
          udvælgelsen af hvilke individer, der skal udskrives, sker ved
          hjælp af et logisk udtryk, der beregnes for hvert individ (Jen-
          sens Device). De udvalgte individer sendes t ad gangen til en
          udskrivningsprocedure, som er med som parameter til test _print
          proceduren. 
           
          Den brugerafhængige del består af 
           
               - program hvorfra test _print proceduren kaldes med passende
                 (= varierende) parametre 
               - procedure til udskrivning af testindividerne. 
           
           
M_M_m_   2.1       Proceduren test _print    2.1
P_P_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                    
          Proceduren test _print positionerer bs-filen med det angivne doku-
          mentnavn til det individ, der er udpeget af rec _no, hvorpå indi-
          viderne læses og overspringes indtil tidsangivelsen i individet\f

          er større end eller lig med cur _clock. Herefter undersøges ud-
          skrivningsbetingelsen og hvis den er sand kaldes proceduren
          print _record; dette gentages for de følgende individer indtil den
          logiske filafslutning, der indtræffer når blot en af de følgende
          betingelser er opfyldt: 
           
               - fysisk filafslutning 
               - tidsangivelsen i det aktuelle individ udpeger en dato, der
                 er tidligere end 1. januar 1981 eller senere end dags dato
               - tidsangivelsen i det aktuelle individ ligger før det fore-
                 gående individs tidsangivelse. 
           
          Opstår andre statusfejl end end _of _document under læsning af
          testfilen, afsluttes programmet med standardproceduren std _error.
           
           
     2_._1_._1_ _ _ _ _ _K_a_l_d_    2.1.1
           
          Den eksterne procedure test _print kaldes således: 
           
          test _print(doc, rec _no, coroutine, type, cur _clock, print,
                     print _record) 
           
          hvor 
           
          doc                 (kald værdi, string) 
                              dokumentnavnet på den bs-fil, der indeholder
                              test individerne. (Læses kun n gang). 
                               
          rec _no              (kald og retur værdi, heltal) 
                              individ nummer 
                              kald værdi: 
                              = 0 start med første individ i filen 
                              > 0 start efter rec _no individer i filen 
                              < 0 start rec _no individer fra den logiske
                                  fil afslutning 
                              retur værdi: 
                              individ number på sidst læste individ + 1 
           \f

          coroutine           (retur værdi, heltal) 
                              coroutine identifikation 
                              retur værdi: 
                              coroutine identifikation i det sidst læste
                              individ (6. heltal). NB: Kan være negativ jf.
                              ref. 1. 
                               
               type                (retur værdi, heltal) 
                              individ type 
                              retur værdi: 
                              individ typen i det sidst læste individ (1.
                              heltal) 
                               
               cur _clock           (kald og retur værdi, heltal) 
                              klokken på formen ttmmss 
                              kald værdi: 
                              = 0 start med rec _no individet 
                              > 0 start med det første individ efter rec _no
                                  individet, hvis klokke er større end el-
                                  ler lig med cur _clock 
                              retur værdi: 
                              den (formatterede) klokke i det sidst læste
                              individ (7. + 8. heltal = sidste long) 
                               
               print               (kald værdi, logisk udtryk) 
                              udskrivningsbetingelse, der udregnes på basis
                              af parametrene rec _no, coroutine, type og
                              cur _clock, som opdateres for hvert individ,
                              der læses (Jensens Device) 
                              = sand  medfører at proceduren print _record
                                      kaldes 
                              = falsk medfører at det aktuelle individ
                                      springes over 
                                 
              print _record        (procedure) 
                              procedure, der kaldes såfremt udskrivnings-
                              betingelsen for det aktuelle individ er sand.
                              Se desuden afsnit 2.2. 
               
           \f

         2_._1_._2_ _ _ _ _ _F_e_j_l_u_d_s_k_r_i_f_t_e_r_    2.1.2
           
          Et kald af proceduren test _print kan resultere i følgende ud-
          skrifter på current output: 
           
               relative record number greater than max record number, 
               i.e. <kald værdien af recno> >= <antal individer> 
           
          Denne udskrift kommer, hvis der er <antal individer> i den logis-
          ke fil og proceduren er blevet bedt om at starte et større antal
          individer fra afslutningen. Proceduren fortsætter som om rec _no =
          0. 
           
               file exhausted; record number <antal individer> 
           
          Denne udskrift kommer, hvis proceduren er blevet kaldt med en
          kombination af rec _no og cur _clock, som ikke kan opfyldes inden
          den logiske filafslutning. Proceduren afslutter. 
           
           
M_M_m_2.2       Proceduren print _record    2.2
P_P_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           
             Proceduren print _record er brugerafhængig og funktionen af den
          kan derfor ikke beskrives. Det eneste der står fast er, at dens
          parametre skal erklæres som følger: 
           
               procedure print _record (record, rec _no, cur _date, cur _clock);
               value                           rec _no, cur _date, cur _clock ;
               integer array           record                              ;
               integer                         rec _no, cur _date, cur _clock ;
           
          samt at den kaldes af test _print, når udskrivningsbetingelsen
          (print) er sand for det aktuelle individ. 
           
          Navnet print _record er blot det formelle navn, som er anvendt i
          erklæringen af proceduren test _print; der kan vælges et hvilket
          som helst navn for udskrivningsproceduren. Parametrene til\f

          print _record er alle kaldeparametre, som i_k_k_e_ må ændres af proce-
          duren: 
           
          record              heltalsvektor (1:8) 
                              det testindivid, der skal udskrives 
                               
              rec _no              heltal 
                              det aktuelle individnummer talt fra starten
                              af den fysiske fil (startende med nummer 1) 
                               
               cur _date            heltal, ååmmdd 
                              den aktuelle dato læst fra record (og fortol-
                              ket) 
                               
               cur _clock           heltal, ttmmss 
                              det aktuelle klokkeslet læst fra record (og
                              fortolket). 
                               
               Som et eksempel på en brugerdefineret print _record er valgt den,
          der benyttes til testfiler produceret af CENTERNET modulet SMM. I
          dette tilfælde er proceduren external. 
           
                \f

M_M_m_   2.2.1     Eksempel på print _record procedure    2.2.1
P_P_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
              
          Den print _record procedure, der anvendes til SMM, producerer en
          udskrift, som er illustreret i eksempel 1. 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Eksempel 1: Starten af en udskrivning fra SMM's print _record pro-
                      cedure. 
           
          Kommentarer til SMM's print _record procedure: 
           
               - I starten af udskriften laves en overskrift, hvoraf de 3
                 første linier hører til de individer, der dannes af corou-
                 tinesystemet, mens de sidste svarer til de brugerafhængige
                 individer. 
                  
               - Overskriften styres af et antal own variable: last _clock,
                 last _date, tab _1, tab _2 samt width. De samme variable an-
                 vendes i de følgende kald til at formattere udskriften. 
                  
                    - Hver gang dato ændrer sig udskrives en linie med den nye
                 dato (cur _date). 
                  \f

               - I starten af hver individudskrift er der plads til klokke-
                 slet (cur _clock), som kun udskrives, når det skifter. 
                  
               - Coroutine identifikationen, individtypen (operation) og
                 semaforidentifikationen udskrives i klar tekst. 
                  
               - Det aktuelle individnummer udskrives sammen med det ufor-
                 tolkede individindhold. 
                  
               - De interessante felter i et individ udskrives i den 'for-
                 tolkede' del af udskriften. 
                  
               - Der anvendes en standard variable terms til oplysning, om
                 det antal terminaler, der blev benyttet ved opstarten af
                 SMM. (Værdien har betydning for fortolkningen af corouti-
                 ne- og semaforidentifikationerne). 
                  
               - De to dele af wait _select udskrives hver især, enten som
                 ikke-negative tal (dvs. ufortolket) eller som et minus ef-
                 terfulgt af de sidste 23 bits opfattet som et positivt
                 heltal. Denne metode skulle lette fortolkningen af
                 wait _select i de tilfælde, hvor wait _select opfattes som
                 en maske. 
                  
                  
         2_._3_ _ _ _ _ _ _ _P_r_o_g_r_a_m_    2.3
           
          Hvilket program, der skal udføres for at få kaldt proceduren
          test _print, er afhængigt af hvordan den aktuelle testfil skal
          behandles. I det følgende gives et antal eksempler på programmer
          til illustrering af nogle af de muligheder, der ligger i
          test _print proceduren. 
           
          Det simpleste program er det, hvor samtlige individer fra start
          og til logisk filafslutning udskrives: 
           
               begin 
                 test _print(<:test:>,0,0,0,0,true,print _rec) 
               end 
           \f

          Såfremt udskrivningsproceduren er en med standard variable som
          for eksempel den, der anvendes til SMM, skal disse variable ini-
          tieres inden kaldet af test _print. Hvis der desuden kun ønskes
          udskrevet fra individ nr. 200 til individ nr. 300 kan det gøres
          med følgende program: 
           
               begin 
               integer rec _no; 
                 terms:= 3; <* antal terminaler *> 
                 rec _no:= 199; 
                 test _print(<:smmtest:>,rec _no,0,0,0,rec _no <= 300, 
                                                       print _record); 
               end 
           
          Ønskes samtlige 'signal'- og 'wait'-individer udskrevet, såfremt
          de ikke er genereret af centralogic (dvs. coroutine nr. 0), kan
          det ske med følgende program: 
           
               begin 
               integer cor,type; 
                 test _print(<:test:>,0,cor,type,0, 
                            cor <> 0 and (type = 4 or type = 5 or type = 8), 
                                                      print _rec); 
               end 
           
          Vides det, at tidsintervallet fra klokken 13 til 14 rummes i de
          sidste 2000 individer i testfilen, og ønskes blot de brugergene-
          rerede individer udskrevet fra dette tidsrum, kan det gøres på
          følgende måde: 
           
                    begin 
               integer type,cur _clock; 
                 cur _clock:= 13 00 00; 
                 test _print(<:fil:>,-2000,0,type,cur _clock, 
                             type >= 1024 and cur _clock <= 14 00 00, 
                                                           print _rec) 
               end 
                \f

          Som det fremgår af ovenstående eksempler, giver Jensens Device
          rige muligheder for at trimme udskriften af testfiler og samtidig
          er selekteringsmetoden enkel, idet print parametren blot skal
          overholde reglerne for logiske udtryk, som kendes fra ALGOL8. 
           
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_R_    A.
           
          1  RCSL Nr. 31-D639: 
               A_L_G_O_L_ _C_o_r_o_u_t_i_n_e_ _S_y_s_t_e_m_,_ _B_r_u_g_e_r_v_e_j_l_e_d_n_i_n_g_ 
               Jesper Andreas Tågholt, Oktober 1981 
               R_e_s_u_m__: Denne manual beskriver et coroutine system til brug
               under ALGOL8. 
               (50 trykte sider). 
                
          2  RCSL No 43-GL11697: 
               C_E_N_T_E_R_N_E_T_,_ _R_C_8_0_0_0_ _S_c_r_o_l_l_ _M_o_d_e_ _M_a_p_p_i_n_g_ _M_o_d_u_l_e_ _(_S_M_M_)_ 
               R_e_f_e_r_e_n_c_e_ _M_a_n_u_a_l_ 
               Lis Clement, November 1981 
               A_b_s_t_r_a_c_t_: This document describes the functions and the in-
               ternal structure of the Scroll Mode Mapping module of
               CENTERNET. The SMM module maps the SC and VTP formats/
               protocols into the conventions of the standard terminal
               interface, known as the way the RC822 terminal is accessed
               from an internal process in RC8000. 
               (106 printed pages). 
                
                \f

F_M_M_m_ B.        PROGRAMTEKSTEN TIL test _print    B.
P_P_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           
           \f

F_                  
 \f

F_                  
 \f

F_M_M_m_ C.        PROGRAMTEKSTEN TIL print _record    C.
P_P_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           
           \f

F_                  
 \f

F_                  
 \f

F_                  
           \f

«eof»