|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 19840 (0x4d80) Types: TextFile Names: »D109«
└─⟦2520239fd⟧ Bits:30005867/disk13.imd Dokumenter (RCSL m.m.) └─⟦this⟧ »D109«
\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»