diff options
Diffstat (limited to 'mp-bap')
| -rw-r--r-- | mp-bap/ls-MENUKARTE:MP-BAP | bin | 79872 -> 0 bytes | |||
| -rw-r--r-- | mp-bap/ls-MP BAP 1 | 1346 | ||||
| -rw-r--r-- | mp-bap/ls-MP BAP 2 | 1396 | ||||
| -rw-r--r-- | mp-bap/ls-MP BAP-gen | 100 | 
4 files changed, 0 insertions, 2842 deletions
| diff --git a/mp-bap/ls-MENUKARTE:MP-BAP b/mp-bap/ls-MENUKARTE:MP-BAPBinary files differ deleted file mode 100644 index 564b07c..0000000 --- a/mp-bap/ls-MENUKARTE:MP-BAP +++ /dev/null diff --git a/mp-bap/ls-MP BAP 1 b/mp-bap/ls-MP BAP 1 deleted file mode 100644 index 9fa1a4b..0000000 --- a/mp-bap/ls-MP BAP 1 +++ /dev/null @@ -1,1346 +0,0 @@ -PACKET ls mp bap 1  DEFINES                (*******************************)  -                                           (*                             *)  -       stdvoreinstellung der parameter,    (*         ls-MP BAP 1         *)  -       werkstueckdefinition,               (*         Version 1.1         *)  -       tastendefinition,                   (*                             *)  -       phasendefinition,                   (*   (c) 1987, 1988            *)  -       bewertungsschluessel,               (*       by Eva Latta-Weber    *)  -       werkstueckaufhaenger,               (*          Bielefeld          *)  -       tastenbezeichnung,                  (*                             *)  -       piepse,                             (*******************************)  -                                             -       mp bap einstellung anzeigen,          -       mp bap standardwerte,                 -       mp bap breite des werkstuecks,  -       mp bap hoehe  des werkstuecks,  -       mp bap invers normal,  -       mp bap zeichensatz,  -       mp bap fehlerzeichen,  -       mp bap tastenbelegung,  -       mp bap anzahl arbeitsphasen,  -       mp bap dauer einer arbeitsphase,  -       mp bap pausendauer,  -       mp bap wertungsschluessel:  -  -LET maxspalten         =            70, -    maxzeilen          =            14, -    kleinster wert     =             1, -    oben unten return  = ""3""10""13"", -    punkt              =           "+", -    punkt und zurueck  =        "+"8"", -    piep               =         ""7"", -    blank              =           " "; -INT  VAR aktuelle werkstueckbreite, -         aktuelle werkstueckhoehe, -         kleinster aktueller zeichencode, -         groesster aktueller zeichencode, -         aktuelle anzahl der arbeitsphasen, - -         aktuelle arbeitsphasendauer in minuten, -         aktuelle pausendauer in minuten; -TEXT VAR aktuelles fehlerzeichen, -         nach rechts, -         nach links, -         nach oben, -         nach unten, -         ausbesserung, -         naechstes; -BOOL VAR inversdarstellung; -ROW 11 REAL VAR bewertung; -WINDOW VAR w1, w2, w3, w4; -PROC stdvoreinstellung der parameter: -  aktuelle werkstueckbreite               :=     15; -  aktuelle werkstueckhoehe                :=     12; -  kleinster aktueller zeichencode         :=     65; - -  groesster aktueller zeichencode         :=     90; -  aktuelle anzahl der arbeitsphasen       :=      3; -  aktuelle arbeitsphasendauer in minuten  :=     10; -  aktuelle pausendauer in minuten         :=      2; -  aktuelles fehlerzeichen                 :=    "F"; -  nach rechts                             :=  ""2""; -  nach links                              :=  ""8""; -  nach oben                               :=  ""3""; -  nach unten                              := ""10""; -  ausbesserung                            :=  ""1""; - -  naechstes                               := ""27""; -  inversdarstellung                       :=  FALSE; -  bewertung := ROW 11 REAL : (0.0, 0.1, 0.2, 0.3, 0.4, 0.5, -                                   0.6, 0.7, 0.8, 0.9, 1.0) -END PROC stdvoreinstellung der parameter; -PROC werkstueckdefinition (INT VAR breite, hoehe, kleinster, groesster, -                           TEXT VAR fzeichen, BOOL VAR invers): -  breite        := aktuelle werkstueckbreite; -  hoehe         := aktuelle werkstueckhoehe; - -  kleinster     := kleinster aktueller zeichencode; -  groesster     := groesster aktueller zeichencode; -  fzeichen      := aktuelles fehlerzeichen; -  invers        := inversdarstellung -END PROC werkstueckdefinition; -PROC tastendefinition (TEXT VAR rechts, links, hoch, runter, aus, nach): -  rechts        := nach rechts; -  links         := nach links; -  hoch          := nach oben; -  runter        := nach unten; -  aus           := ausbesserung; -  nach          := naechstes -END PROC tastendefinition; - -PROC phasendefinition (INT VAR aphasenzahl, aphasendauer, pausendauer): -  aphasenzahl   := aktuelle anzahl der arbeitsphasen; -  aphasendauer  := aktuelle arbeitsphasendauer in minuten; -  pausendauer   := aktuelle pausendauer in minuten -END PROC phasendefinition; -PROC bewertungsschluessel (ROW 11 REAL VAR schluessel): -  INT VAR zeiger; -  FOR zeiger FROM 1 UPTO 11 REP -    schluessel [zeiger] := bewertung [zeiger] -  PER -END PROC bewertungsschluessel; -PROC mp bap einstellung anzeigen: -  aktuellen parameterzustand anzeigen; - -  regenerate menuscreen -END PROC mp bap einstellung anzeigen; -PROC mp bap standardwerte: -  standardwerte einstellen; -  regenerate menuscreen -END PROC mp bap standardwerte; -PROC mp bap breite des werkstuecks: -  breite des werkstuecks einstellen; -  regenerate menuscreen -END PROC mp bap breite des werkstuecks; -PROC mp bap hoehe des werkstuecks: -  hoehe des werkstuecks einstellen; -  regenerate menuscreen -END PROC mp bap hoehe des werkstuecks; -PROC mp bap invers normal: -  werkstueckdarstellung einstellen; - -  regenerate menuscreen -END PROC mp bap invers normal; -PROC mp bap zeichensatz: -  zeichensatz einstellen; -  regenerate menuscreen -END PROC mp bap zeichensatz; -PROC mp bap fehlerzeichen: -  fehlerzeichen veraendern; -  regenerate menuscreen -END PROC mp bap fehlerzeichen; -PROC mp bap tastenbelegung: -  tastaturbelegung einstellen; -  regenerate menuscreen -END PROC mp bap tastenbelegung; -PROC mp bap anzahl arbeitsphasen: -  anzahl der arbeitsphasen festlegen; -  regenerate menuscreen -END PROC mp bap anzahl arbeitsphasen; - -PROC mp bap dauer einer arbeitsphase: -  dauer einer arbeitsphase festlegen; -  regenerate menuscreen -END PROC mp bap dauer einer arbeitsphase; -PROC mp bap pausendauer: -  pausendauer festlegen; -  regenerate menuscreen -END PROC mp bap pausendauer; -PROC mp bap wertungsschluessel: -  wertungsschluessel veraendern; -  regenerate menuscreen -END PROC mp bap wertungsschluessel; -PROC aktuellen parameterzustand anzeigen: -  zeige die fenster; -  fuelle die fenster mit inhalt; -  gib hinweis aus. - -  zeige die fenster: -    w1 := window ( 2,  2, 37, 20); -    w2 := window (41,  2, 38, 20); -    w3 := window ( 1,  1, 79, 24); -    page; show (w1); show (w2). -  fuelle die fenster mit inhalt: -    zeige inhalt fenster 1; -    zeige inhalt fenster 2. -  zeige inhalt fenster 1: -    zeige eingestellte parameter an (w1). -  zeige inhalt fenster 2: -    gib bewertungsschluessel aus (w2). -  gib hinweis aus: -    out footnote (w3, anwendungstext (2)); pause. -END PROC aktuellen parameterzustand anzeigen; - -PROC zeige eingestellte parameter an (WINDOW VAR w): -  zeige ueberschrift; -  zeige werkstueckdefinition; -  zeige tastenbelegung; -  zeige simulationszeiten. -  zeige ueberschrift: -    cursor (w, 1,  1); out (w, center (w, invers (anwendungstext ( 1)))). -  zeige werkstueckdefinition: -    cursor (w, 2,  3); out (w, anwendungstext ( 6)); -                       out (w, text (aktuelle werkstueckbreite, 3)); -                       out (w, anwendungstext (28)); -    cursor (w, 2,  4); out (w, anwendungstext ( 7)); - -                       out (w, text (aktuelle werkstueckhoehe,  3)); -                       out (w, anwendungstext (28)); -    cursor (w, 2,  5); out (w, anwendungstext ( 8)); -                        IF inversdarstellung -                           THEN out (w, anwendungstext (29)) -                           ELSE out (w, anwendungstext (30)) -                        FI; -    cursor (w, 2,  6); out (w, anwendungstext ( 9)); -                       out (w, zeichensatz); -    cursor (w, 2,  7); out (w, anwendungstext (10)); - -                       out (blank + aktuelles fehlerzeichen). -  zeige tastenbelegung: -    cursor (w, 2,  9); out (w, anwendungstext (11)); -                       out (w, tastenbezeichnung (nach rechts)); -    cursor (w, 2, 10); out (w, anwendungstext (12)); -                       out (w, tastenbezeichnung (nach links)); -    cursor (w, 2, 11); out (w, anwendungstext (13)); -                       out (w, tastenbezeichnung (nach oben)); -    cursor (w, 2, 12); out (w, anwendungstext (14)); -                       out (w, tastenbezeichnung (nach unten)); - -    cursor (w, 2, 13); out (w, anwendungstext (15)); -                       out (w, tastenbezeichnung (ausbesserung)); -    cursor (w, 2, 14); out (w, anwendungstext (16)); -                       out (w, tastenbezeichnung (naechstes)). -  zeige simulationszeiten: -    cursor (w, 2, 16); out (w, anwendungstext (17)); -                       out (w, text (aktuelle anzahl der arbeitsphasen, 4)); -    cursor (w, 2, 17); out (w, anwendungstext (18)); -                       out (w, text (aktuelle arbeitsphasendauer in minuten, 4)); - -                       out (w, anwendungstext (51)); -    cursor (w, 2, 18); out (w, anwendungstext (19)); -                       out (w, text (aktuelle pausendauer in minuten, 4)); -                       out (w, anwendungstext (51)); -    cursor (w, 2, 20); out (w, anwendungstext ( 5)); -                       out (w, gesamtdauerangabe). -  zeichensatz: -    blank + code (kleinster aktueller zeichencode) + "..." + -            code (groesster aktueller zeichencode) + " ("  + -            text (groesster aktueller zeichencode - -                   - kleinster aktueller zeichencode + 1, 2) + -            anwendungstext (28) + ")". -  gesamtdauerangabe: -    text ( arbeitsdauer + pausendauer, 4) + anwendungstext (51). -  arbeitsdauer: -      aktuelle anzahl der arbeitsphasen -    * aktuelle arbeitsphasendauer in minuten. -  pausendauer: -      (aktuelle anzahl der arbeitsphasen - 1) -    * aktuelle pausendauer in minuten. -END PROC zeige eingestellte parameter an; -PROC gib bewertungsschluessel aus (WINDOW VAR w): -  zeichne koordinatenkreuz; - -  trage messwerte ein. -  zeichne koordinatenkreuz: -    cursor (w, 1,  1); out (w, center (w, invers (anwendungstext ( 4)))); -    cursor (w, 2,  3); out (w, anwendungstext (20)); -    cursor (w, 2,  4); out (w, anwendungstext (21)); -    cursor (w, 2,  6); out (w, anwendungstext (23)); -    cursor (w, 2,  7); out (w, anwendungstext (22)); -    cursor (w, 2,  8); out (w, anwendungstext (22)); -    cursor (w, 2,  9); out (w, anwendungstext (22)); -    cursor (w, 2, 10); out (w, anwendungstext (22)); - -    cursor (w, 2, 11); out (w, anwendungstext (24)); -    cursor (w, 2, 12); out (w, anwendungstext (22)); -    cursor (w, 2, 13); out (w, anwendungstext (22)); -    cursor (w, 2, 14); out (w, anwendungstext (22)); -    cursor (w, 2, 15); out (w, anwendungstext (22)); -    cursor (w, 2, 16); out (w, anwendungstext (25)); -    cursor (w, 2, 17); out (w, anwendungstext (26)); -    cursor (w, 2, 19); out (w, anwendungstext (27)). -  trage messwerte ein: -    INT CONST abszisse :: 16, ordinate :: 2; - -    INT VAR nr; -    FOR nr FROM 1 UPTO 11 REP -      zeichne einen punkt -    PER. -  zeichne einen punkt: -    cursor (w, ordinate + 3 * nr, abszisse - nachkommastelle); out (punkt). -  nachkommastelle: -    int(bewertung [nr] * 10.0). -END PROC gib bewertungsschluessel aus; -PROC standardwerte einstellen: -  zeige fenster; -  zeige eingestellte parameter an (w1); -  gib information aus; -  hole bestaetigung ein. -  zeige fenster: -    w1 := window ( 2,  2, 37, 20); -    w2 := window (41, 10, 37, 12); - -    w3 := window (41,  2, 37,  6); -    page; show (w1); show (w2); show (w3). -  gib information aus: -    cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (52)))); -    cursor (w2, 2, 3); out (w2, anwendungstext (67)); -    cursor (w2, 2, 4); out (w2, anwendungstext (68)); -    cursor (w2, 2, 7); out (w2, anwendungstext (69)); -    cursor (w2, 2, 9); out (w2, anwendungstext (70)); -    cursor (w2, 2,10); out (w2, anwendungstext (71)); -    cursor (w2, 2,11); out (w2, anwendungstext (72)); - -    cursor (w2, 2,12); out (w2, anwendungstext (73)). -  hole bestaetigung ein: -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (66)))); -    cursor (w3, 2, 3); -    IF yes (w3, anwendungstext (66)) -       THEN stdvoreinstellung der parameter; -            gib positive rueckmeldung -    FI. -  gib positive rueckmeldung: -    page (w1); -    zeige eingestellte parameter an (w1); -    cleop  (w3, 2, 3); out (anwendungstext (221)); -    cursor (w3, 2, 5); out (anwendungstext (  3)); - -    pause. -END PROC standardwerte einstellen; -PROC breite des werkstuecks einstellen: -  zeige die fenster; -  hinweise an den benutzer ausgeben; -  werkstueck zeigen (w3); -  erfrage veraenderung; -  REP -    neuen wert vom bildschirm holen -  UNTIL benutzer ist einverstanden PER. -  zeige die fenster: -    w1 := window ( 2, 2, 26, 6); -    w2 := window (30, 2, 48, 6); -    w3 := window (2, 9, 77, 16); -    page; show (w1); show (w2). -  hinweise an den benutzer ausgeben: -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52)))); - -    cursor (w1, 2, 3); out (w1, anwendungstext (53)); -                       out (w1, text (kleinster wert, 3)); -    cursor (w1, 2, 4); out (w1, anwendungstext (54)); -                       out (w1, text (maxspalten,     3)); -    cursor (w1, 2, 6); out (w1, anwendungstext (55)); -                       out (w1, text (aktuelle werkstueckbreite, 3)). -  erfrage veraenderung: -    cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (57)))); -    cursor (w2, 2, 3); -    IF no (anwendungstext (216)) - -       THEN LEAVE breite des werkstuecks einstellen -    FI. -  neuen wert vom bildschirm holen: -    cleop  (w2, 2, 3); out (w2, anwendungstext (58)); -    cursor (w2, 2, 4); out (w2, anwendungstext (59)); -    cursor (w2, 2, 6); out (w2, anwendungstext (60)); -    aktuelle werkstueckbreite := ermittelter wert (1, maxspalten, -                                                aktuelle werkstueckbreite). -  benutzer ist einverstanden : -    gib aktuelle infos aus; -    hole bestaetigung. -  gib aktuelle infos aus: - -    hinweise an den benutzer ausgeben; -    werkstueck zeigen (w3); -    cleop (w2, 1, 3). -  hole bestaetigung: -    cursor (w2, 2, 3); -    IF yes (w2, anwendungstext (62)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC breite des werkstuecks einstellen; -PROC hoehe des werkstuecks einstellen: -  fenster zeigen; -  hinweise an den benutzer ausgeben; -  werkstueck zeigen (w3); -  erfrage veraenderung; -  REP -    neuen wert vom bildschirm holen -  UNTIL benutzer ist einverstanden PER. - -  fenster zeigen: -    w1 := window ( 2, 2, 26, 6); -    w2 := window (30, 2, 48, 6); -    w3 := window (2, 9, 77, 16); -    page; show (w1); show (w2). -  hinweise an den benutzer ausgeben: -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52)))); -    cursor (w1, 2, 3); out (w1, anwendungstext (53)); -                       out (w1, text (kleinster wert, 3)); -    cursor (w1, 2, 4); out (w1, anwendungstext (54)); -                       out (w1, text (maxzeilen,      3)); -    cursor (w1, 2, 6); out (w1, anwendungstext (55)); - -                       out (w1, text (aktuelle werkstueckhoehe, 3)). -  erfrage veraenderung: -    cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (63)))); -    cursor (w2, 2, 3); -    IF no (anwendungstext (217)) -       THEN LEAVE hoehe des werkstuecks einstellen -    FI. -  neuen wert vom bildschirm holen: -    cleop  (w2, 2, 3); out (w2, anwendungstext (58)); -    cursor (w2, 2, 4); out (w2, anwendungstext (59)); -    cursor (w2, 2, 6); out (w2, anwendungstext (64)); -    aktuelle werkstueckhoehe := ermittelter wert (1, maxzeilen, - -                                                  aktuelle werkstueckhoehe). -  benutzer ist einverstanden : -    gib aktuelle infos aus; -    hole bestaetigung. -  gib aktuelle infos aus: -    hinweise an den benutzer ausgeben; -    werkstueck zeigen (w3); -    cleop (w2, 1, 3). -  hole bestaetigung: -    cursor (w2, 2, 3); -    IF yes (w2, anwendungstext (65)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC hoehe des werkstuecks einstellen; -PROC werkstueckdarstellung einstellen: -  fenster zeigen; - -  hinweise an den benutzer ausgeben; -  werkstueck zeigen (w3); -  REP -    bestaetigung einholen; -    hinweise an den benutzer ausgeben; -    werkstueck zeigen (w3) -  UNTIL benutzer ist einverstanden PER. -  fenster zeigen: -    w1 := window ( 2,  2, 28,  6); -    w2 := window (32,  2, 46,  6); -    w3 := window ( 2,  9, 77, 16); -    page; show (w1); show (w2). -  hinweise an den benutzer ausgeben: -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52)))); -    cursor (w1, 2, 3); out (w1, anwendungstext (74)); - -                       out (w1, anwendungstext (76)); -    cursor (w1, 2, 4); out (w1, anwendungstext (74)); -                       out (w1, anwendungstext (77)); -    cursor (w1, 2, 6); out (w1, anwendungstext (75)); -                       IF inversdarstellung -                          THEN out (w1, anwendungstext (77)) -                          ELSE out (w1, anwendungstext (76)) -                       FI. -  bestaetigung einholen: -    page (w2); -    cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (89)))); - -    cursor (w2, 2, 3); -    IF yes (w2, anwendungstext (78)) -       THEN veraendere darstellungsart -       ELSE LEAVE werkstueckdarstellung einstellen -    FI. -  veraendere darstellungsart: -    IF inversdarstellung -       THEN inversdarstellung := FALSE -       ELSE inversdarstellung := TRUE -    FI. -  benutzer ist einverstanden: -    cleop (w2, 1, 3); -    cursor (w2, 2, 3); -    IF yes (w2, anwendungstext (99)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC werkstueckdarstellung einstellen; - -PROC zeichensatz einstellen: -  zeige fenster; -  gib eingestellten zeichensatz an; -  gib bedienhinweise aus; -  erfrage neueinstellung; -  REP -    erfrage das neue fehlerzeichen; -    ermittle das kleinste zeichen; -    ermittle das groesste zeichen; -    page (w1); -    gib eingestellten zeichensatz an -  UNTIL benutzer ist einverstanden PER. -  zeige fenster: -    w1 := window ( 2,  2, 28, 22); -    w2 := window (32, 10, 46, 14); -    w3 := window (32,  2, 46,  6); -    page; show (w1); show (w2); show (w3). - -  gib eingestellten zeichensatz an: -    cursor (w1, 1, 1); -    out (w1, center (w1, invers (anwendungstext (79)))); -    gib zeichenkette aus (w1, kleinster aktueller zeichencode, -                              groesster aktueller zeichencode, -                              code (aktuelles fehlerzeichen)). -  gib bedienhinweise aus: -    cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (52)))); -    cursor (w2, 2, 3); out (w2, anwendungstext (80)); -    cursor (w2, 2, 4); out (w2, anwendungstext (81)); - -    cursor (w2, 2, 5); out (w2, anwendungstext (82)); -    cursor (w2, 2, 6); out (w2, anwendungstext (83)); -    cursor (w2, 2, 8); out (w2, anwendungstext (84)); -    cursor (w2, 2, 9); out (w2, anwendungstext (85)); -    cursor (w2, 2,10); out (w2, anwendungstext (86)); -    cursor (w2, 2,12); out (w2, anwendungstext (87)); -    cursor (w2, 2,13); out (w2, anwendungstext (88)). -  erfrage neueinstellung: -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (90)))); -    cursor (w3, 2, 3); - -    IF no (w3, anwendungstext (91)) -       THEN LEAVE zeichensatz einstellen -    FI. -  erfrage das neue fehlerzeichen: -    gib vollstaendigen zeichensatz aus; -    gib fehlerzeicheninformationen aus; -    REP -      lasse fehlerzeichen eingeben -    UNTIL fehlerzeichen ist ok PER. -  gib vollstaendigen zeichensatz aus: -    page (w1); page (w2); page (w3); -    cursor (w1, 1, 1); -    out (w1, center (w1, invers (anwendungstext (92)))); -    gib zeichenkette aus (w1, 33, 126, 0). -  gib fehlerzeicheninformationen aus: - -    cursor (w2, 1, 1); -    out (w2, center (w2, invers (anwendungstext (52)))); -    cursor (w2, 2, 3);  out (w2, anwendungstext (95)); -    cursor (w2, 2, 4);  out (w2, anwendungstext (96)); -    cursor (w2, 2, 6);  out (w2, anwendungstext (97)). -  lasse fehlerzeichen eingeben: -    cursor (w3, 1, 1); -    out (w3, center (w3, invers (anwendungstext (100)))); -    cursor (w3, 2, 3); -    out (w3, anwendungstext (101)); -    cursor on; inchar (aktuelles fehlerzeichen); cursor off; -    IF fehlerzeichen ist ok - -       THEN out (w3, aktuelles fehlerzeichen); -            markiere das fehlerzeichen im ersten fenster; -       ELSE lege beschwerde ein -    FI. -  fehlerzeichen ist ok: -        code (aktuelles fehlerzeichen) >=  33 -    AND code (aktuelles fehlerzeichen) <= 126. -  markiere das fehlerzeichen im ersten fenster: -    positioniere cursor in zeichenkette (w1, 33, code (aktuelles fehlerzeichen)); -    out (w1, invers (aktuelles fehlerzeichen)). -  lege beschwerde ein: -    piepse; -    cursor (w2, 2, 8); out (w2, anwendungstext (102)); - -    cursor (w2, 2,10); out (w2, anwendungstext (103)); -    cursor (w2, 2,11); out (w2, anwendungstext (104)); -    cursor (w2, 2,12); out (w2, anwendungstext (105)); -    cursor (w2, 2,13); out (w2, anwendungstext (106)); -    cursor (w2, 2,14); out (w2, anwendungstext (107)). -  ermittle das kleinste zeichen: -    page (w2); page (w3); -    gib kleinste zeichencode informationen aus; -    lasse den vorbereich festlegen. -  ermittle das groesste zeichen: -    lasse den nachbereich festlegen. -  gib kleinste zeichencode informationen aus: - -    cursor (w2, 1, 1); -    out (w2, center (w2, invers (anwendungstext (52)))); -    cursor (w2, 2, 3); out (w2, anwendungstext (111)); -    cursor (w2, 2, 4); out (w2, anwendungstext (112)); -    cursor (w2, 2, 5); out (w2, anwendungstext (113)); -    cursor (w2, 2, 6); out (w2, anwendungstext (114)); -    cursor (w2, 2, 8); out (w2, anwendungstext (115)); -    cursor (w2, 2, 9); out (w2, anwendungstext (116)); -    cursor (w2, 2,10); out (w2, anwendungstext (117)); -    cursor (w2, 2,11); out (w2, anwendungstext (118)); - -    cursor (w2, 2,13); out (w2, anwendungstext (119)); -    cursor (w2, 2,14); out (w2, anwendungstext (120)). -  lasse den vorbereich festlegen: -    INT VAR s, z; page (w3); cursor (w3, 1, 1); -    out (w3, center (w3, invers (anwendungstext (121)))); -    cursor (w3, 2, 3); out (w3, anwendungstext (122)); -    cursor (w3, 2, 4); out (w3, anwendungstext (123)); -    cursor (w3, 2, 5); out (w3, anwendungstext (125)); -    get cursor (s, z); cursor on; -    kleinster aktueller zeichencode := code (aktuelles fehlerzeichen); - -    groesster aktueller zeichencode := code (aktuelles fehlerzeichen); -    kleinster aktueller zeichencode := eingabe mit intervallanzeige ( w1, 33, -                                       code (aktuelles fehlerzeichen), -                                       kleinster aktueller zeichencode, s, z); -    cursor off. -  lasse den nachbereich festlegen: -    cursor (w3, 1, 1); -    out (w3, center (w3, invers (anwendungstext (121)))); -    cursor (w3, 2, 3); out (w3, anwendungstext (122)); -    cursor (w3, 2, 4); out (w3, anwendungstext (124)); - -    cursor (w3, 2, 5); out (w3, anwendungstext (125)); -    get cursor (s, z); cursor on; -    groesster aktueller zeichencode := eingabe mit intervallanzeige ( w1, -                                       code (aktuelles fehlerzeichen), 126, -                                       groesster aktueller zeichencode, s, z); -    cursor off. -  benutzer ist einverstanden: -    page (w3); cursor (w3, 1, 1); -    out (w3, center (w3, invers (anwendungstext (90)))); -    cursor (w3, 2, 3); -    IF yes (w3, anwendungstext (126)) - -       THEN TRUE -       ELSE FALSE -    FI. -END PROC zeichensatz einstellen; -PROC fehlerzeichen veraendern: -  fenster zeigen; -  gib eingestellten zeichensatz an; -  gib bedienhinweise aus; -  erfrage neueinstellung; -  REP -    lasse fehlerzeichen einstellen -  UNTIL benutzer ist einverstanden PER. -  fenster zeigen: -    w1 := window ( 2,  2, 28, 22); -    w2 := window (32, 10, 46, 14); -    w3 := window (32,  2, 46,  6); -    page; show (w1); show (w2); show (w3). -  gib eingestellten zeichensatz an: - -    cursor (w1, 1, 1); -    out (w1, center (w1, invers (anwendungstext (79)))); -    gib zeichenkette aus (w1, kleinster aktueller zeichencode, -                              groesster aktueller zeichencode, -                              code (aktuelles fehlerzeichen)). -  gib bedienhinweise aus: -    cursor (w2, 1, 1); -    out (w2, center (w2, invers (anwendungstext (52)))); -    cursor (w2, 2, 3); out (w2, anwendungstext (131)); -    cursor (w2, 2, 4); out (w2, anwendungstext (132)); -    cursor (w2, 2, 5); out (w2, anwendungstext (133)); - -    cursor (w2, 2, 7); out (w2, anwendungstext (134)); -    cursor (w2, 2, 8); out (w2, anwendungstext (135)); -    cursor (w2, 2, 9); out (w2, anwendungstext (136)). -  erfrage neueinstellung: -    cursor (w3, 1, 1); -    out (w3, center (w3, invers (anwendungstext (130)))); -    cursor (w3, 2, 3); -    IF no (w3, anwendungstext (137)) -       THEN LEAVE fehlerzeichen veraendern -    FI. -  lasse fehlerzeichen einstellen: -    INT VAR s, z, fehlercode :: code (aktuelles fehlerzeichen); -    page (w3); cursor (w3, 1, 1); - -    out (w3, center (w3, invers (anwendungstext (138)))); -    cursor (w3, 2, 3); out (w3, anwendungstext (139)); -    cursor (w3, 2, 4); out (w3, anwendungstext (140)); -    cursor (w3, 2, 5); out (w3, anwendungstext (141)); -    get cursor (s, z); cursor on; -    fehlercode := eingabe mit elementanzeige (w1, -                                              kleinster aktueller zeichencode, -                                              groesster aktueller zeichencode, -                                              fehlercode, s, z); - -    cursor off; -    aktuelles fehlerzeichen := code (fehlercode). -  benutzer ist einverstanden: -    page (w3); cursor (w3, 1, 1); -    out (w3, center (w3, invers (anwendungstext (130)))); -    cursor (w3, 2, 3); -    IF yes (w3, anwendungstext (142)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC fehlerzeichen veraendern; -PROC tastaturbelegung einstellen: -  ROW 6 TEXT VAR tastenname, taste; -  fenster zeigen; -  REP -    tastaturneubelegung vornehmen -  UNTIL benutzer ist einverstanden PER. - -  fenster zeigen: -    w1 := window ( 2,  2, 28, 10); -    w2 := window ( 2, 14, 28, 10); -    w3 := window (32, 10, 46, 14); -    w4 := window (32,  2, 46,  6); -    page; show (w1); show (w2); show (w3); show (w4). -  tastaturneubelegung vornehmen: -    alte tastenbelegung einlesen; -    tastenbelegung anzeigen; -    bedienhinweise ausgeben; -    veraenderung erfragen; -    neue tastenbelegung erfragen; -    hinweis zur bewertung und stand ausgeben. -  alte tastenbelegung einlesen: -    INT VAR z1; - -    FOR z1 FROM 1 UPTO 6 REP -      tastenname [z1] := anwendungstext (z1 + 10) -    PER; -    taste [1] := nach rechts; -    taste [2] := nach links; -    taste [3] := nach oben; -    taste [4] := nach unten; -    taste [5] := ausbesserung; -    taste [6] := naechstes; -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (151)))). -  tastenbelegung anzeigen: -    INT VAR cspa, czei; -    cursor (w1, 2, 3); out (w1, tastenname [1]); -                       out (w1, tastenbezeichnung (taste [1])); - -                       get cursor (w1, cspa, czei); cleol (w1, cspa, czei); -    cursor (w1, 2, 4); out (w1, tastenname [2]); -                       out (w1, tastenbezeichnung (taste [2])); -                       get cursor (w1, cspa, czei); cleol (w1, cspa, czei); -    cursor (w1, 2, 5); out (w1, tastenname [3]); -                       out (w1, tastenbezeichnung (taste [3])); -                       get cursor (w1, cspa, czei); cleol (w1, cspa, czei); -    cursor (w1, 2, 6); out (w1, tastenname [4]); - -                       out (w1, tastenbezeichnung (taste [4])); -                       get cursor (w1, cspa, czei); cleol (w1, cspa, czei); -    cursor (w1, 2, 8); out (w1, tastenname [5]); -                       out (w1, tastenbezeichnung (taste [5])); -                       get cursor (w1, cspa, czei); cleol (w1, cspa, czei); -    cursor (w1, 2,10); out (w1, tastenname [6]); -                       out (w1, tastenbezeichnung (taste [6])); -                       get cursor (w1, cspa, czei); cleol (w1, cspa, czei). - -  bedienhinweise ausgeben: -    cursor (w2, 1, 1); out (center (w2, invers (anwendungstext (152)))); -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (52)))); -    cursor (w3, 2, 3); out (w3, anwendungstext (153)); -    cursor (w3, 2, 4); out (w3, anwendungstext (154)); -    cursor (w3, 2, 6); out (w3, anwendungstext (155)); -    cursor (w3, 2, 7); out (w3, anwendungstext (156)); -    cursor (w3, 2, 8); out (w3, anwendungstext (157)); -    cursor (w3, 2, 9); out (w3, anwendungstext (158)); - -    cursor (w3, 2,11); out (w3, anwendungstext (159)); -    cursor (w3, 2,12); out (w3, anwendungstext (160)); -    cursor (w3, 2,13); out (w3, anwendungstext (161)); -    cursor (w3, 2,14); out (w3, anwendungstext (162)). -  veraenderung erfragen: -    cursor (w4, 1, 1); out (w4, center (w4, invers (anwendungstext (163)))); -    cursor (w4, 2, 3); -    IF no (w4, anwendungstext (164)) -       THEN LEAVE tastaturbelegung einstellen -    FI. -  neue tastenbelegung erfragen: -    INT VAR z2; page (w4); - -    cursor (w4, 1, 1); out (w4, center (w4, invers (anwendungstext (163)))); -    cursor (w4, 2, 3); out (w4, anwendungstext (165)); -    FOR z2 FROM 1 UPTO 6 REP -      gib tastenhinweis; -      hole tastatureingabe; -      tastenbelegung anzeigen -    PER. -  gib tastenhinweis: -    cleol (w4, 2, 5); out (w4, tastenname [z2]). -  hole tastatureingabe: -    INT VAR s, z; get cursor (w4, s, z); -    cursor on; inchar (taste [z2]); cursor off; -    cursor (w4, s, z); out (w4, tastenbezeichnung (taste [z2])). - -  hinweis zur bewertung und stand ausgeben: -    IF neue tastenbelegung ist ok -       THEN akzeptiere -       ELSE akzeptiere nicht -    FI. -  neue tastenbelegung ist ok: -    INT VAR zeiger; TEXT VAR tastenkette :: ""; -    FOR zeiger FROM 1 UPTO 6 REP -      IF pos (tastenkette, taste [zeiger]) > 0 -         THEN LEAVE neue tastenbelegung ist ok WITH FALSE -         ELSE tastenkette CAT taste [zeiger] -      FI -    PER; -    TRUE. -  akzeptiere: -    cursor (w2, 3, 4); -    out (w2, anwendungstext (166)); - -    cursor (w2, 7, 6); -    out (w2, anwendungstext (167)). -  akzeptiere nicht: -    cursor (w2, 3, 3); out (w2, anwendungstext (168)); -    cursor (w2, 3, 4); out (w2, anwendungstext (169)); -    cursor (w2, 3, 6); out (w2, anwendungstext (170)); -    cursor (w2, 3, 7); out (w2, anwendungstext (171)); -    cursor (w2, 3, 9); out (w2, anwendungstext (172)); -    cursor (w2, 5,10); out (w2, anwendungstext (173)). -  benutzer ist einverstanden: -    page (w4); -    cursor (w4, 1, 1); out (w4, center (w4, invers (anwendungstext (163)))); - -    IF neue tastenbelegung ist ok -       THEN gib hinweis auf abspeicherung -       ELSE frage nach neueingabe -    FI. -  gib hinweis auf abspeicherung: -    cursor (w4, 3, 3); out (w4, anwendungstext (174)); -    neue tastenbelegung festschreiben; -    cursor (w4, 3, 5); out (w4, anwendungstext (  2)); -    cursor on; pause; cursor off; -    TRUE. -  neue tastenbelegung festschreiben: -    nach rechts   := taste [1]; -    nach links    := taste [2]; -    nach oben     := taste [3]; -    nach unten    := taste [4]; - -    ausbesserung  := taste [5]; -    naechstes     := taste [6]. -  frage nach neueingabe: -    cursor (w4, 2, 3); -    IF yes (w4, anwendungstext (175)) -       THEN cleop (w2, 1, 3); FALSE -       ELSE alte tastenbelegung einlesen; -            tastenbelegung anzeigen; -            cleop  (w4, 2, 3); out (w4, anwendungstext (176)); -            cursor (w4, 3, 5); out (w4, anwendungstext (  2)); -            cursor on; pause; cursor off; -            TRUE -    FI. -END PROC tastaturbelegung einstellen; - -PROC simulationszeiten anzeigen (WINDOW VAR w): -  cursor (w, 1, 1); out (w, center (w, invers (anwendungstext (181)))); -  cursor (w, 2, 3); out (w, anwendungstext (17)); -                    out (w, text (aktuelle anzahl der arbeitsphasen, 4)); -  cursor (w, 2, 4); out (w, anwendungstext (18)); -                    out (w, text (aktuelle arbeitsphasendauer in minuten, 4)); -                    out (w, anwendungstext (51)); -  cursor (w, 2, 5); out (w, anwendungstext (19)); -                    out (w, text (aktuelle pausendauer in minuten, 4)); - -                    out (w, anwendungstext (51)); -  cursor (w, 2, 7); out (w, anwendungstext ( 5)); -                       out (w, gesamtdauerangabe). -  gesamtdauerangabe: -    text ( arbeitsdauer + pausendauer, 4) + anwendungstext (51). -  arbeitsdauer: -      aktuelle anzahl der arbeitsphasen -    * aktuelle arbeitsphasendauer in minuten. -  pausendauer: -      (aktuelle anzahl der arbeitsphasen - 1) -    * aktuelle pausendauer in minuten. -END PROC simulationszeiten anzeigen; -PROC anzahl der arbeitsphasen festlegen: - -  INT CONST minwert :: 2, maxwert :: 20; -  zeige fenster; -    hinweise an den benutzer ausgeben; -    simulationszeiten anzeigen (w2); -    erfrage veraenderung; -  REP -    neuen wert vom bildschirm holen -  UNTIL benutzer ist einverstanden PER. -  zeige fenster: -    w1 := window ( 2,  2, 28,  6); -    w2 := window (22, 12, 37,  7); -    w3 := window (32,  2, 47,  6); -    page; show (w1); show (w2); show (w3). -  hinweise an den benutzer ausgeben: -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52)))); - -    cursor (w1, 2, 3); out (w1, anwendungstext (53)); -                       out (w1, text (minwert, 2)); -    cursor (w1, 2, 4); out (w1, anwendungstext (54)); -                       out (w1, text (maxwert, 2)); -    cursor (w1, 2, 6); out (w1, anwendungstext (55)); -                       out (w1, text (aktuelle anzahl der arbeitsphasen, 2)). -  erfrage veraenderung: -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (182)))); -    cursor (w3, 2, 3); -    IF no (anwendungstext (218)) - -       THEN LEAVE anzahl der arbeitsphasen festlegen -    FI. -  neuen wert vom bildschirm holen: -    cleop  (w3, 2, 3); out (w3, anwendungstext ( 58)); -    cursor (w3, 2, 4); out (w3, anwendungstext ( 59)); -    cursor (w3, 2, 6); out (w3, anwendungstext (183)); -    aktuelle anzahl der arbeitsphasen := ermittelter wert (minwert, maxwert, -                                         aktuelle anzahl der arbeitsphasen). -  benutzer ist einverstanden: -    hinweise an den benutzer ausgeben; -    simulationszeiten anzeigen (w2); - -    cleop (w3, 2, 3); -    IF yes (w3, anwendungstext (184)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC anzahl der arbeitsphasen festlegen; -PROC dauer einer arbeitsphase festlegen: -  INT CONST minwert :: 1, maxwert :: 60; -  zeige fenster; -  hinweise an den benutzer ausgeben; -  simulationszeiten anzeigen (w2); -  erfrage veraenderung; -  REP -    neuen wert vom bildschirm holen -  UNTIL benutzer ist einverstanden PER. -  zeige fenster: -    w1 := window ( 2,  2, 28,  6); -    w2 := window (22, 12, 37,  7); - -    w3 := window (32,  2, 47,  6); -    page; show (w1); show (w2); show (w3). -  hinweise an den benutzer ausgeben: -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52)))); -    cursor (w1, 2, 3); out (w1, anwendungstext (53)); -                       out (w1, text (minwert, 2)); -                       out (w1, anwendungstext (51)); -    cursor (w1, 2, 4); out (w1, anwendungstext (54)); -                       out (w1, text (maxwert, 2)); -                       out (w1, anwendungstext (51)); - -    cursor (w1, 2, 6); out (w1, anwendungstext (55)); -                       out (w1, text (aktuelle arbeitsphasendauer in minuten, 2)); -                       out (w1, anwendungstext (51)). -  erfrage veraenderung: -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (187)))); -    cursor (w3, 2, 3); -    IF no (anwendungstext (219)) -       THEN LEAVE dauer einer arbeitsphase festlegen -    FI. -  neuen wert vom bildschirm holen: -    INT VAR spa, zei; -    cleop  (w3, 2, 3); out (w3, anwendungstext ( 58)); - -    cursor (w3, 2, 3); out (w3, anwendungstext ( 58)); -    cursor (w3, 2, 4); out (w3, anwendungstext ( 59)); -    cursor (w3, 2, 6); out (w3, anwendungstext (188)); -    get cursor (w3, spa, zei); -    cursor (w3, spa + 3, zei); out (w3, anwendungstext (51)); -    cursor (w3, spa, zei); -    aktuelle arbeitsphasendauer in minuten -                               := ermittelter wert (minwert, maxwert, -                                  aktuelle arbeitsphasendauer in minuten). -  benutzer ist einverstanden: - -    hinweise an den benutzer ausgeben; -    simulationszeiten anzeigen (w2); -    cleop (w3, 2, 3); -    IF yes (w3, anwendungstext (189)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC dauer einer arbeitsphase festlegen; -PROC pausendauer festlegen: -  INT CONST minwert :: 1, maxwert :: 30; -  zeige fenster; -  hinweise an den benutzer ausgeben; -  simulationszeiten anzeigen (w2); -  erfrage veraenderung; -  REP -    neuen wert vom bildschirm holen -  UNTIL benutzer ist einverstanden PER. - -  zeige fenster: -    w1 := window ( 2,  2, 28,  6); -    w2 := window (22, 12, 37,  7); -    w3 := window (32,  2, 47,  6); -    page; show (w1); show (w2); show (w3). -  hinweise an den benutzer ausgeben: -    cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52)))); -    cursor (w1, 2, 3); out (w1, anwendungstext (53)); -                       out (w1, text (minwert, 2)); -                       out (w1, anwendungstext (51)); -    cursor (w1, 2, 4); out (w1, anwendungstext (54)); - -                       out (w1, text (maxwert, 2)); -                       out (w1, anwendungstext (51)); -    cursor (w1, 2, 6); out (w1, anwendungstext (55)); -                       out (w1, text (aktuelle pausendauer in minuten, 2)); -                       out (w1, anwendungstext (51)). -  erfrage veraenderung: -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (191)))); -    cursor (w3, 2, 3); -    IF no (anwendungstext (220)) -       THEN LEAVE pausendauer festlegen -    FI. - -  neuen wert vom bildschirm holen: -    INT VAR spa, zei; -    cleop  (w3, 2, 3); out (w3, anwendungstext ( 58)); -    cursor (w3, 2, 4); out (w3, anwendungstext ( 59)); -    cursor (w3, 2, 6); out (w3, anwendungstext (192)); -    get cursor (w3, spa, zei); -    cursor (w3, spa + 3, zei); out (w3, anwendungstext (51)); -    cursor (w3, spa, zei); -    aktuelle pausendauer in minuten -                               := ermittelter wert (minwert, maxwert, -                                          aktuelle pausendauer in minuten). - -  benutzer ist einverstanden: -    hinweise an den benutzer ausgeben; -    simulationszeiten anzeigen (w2); -    cleop (w3, 2, 3); -    IF yes (w3, anwendungstext (193)) -       THEN TRUE -       ELSE FALSE -    FI. -END PROC pausendauer festlegen; -PROC wertungsschluessel veraendern: -  INT CONST abszisse :: 16, ordinate :: 2; -  zeige fenster; -  gib bewertungsschluessel aus (w1); -  gib informationen aus; -  stelle frage nach veraenderung; -  REP -    neueinstellung -  UNTIL benutzer ist einverstanden PER. - -  zeige fenster: -    w1 := window ( 2,  2, 38, 22); -    w2 := window (42, 10, 37, 14); -    w3 := window (42,  2, 37,  6); -    page; show (w1); show (w2); show (w3). -  gib informationen aus: -    cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (52)))); -    cursor (w2, 2, 3); out (w2, anwendungstext (195)); -    cursor (w2, 2, 4); out (w2, anwendungstext (196)); -    cursor (w2, 2, 6); out (w2, anwendungstext (197)); -    cursor (w2, 2, 7); out (w2, anwendungstext (198)); -    cursor (w2, 2, 8); out (w2, anwendungstext (199)); - -    cursor (w2, 2,11); out (w2, anwendungstext (200)); -    cursor (w2, 2,12); out (w2, anwendungstext (201)); -    cursor (w2, 2,13); out (w2, anwendungstext (202)). -  stelle frage nach veraenderung: -    cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (205)))); -    cursor (w3, 2, 3); -    IF no (anwendungstext (206)) -       THEN LEAVE wertungsschluessel veraendern -       ELSE gib hinweis auf linkes fenster -    FI. -  gib hinweis auf linkes fenster: -    cleop  (w3, 2, 3); out (w3, anwendungstext (211)); - -    cursor (w3, 2, 4); out (w3, anwendungstext (212)); -    cursor (w3, 2, 5); out (w3, anwendungstext (213)). -  neueinstellung: -    INT VAR zeiger; -    cursor an; -    FOR zeiger FROM 1 UPTO 11 REP -      gehe auf aktuelle punktposition; -      lasse verschieben -    PER; -    cursor aus. -  gehe auf aktuelle punktposition: -    cursor (w1, ordinate + 3 * zeiger, abszisse - nachkommastelle). -  nachkommastelle: -    int (bewertung [zeiger] * 10.0). -  lasse verschieben: -    TEXT VAR eingabezeichen; INT VAR position; - -    REP -      inchar (eingabezeichen); -      position := pos (oben unten return, eingabezeichen); -      fuehre angemessene reaktion aus -    UNTIL position = 3 PER. -  fuehre angemessene reaktion aus: -    SELECT position OF -      CASE 1: steige auf -      CASE 2: steige ab -      CASE 3: (* tue nichts *) -      OTHERWISE piepse -    END SELECT. -  steige auf: -    IF bewertung [zeiger] < 1.0 -       THEN loesche alten punkt; -            bewertung [zeiger] INCR 0.1; -            schreibe neuen punkt - -       ELSE piepse -    FI. -  steige ab: -    IF bewertung [zeiger] > 0.0 -       THEN loesche alten punkt; -            bewertung [zeiger] DECR 0.1; -            schreibe neuen punkt -       ELSE piepse -    FI. -  loesche alten punkt: -    INT VAR tabspalte, tabzeile; -    gehe auf aktuelle punktposition; -    get cursor (w1, tabspalte, tabzeile); -    IF tabspalte = ordinate + 3 OR tabzeile = abszisse -       THEN out (w1, "|") -       ELSE out (w1, blank) -    FI. -  schreibe neuen punkt: -    gehe auf aktuelle punktposition; - -    out (w1, punkt und zurueck). -  benutzer ist einverstanden: -    cleop (w3, 2, 3); -    IF yes (w3, anwendungstext (207)) -       THEN TRUE -       ELSE gib hinweis auf linkes fenster; -            FALSE -    FI. -END PROC wertungsschluessel veraendern; -PROC cleol (WINDOW VAR w, INT CONST cursorspalte, cursorzeile): -  cursor (w, cursorspalte, cursorzeile); -  IF remaining lines (w) > 1 -     THEN out (w, (areaxsize (w) - cursorspalte + 1) * blank) -     ELSE out (w, (areaxsize (w) - cursorspalte) * blank) - -  FI; -  cursor (w, cursorspalte, cursorzeile) -END PROC cleol; -PROC cleop (WINDOW VAR w, INT CONST cursorspalte, cursorzeile): -  cleol (w, cursorspalte, cursorzeile); -  INT VAR i; -  FOR i FROM 1 UPTO remaining lines (w) REP -    cleol (w, 1, cursorzeile + i) -  PER; -  cursor  (w, cursorspalte, cursorzeile) -END PROC cleop; -PROC cursor an: -  INT VAR spalte, zeile; -  get cursor (spalte, zeile); cursor on; cursor (spalte, zeile) -END PROC cursor an; -PROC cursor aus: -  INT VAR spalte, zeile; - -  get cursor (spalte, zeile); cursor off; cursor (spalte, zeile) -END PROC cursor aus; -INT PROC eingabe mit intervallanzeige (WINDOW VAR w, INT CONST minwert, -                                       maxwert, anfangswert, cursorspalte, -                                       cursorzeile): -  BOOL VAR ist aufsteigend :: minwert = anfangswert; -  INT  VAR aktueller wert  :: anfangswert, alter wert, eingelesener wert; -  REP -    hole position aus vorgabe (oben unten return, eingelesener wert); -    SELECT eingelesener wert OF - -      CASE 1: erniedrige aktuellen wert wenn moeglich -      CASE 2: erhoehe aktuellen wert wenn moeglich -    END SELECT -  UNTIL eingelesener wert = 3 PER; -  aktueller wert. -  erniedrige aktuellen wert wenn moeglich: -    IF aktueller wert > minwert -       THEN alter wert := aktueller wert; -            aktueller wert DECR 1; -            IF ist aufsteigend -               THEN loesche alte markierung -               ELSE markiere neues zeichen -            FI -       ELSE piepse -    FI. -  erhoehe aktuellen wert wenn moeglich: - -    IF aktueller wert < maxwert -       THEN alter wert := aktueller wert; -            aktueller wert INCR 1; -            IF ist aufsteigend -               THEN markiere neues zeichen -               ELSE loesche alte markierung -            FI -       ELSE piepse -    FI. -  loesche alte markierung: -    positioniere cursor in zeichenkette (w, 33, alter wert); -    out (w, code (alter wert) + "  "); -    cursor (cursorspalte, cursorzeile). -  markiere neues zeichen: -    positioniere cursor in zeichenkette (w, 33, aktueller wert); - -    out (w, invers (code (aktueller wert))); -    cursor (cursorspalte, cursorzeile). -END PROC eingabe mit intervallanzeige; -INT PROC eingabe mit elementanzeige (WINDOW VAR w, INT CONST minwert, -                                     maxwert, anfangswert, -                                     cursorspalte, cursorzeile): -  INT VAR aktueller wert :: anfangswert, alter wert, eingelesener wert; -  REP -    hole position aus vorgabe (oben unten return, eingelesener wert); -    SELECT eingelesener wert OF - -      CASE 1: erniedrige aktuellen wert wenn moeglich -      CASE 2: erhoehe aktuellen wert wenn moeglich -    END SELECT -  UNTIL eingelesener wert = 3 PER; -  aktueller wert. -  erniedrige aktuellen wert wenn moeglich: -    IF aktueller wert > minwert -       THEN alter wert := aktueller wert; -            aktueller wert DECR 1; -            loesche alte markierung; -            markiere neues zeichen -       ELSE piepse -    FI. -  erhoehe aktuellen wert wenn moeglich: -    IF aktueller wert < maxwert - -       THEN alter wert := aktueller wert; -            aktueller wert INCR 1; -            loesche alte markierung; -            markiere neues zeichen -       ELSE piepse -    FI. -  loesche alte markierung: -    positioniere cursor in zeichenkette (w, minwert, alter wert); -    out (w, code (alter wert) + "  "); -    cursor (cursorspalte, cursorzeile). -  markiere neues zeichen: -    positioniere cursor in zeichenkette (w, minwert, aktueller wert); -    out (w, invers (code (aktueller wert))); - -    cursor (cursorspalte, cursorzeile). -END PROC eingabe mit elementanzeige; -PROC werkstueck zeigen (WINDOW VAR w): -  INT VAR zaehler, spalte, zeile; -  page (w); -  werkstueckaufhaenger (spalte, zeile); -  schreibe werkstueck zeilenweise. -  schreibe werkstueck zeilenweise: -    FOR zaehler FROM 1 UPTO aktuelle werkstueckhoehe REP -      positioniere den cursor; -      bastle eine zeile; -      gib eine zeile aus -    PER. -  positioniere den cursor: -    cursor (w, spalte,  zeile + zaehler - 1). - -  bastle eine zeile: -    TEXT VAR zeileninhalt := ""; -    INT VAR z; -    FOR z FROM 1 UPTO aktuelle werkstueckbreite REP -      zeileninhalt CAT code (random (kleinster aktueller zeichencode, -                                     groesster aktueller zeichencode)) -    PER. -  gib eine zeile aus: -    IF inversdarstellung -       THEN out (w, invers (zeileninhalt)) -       ELSE out (w, zeileninhalt) -    FI. -END PROC werkstueck zeigen; -PROC werkstueckaufhaenger (INT VAR spalte, zeile): -  spalte := ((maxspalten - aktuelle werkstueckbreite) DIV 2) + 3; - -  zeile  := ((maxzeilen  - aktuelle werkstueckhoehe ) DIV 2) + 2; -  IF inversdarstellung THEN spalte DECR 1 FI -END PROC werkstueckaufhaenger; -PROC gib zeichenkette aus (WINDOW VAR w, -                           INT CONST kleinster, groesster, markiertes): -  INT VAR zaehler; -  FOR zaehler FROM kleinster UPTO groesster REP -    positioniere cursor in zeichenkette (w, kleinster, zaehler); -    IF zaehler = markiertes -       THEN out (w, invers (code (zaehler))) -       ELSE out (w, code (zaehler)) - -    FI -  PER -END PROC gib zeichenkette aus; -PROC positioniere cursor in zeichenkette (WINDOW VAR w, -                                          INT CONST mincode, position): -  cursor (w, 4 + ((position - mincode) DIV 19) * 5, -             3 + ((position - mincode) MOD 19)) -END PROC positioniere cursor in zeichenkette; -TEXT PROC tastenbezeichnung (TEXT CONST zeichen): -  IF code (zeichen) >= 33 AND code (zeichen) <= 126 -     THEN "<" + zeichen + ">" -     ELSE umgesetzter code -  FI. -  umgesetzter code: - -    SELECT code (zeichen) OF -      CASE   1: anwendungstext (31) -      CASE   2: anwendungstext (32) -      CASE   3: anwendungstext (33) -      CASE   8: anwendungstext (34) -      CASE   9: anwendungstext (35) -      CASE  10: anwendungstext (36) -      CASE  11: anwendungstext (37) -      CASE  12: anwendungstext (38) -      CASE  13: anwendungstext (39) -      CASE  16: anwendungstext (40) -      CASE  27: anwendungstext (41) -      CASE  32: anwendungstext (42) -      CASE 214: anwendungstext (43) - -      CASE 215: anwendungstext (44) -      CASE 216: anwendungstext (45) -      CASE 217: anwendungstext (46) -      CASE 218: anwendungstext (47) -      CASE 219: anwendungstext (48) -      CASE 251: anwendungstext (49) -      OTHERWISE anwendungstext (50) -  END SELECT -END PROC tastenbezeichnung; -INT PROC ermittelter wert (INT CONST minimum, maximum, startwert): -  INT VAR aktueller wert, eingelesener wert; -  cursor an; -  aktueller wert := startwert; -  REP -    gib dreistellig aus und positioniere zurueck (aktueller wert, FALSE); - -    hole position aus vorgabe (oben unten return, eingelesener wert); -    SELECT eingelesener wert OF -      CASE 1: erhoehe aktuellen wert wenn moeglich -      CASE 2: erniedrige aktuellen wert wenn moeglich -    END SELECT -  UNTIL eingelesener wert = 3 PER; -  cursor aus; -  aktueller wert. -  erhoehe aktuellen wert wenn moeglich: -    IF aktueller wert < maximum -       THEN aktueller wert INCR 1 -       ELSE piepse -    FI. -  erniedrige aktuellen wert wenn moeglich: -    IF aktueller wert > minimum - -       THEN aktueller wert DECR 1 -       ELSE piepse -    FI. -END PROC ermittelter wert; -PROC gib dreistellig aus und positioniere zurueck (INT CONST wert, -                                                   BOOL CONST mit wertwandel): -  INT VAR spalte, zeile; get cursor (spalte, zeile); -  IF mit wertwandel -     THEN out ("'" + code (wert) + "'") -     ELSE out (text (wert, 3)) -  FI; -  cursor (spalte, zeile); -END PROC gib dreistellig aus und positioniere zurueck; -PROC hole position aus vorgabe (TEXT CONST vorgabe, INT VAR position): - -  TEXT VAR eingabezeichen; INT VAR spa, zei; -  REP -    get cursor (spa, zei); inchar (eingabezeichen); cursor (spa, zei); -    position := pos (vorgabe, eingabezeichen); -    IF position = 0 THEN piepse; cursor (spa, zei) FI -  UNTIL position > 0 PER -END PROC hole position aus vorgabe; -PROC piepse: -  INT VAR spa, zei; get cursor (spa, zei); out (piep); cursor (spa, zei) -END PROC piepse; -END PACKET ls mp bap 1; -stdvoreinstellung der parameter - - diff --git a/mp-bap/ls-MP BAP 2 b/mp-bap/ls-MP BAP 2 deleted file mode 100644 index 4ae047c..0000000 --- a/mp-bap/ls-MP BAP 2 +++ /dev/null @@ -1,1396 +0,0 @@ -PACKET ls mp bap 2  DEFINES                (*******************************)  -                                           (*                             *)  -  materialpruefung, mp,                    (*         ls-MP BAP 2         *)  -  bildschirmarbeitsplatz, bap,             (*         Version 1.1         *)  -                                           (*                             *)  -  mp bap simulation ausfuehren,            (*   (c) 1987, 1988            *)  -  mp bap auswertung auf bildschirm,        (*       by Eva Latta-Weber    *)  -  mp bap drucken von auswertungen,         (*          Bielefeld          *)  -                                           (*                             *)  -  mp bap protokollumfang festlegen,        (*******************************)  -  mp bap kurzauswertung,  -  -  druckereinstellung fuer protokolldatei,  -  stddruckereinstellung fuer protokolldatei:  -  -  -  -LET maxeintraege             =                    800,  -    protokolldateipraefix    =       "ls-Protokoll: ",  -    menukarte                =  "ls-MENUKARTE:MP-BAP",  -    menubezeichnung          =                  "BAP",  -    auswertdateipostfix      =        " - Auswertung",  -    protokolldateityp        =                   1955,  -    maxspalten               =                     70,  -    maxzeilen                =                     14, -    blank                    =                    " ", -    trenn                    =                    "|", -    werkstueckendekennung    =                      1, -    pausenendekennung        =                      2, -    simulationsendekennung   =                      3, -    markierung ein           =                 ""15"", -    markierung aus           =                " "14"", -    stdschrifttyp            =                     "", - -    stdxstart                =                    0.0, -    stdystart                =                    0.0, -    stdfeldbreite            =                   21.0, -    stdfeldlaenge            =                   29.5; -LET  KONTROLLTABELLE = STRUCT (INT  letzter eintrag, -                                    breite, hoehe, -                                    kleinster code, groesster code, -                                    anzahl aphasen, aphasendauer, -                                    pausendauer, - -                               TEXT datum, uhrzeit, fehlerzeichen, -                                    nach rechts, nach links, -                                    nach oben, nach unten, -                                    ausbesserung, naechstes, -                               BOOL inversdarstellung, -                               ROW  11 REAL bewertung, -                               ROW maxeintraege KONTROLLE tabelle), -     KONTROLLE       = STRUCT (INT  eintragskennung, -                                    produktionsfehler, - -                                    anzahl korrekturen, -                                    anzahl bedienfehler, -                               REAL anfang, ende, differenz), -     WERKSTUECK      = ROW maxspalten ROW maxzeilen INT; -INT  VAR breite, hoehe, kleinster code, groesster code, -         anzahl aphasen, aphasendauer, pausendauer, -         eckspalte, eckzeile, x, y, xsize, ysize; -TEXT VAR fehlerzeichen, nach rechts, nach links, nach oben, nach unten, -         ausbesserung, naechstes, datum, uhrzeit; - -TEXT VAR protokollschrifttyp :: stdschrifttyp; -REAL VAR xstart              :: stdxstart, -         ystart              :: stdystart, -         schreibfeldbreite   :: stdfeldbreite, -         schreibfeldlaenge   :: stdfeldlaenge; -ROW 11 REAL VAR bewertung; -BOOL VAR inversdarstellung, -         kontrolldatei zur vatertask ::  TRUE, -         mit kurzprotokoll           ::  TRUE, -         mit anmerkungen             ::  TRUE, -         auswertung geht zum drucker :: FALSE; -WERKSTUECK VAR werkstueck; - -PROC bildschirmarbeitsplatz: -  kontrolldatei zur vatertask := FALSE; -  install menu (menukarte); -  handle menu  (menubezeichnung); -END PROC bildschirmarbeitsplatz; -PROC bap: -  bildschirmarbeitsplatz -END PROC bap; -PROC materialpruefung: -  TEXT VAR benutzerkennung :: "", protokollname, alter dateiname :: std; -  install menu (menukarte, FALSE); -  kontrolldatei zur vatertask := TRUE; -  ermittle eingestellte parameter; -  bereite den bildschirm vor; -  ermittle die benutzerkennung; -  gib benutzerhinweise aus; - -  arbeitsplatzsimulation ausfuehren (benutzerkennung, protokollname); -  forget (protokollname, quiet); -  last param (alter dateiname). -  bereite den bildschirm vor: -    WINDOW VAR w :: window ( 2, 10, 77, 14); -    page; -    show (w); -    out (w, center (w, anwendungstext (400))). -  ermittle die benutzerkennung: -    benutzerkennung := compress (boxanswer (w, anwendungstext (401), "", 5)); -    IF benutzerkennung = "" -       THEN cursor on; page; -            LEAVE materialpruefung -    FI. - -  gib benutzerhinweise aus: -    boxinfo (w, anwendungstext (402)); -    boxinfo (w, anwendungstext (403)); -    boxinfo (w, anwendungstext (404)); -    gib bedieninformationen aus (2); -    boxinfo (w, anwendungstext (405)); -    boxinfo (w, anwendungstext (406)); -    boxinfo (w, anwendungstext (407)); -    boxinfo (w, anwendungstext (408)). -END PROC materialpruefung; -PROC mp: -  materialpruefung -END PROC mp; -PROC mp bap simulation ausfuehren: -  TEXT VAR benutzerkennung :: "", dateiname; - -  kontrolldatei zur vatertask := FALSE; -  ermittle eingestellte parameter; -  bereite den bildschirm vor; -  ermittle die benutzerkennung; -  arbeitsplatzsimulation ausfuehren (benutzerkennung, dateiname); -  regenerate menuscreen. -  bereite den bildschirm vor: -    WINDOW VAR w :: window (2,2,77,22); -    page; -    out (w, center (w, anwendungstext (399))). -  ermittle die benutzerkennung: -    benutzerkennung := compress (boxanswer (w, anwendungstext (401), "", 5)); -    IF benutzerkennung = "" - -       THEN regenerate menuscreen; -            LEAVE mp bap simulation ausfuehren -    FI. -END PROC mp bap simulation ausfuehren; -PROC mp bap auswertung auf bildschirm: -  auswertung geht zum drucker := FALSE; -  lasse protokolldateien auswaehlen; -  werte protokolldateien aus; -  regenerate menuscreen. -  lasse protokolldateien auswaehlen: -    THESAURUS VAR verfuegbare; -    verfuegbare := infix namen (ALL myself, protokolldateipraefix, -                                            protokolldateityp); - -    IF NOT not empty (verfuegbare) -       THEN noch kein protokoll -       ELSE biete auswahl an -    FI. -  noch kein protokoll: -    regenerate menuscreen; -    menuinfo (anwendungstext (424)); -    LEAVE mp bap auswertung auf bildschirm. -  biete auswahl an: -    verfuegbare := menusome (verfuegbare, anwendungstext (421), -                             anwendungstext (422), FALSE). -  werte protokolldateien aus: -    INT VAR k; -    steige ggf bei leerem thesaurus aus; -    FOR k FROM 1 UPTO highest entry (verfuegbare) REP - -      IF name (verfuegbare, k) <> "" -         THEN disable stop; -              gib hinweis auf auswertung; -              simulationsauswertung (name (verfuegbare, k), TRUE); -              forget (name (verfuegbare, k) + auswertdateipostfix, quiet); -              fehlerbehandlung -      FI -    PER. -  steige ggf bei leerem thesaurus aus: -    IF NOT not empty (verfuegbare) -       THEN regenerate menuscreen; -            menuinfo (anwendungstext (423)); -            LEAVE mp bap auswertung auf bildschirm - -    FI. -  gib hinweis auf auswertung: -    page; -    WINDOW VAR fenster :: window ( 2, 2, 77, 22); -    show (fenster); -    cursor (fenster, 1,  9); out (fenster, center (fenster, name (verfuegbare, k))); -    cursor (fenster, 1, 12); out (fenster, center (anwendungstext (274))). -  fehlerbehandlung: -    IF is error -       THEN regenerate menuscreen; -            menuinfo (invers (errormessage)); -            clear error; enable stop; -            LEAVE mp bap auswertung auf bildschirm -    FI. - -END PROC mp bap auswertung auf bildschirm; -PROC mp bap drucken von auswertungen: -  auswertung geht zum drucker := TRUE; -  lasse protokolldateien auswaehlen; -  werte protokolldateien aus; -  regenerate menuscreen. -  lasse protokolldateien auswaehlen: -    THESAURUS VAR verfuegbare; -    verfuegbare := infix namen (ALL myself, protokolldateipraefix, -                                            protokolldateityp); -    IF NOT not empty (verfuegbare) -       THEN noch kein protokoll -       ELSE biete auswahl an - -    FI. -  noch kein protokoll: -    regenerate menuscreen; -    menuinfo (anwendungstext (424)); -    LEAVE mp bap drucken von auswertungen. -  biete auswahl an: -    verfuegbare := menusome (verfuegbare, anwendungstext (425), -                             anwendungstext (422), FALSE). -  werte protokolldateien aus: -    INT VAR k; -    steige ggf bei leerem thesaurus aus; -    FOR k FROM 1 UPTO highest entry (verfuegbare) REP -      IF name (verfuegbare, k) <> "" -         THEN disable stop; -              gib hinweis auf auswertung; - -              simulationsauswertung (name (verfuegbare, k), FALSE); -              print (name (verfuegbare, k) + auswertdateipostfix); -              forget (name (verfuegbare, k) + auswertdateipostfix, quiet); -              fehlerbehandlung -      FI -    PER. -  steige ggf bei leerem thesaurus aus: -    IF NOT not empty (verfuegbare) -       THEN regenerate menuscreen; -            menuinfo (anwendungstext (423)); -            LEAVE mp bap drucken von auswertungen -    FI. -  gib hinweis auf auswertung: - -    page; -    WINDOW VAR fenster :: window ( 2, 2, 77, 22); -    show (fenster); -    cursor (fenster, 1,  9); out (fenster, center (fenster, name (verfuegbare, k))); -    cursor (fenster, 1, 12); out (fenster, center (anwendungstext (270))). -  fehlerbehandlung: -    IF is error -       THEN regenerate menuscreen; -            menuinfo (invers (errormessage)); -            clear error; enable stop; -            LEAVE mp bap drucken von auswertungen -    FI. -END PROC mp bap drucken von auswertungen; - -PROC mp bap protokollumfang festlegen: -  page; -  zeige aktuellen protokollumfang an; -  gib erlaeuterungen zum protokollumfang; -  frage nach umfangsaenderung; -  regenerate menuscreen -END PROC mp bap protokollumfang festlegen; -PROC mp bap kurzauswertung: -  page; -  zeige aktuelle kurzauswertungseinstellung an; -  gib erlaeuterungen zur kurzauswertung; -  frage nach kurzauswertungsaenderung; -  regenerate menuscreen -END PROC mp bap kurzauswertung; -PROC druckereinstellung fuer protokolldatei (TEXT CONST schrifttyp, - -                                             REAL CONST linker rand, -                                                        oberer rand, -                                                        feldbreite, -                                                        feldlaenge): -  protokollschrifttyp := schrifttyp; -  xstart              := linker rand; -  ystart              := oberer rand; -  schreibfeldbreite   := feldbreite; -  schreibfeldlaenge   := feldlaenge; -END PROC druckereinstellung fuer protokolldatei; - -PROC stddruckereinstellung fuer protokolldatei: -  protokollschrifttyp := stdschrifttyp; -  xstart              := stdxstart; -  ystart              := stdystart; -  schreibfeldbreite   := stdfeldbreite; -  schreibfeldlaenge   := stdfeldlaenge -END PROC stddruckereinstellung fuer protokolldatei; -                 (********************************) -PROC arbeitsplatzsimulation ausfuehren (TEXT CONST kennung, -                                        TEXT VAR   dateiname): -  ermittle eingestellte parameter; - -  lege datei mit kennung an (kennung, dateiname); -  cursor on; -  fuehre simulation durch (dateiname); -  schicke ggf protokolldatei zur vatertask; -  gib ggf kurzprotokoll aus. -  schicke ggf protokolldatei zur vatertask: -    IF kontrolldatei zur vatertask -       THEN command dialogue (FALSE); -            save (dateiname); -            command dialogue (TRUE) -    FI. -  gib ggf kurzprotokoll aus: -    IF mit kurzprotokoll -       THEN kurzauswertung auf bildschirm (dateiname) -       ELSE page; put (anwendungstext (271)) - -    FI. -END PROC arbeitsplatzsimulation ausfuehren; -PROC ermittle eingestellte parameter: -  werkstueckdefinition (breite, hoehe, kleinster code, groesster code, -                        fehlerzeichen, inversdarstellung); -  tastendefinition     (nach rechts, nach links, nach oben, nach unten, -                        ausbesserung, naechstes); -  phasendefinition     (anzahl aphasen, aphasendauer, pausendauer); -  bewertungsschluessel (bewertung); -END PROC ermittle eingestellte parameter; -PROC lege datei mit kennung an (TEXT CONST kennung, TEXT VAR datname): - -  BOUND KONTROLLTABELLE VAR tab; -  TEXT VAR interner name :: protokolldateipraefix; -  interner name CAT kennung; -  lege neue datei an; -  type (old (datname), protokolldateityp). -  lege neue datei an: -    INT VAR i :: 0; TEXT VAR bezeichnung; -    REP -      i INCR 1; -      bezeichnung := interner name + " /" + text (i) -    UNTIL NOT exists (bezeichnung) PER; -    tab := new (bezeichnung); -    initialisiere tabelle; -    datname := bezeichnung. -  initialisiere tabelle: -    tab.letzter eintrag := 0. - -END PROC lege datei mit kennung an; -PROC fuehre simulation durch (TEXT CONST dateiname): -  BOUND KONTROLLTABELLE VAR tab :: old (dateiname); -  TEXT CONST moegliche eingabezeichen :: nach rechts  + nach links + -                                         nach oben    + nach unten + -                                         ausbesserung + naechstes; -  treffe vorbereitungen; -  trage grunddaten in tabelle; -  simuliere. -  treffe vorbereitungen: -     initialisierungen; -     WINDOW VAR fenster :: window (  1,  9, 79, 16); - -     page; -     gib bedieninformationen aus (2); -     werkstueckaufhaenger (eckspalte, eckzeile); -     weise auf arbeitsbeginn hin; -     beginn der arbeitsphase      :=               clock (1); -     beginn der bearbeitung       := beginn der arbeitsphase; -     arbeitsphasenlaenge          := real (aphasendauer * 60). -  initialisierungen: -    INT  VAR eintragzaehler        :: 0, -             arbeitsphasenzaehler  :: 1, -             werkstueckzaehler     :: 0, -             bedienfehlerzaehler   :: 0, - -             korrekturzaehler      :: 0, -             produktionsfehler, -             cursorspalte relativ, -             cursorzeile  relativ; -    REAL VAR beginn der arbeitsphase, -             beginn der bearbeitung, -             arbeitsphasenlaenge, -             arbeitsphasenueberziehung, -             pausenueberziehung. -  weise auf arbeitsbeginn hin: -    page (fenster); -    boxinfo (fenster, anwendungstext (252), 5, maxint); -    clear buffer. -  trage grunddaten in tabelle: -    tab.datum               := date; - -    tab.uhrzeit             := time of day; -    tab.breite              := breite; -    tab.hoehe               := hoehe; -    tab.kleinster code      := kleinster code; -    tab.groesster code      := groesster code; -    tab.anzahl aphasen      := anzahl aphasen; -    tab.aphasendauer        := aphasendauer; -    tab.pausendauer         := pausendauer; -    tab.fehlerzeichen       := fehlerzeichen; -    tab.nach rechts         := nach rechts; -    tab.nach links          := nach links; -    tab.nach oben           := nach oben; - -    tab.nach unten          := nach unten; -    tab.ausbesserung        := ausbesserung; -    tab.naechstes           := naechstes; -    tab.inversdarstellung   := inversdarstellung; -    tab.bewertung           := bewertung; -    eintragzaehler          := 1. -  simuliere: -    REP -      gib holehinweis; -      hole werkstueck  (werkstueck, produktionsfehler); -      zeige werkstueck (werkstueck, fenster); -      lasse werkstueck bearbeiten -    UNTIL simulationsende erreicht PER. -  gib holehinweis: - -    page (fenster); -    cursor (fenster, 2, 3); out (fenster, anwendungstext (253)). -  lasse werkstueck bearbeiten: -    initialisiere den relativcursor; -    setze cursor; -    clear buffer; -    bearbeite das werkstueck. -  initialisiere den relativcursor: -    cursorspalte relativ := 1; -    cursorzeile relativ  := 1. -  setze cursor: -    IF inversdarstellung -       THEN cursor (fenster, eckspalte + cursorspalte relativ, -                             eckzeile  + cursorzeile  relativ - 1); - -       ELSE cursor (fenster, eckspalte + cursorspalte relativ - 1, -                             eckzeile  + cursorzeile  relativ - 1); -    FI. -  bearbeite das werkstueck: -    BOOL VAR werkstueck voll bearbeitet :: FALSE; -    REP -      hole eingabe und werte aus -    UNTIL werkstueck voll bearbeitet PER. -  hole eingabe und werte aus: -    TEXT VAR eingabezeichen := incharety (100); -    SELECT eingabezeichenposition OF -      CASE 1: wenn moeglich nach rechts -      CASE 2: wenn moeglich nach links - -      CASE 3: wenn moeglich nach oben -      CASE 4: wenn moeglich nach unten -      CASE 5: wenn moeglich ausbessern -      CASE 6: beende werkstueckbearbeitung -      OTHERWISE entscheide ob gepiepst wird -    END SELECT. -  eingabezeichenposition: -    pos (moegliche eingabezeichen, eingabezeichen). -  wenn moeglich nach rechts: -    IF cursorspalte relativ < breite -       THEN cursorspalte relativ INCR 1; -            setze cursor -       ELSE registriere bedienfehler -    FI. -  wenn moeglich nach links: - -    IF cursorspalte relativ > 1 -       THEN cursorspalte relativ DECR 1; -            setze cursor -       ELSE registriere bedienfehler -    FI. -  wenn moeglich nach oben: -    IF cursorzeile relativ > 1 -       THEN cursorzeile relativ DECR 1; -            setze cursor -       ELSE registriere bedienfehler -    FI. -  wenn moeglich nach unten: -    IF cursorzeile relativ < hoehe -       THEN cursorzeile relativ INCR 1; -            setze cursor -       ELSE registriere bedienfehler -    FI. - -  wenn moeglich ausbessern: -    IF werkstueck [cursorspalte relativ][cursorzeile relativ] = code (fehlerzeichen) -       THEN werkstueck [cursorspalte relativ][cursorzeile relativ] := code (blank); -            korrekturzaehler INCR 1; -            get cursor (fenster, x, y); -            out (fenster, blank); -            cursor (fenster, x, y); -       ELSE registriere bedienfehler -    FI. -  registriere bedienfehler: -    piepse; bedienfehlerzaehler INCR 1. -  entscheide ob gepiepst wird: -    IF eingabezeichen <> "" THEN piepse FI. - -  beende werkstueckbearbeitung: -    IF   simulationsende erreicht -         THEN trage simulationsende in tabelle ein -    ELIF arbeitsphasenende erreicht -         THEN trage werkstueckdaten in tabelle ein; -              ermittle ueberziehung der arbeitsphase; -              lege eine pause ein -    ELSE trage werkstueckdaten in tabelle ein -    FI; -    werkstueck voll bearbeitet := TRUE. -  lege eine pause ein: -    nimm pausendaten; -    weise auf pausenanfang hin; -    pausiere; -    weise auf pausenende hin; - -    registriere pausenueberziehung. -  nimm pausendaten: -    REAL VAR pausenanfang :: clock (1), -             pausenende   :: pausenanfang + real (pausendauer * 60);. -  weise auf pausenanfang hin: -    page (fenster); -    boxnotice (fenster, anwendungstext (255), 5, x, y, xsize, ysize). -  pausiere: -    REP -      pause (int ((pausenende - clock (1)) * 10.0)) -    UNTIL clock (1) >= pausenende PER. -  weise auf pausenende hin: -    page (fenster); -    pausenanfang := clock (1); -    piepse; - -    clear buffer; -    boxinfo (fenster, anwendungstext (256), 5, maxint); -    pausenende   := clock (1). -  registriere pausenueberziehung: -    pausenueberziehung := pausenende - pausenanfang; -    trage pausenueberziehung in tabelle ein. -  trage werkstueckdaten in tabelle ein: -    REAL VAR bearbeitungsende :: clock (1); -    tab.tabelle [eintragzaehler].eintragskennung    := werkstueckendekennung; -    tab.tabelle [eintragzaehler].produktionsfehler  := produktionsfehler; -    tab.tabelle [eintragzaehler].anzahl korrekturen := korrekturzaehler; - -    tab.tabelle [eintragzaehler].anzahl bedienfehler:= bedienfehlerzaehler; -    tab.tabelle [eintragzaehler].anfang             := beginn der bearbeitung; -    tab.tabelle [eintragzaehler].ende               := bearbeitungsende; -    tab.tabelle [eintragzaehler].differenz          := bearbeitungszeit; -    erhoehe eintragzaehler; -    beginn der bearbeitung := clock (1); -    werkstueckzaehler INCR 1; -    bedienfehlerzaehler := 0; -    korrekturzaehler    := 0. -  trage pausenueberziehung in tabelle ein: - -    tab.tabelle [eintragzaehler].eintragskennung    := pausenendekennung; -    tab.tabelle [eintragzaehler].produktionsfehler  := 0; -    tab.tabelle [eintragzaehler].anzahl korrekturen := 0; -    tab.tabelle [eintragzaehler].anzahl bedienfehler:= 0; -    tab.tabelle [eintragzaehler].anfang             := pausenanfang; -    tab.tabelle [eintragzaehler].ende               := pausenende; -    tab.tabelle [eintragzaehler].differenz          := pausenueberziehung; -    erhoehe eintragzaehler; -    arbeitsphasenzaehler    INCR 1; - -    beginn der bearbeitung  := clock (1); -    beginn der arbeitsphase := clock (1); -    bearbeitungslaenge bestimmen. -  trage simulationsende in tabelle ein: -    bearbeitungsende := clock (1); -    tab.tabelle [eintragzaehler].eintragskennung    := simulationsendekennung; -    tab.tabelle [eintragzaehler].produktionsfehler  := produktionsfehler; -    tab.tabelle [eintragzaehler].anzahl korrekturen := korrekturzaehler; -    tab.tabelle [eintragzaehler].anzahl bedienfehler:= bedienfehlerzaehler; - -    tab.tabelle [eintragzaehler].anfang             := beginn der bearbeitung; -    tab.tabelle [eintragzaehler].ende               := bearbeitungsende; -    tab.tabelle [eintragzaehler].differenz          := bearbeitungszeit; -    tab.letzter eintrag                             := eintragzaehler. -  bearbeitungszeit: -    bearbeitungsende - beginn der bearbeitung. -  erhoehe eintragzaehler: -    IF eintragzaehler < maxeintraege -       THEN eintragzaehler INCR 1 -       ELSE trage simulationsende in tabelle ein; - -            errorstop (anwendungstext (254)) -    FI. -  ermittle ueberziehung der arbeitsphase: -    arbeitsphasenueberziehung := clock (1) - beginn der arbeitsphase -                                           - arbeitsphasenlaenge. -  bearbeitungslaenge bestimmen: -    arbeitsphasenlaenge := real (aphasendauer * 60) -                                - arbeitsphasenueberziehung -                                - pausenueberziehung. -  arbeitsphasenende erreicht: -    clock (1) - beginn der arbeitsphase >= arbeitsphasenlaenge. - -  simulationsende erreicht: -    arbeitsphasenzaehler = anzahl aphasen AND arbeitsphasenende erreicht. -END PROC fuehre simulation durch; -PROC gib bedieninformationen aus (INT CONST zeile): -  WINDOW VAR f1 :: window ( 2, zeile, 35, 6), -             f2 :: window (40, zeile, 39, 6); -  show (f1); show (f2); -  cursor (f1, 2, 1); out (f1, anwendungstext (11)); -                     out (f1, tastenbezeichnung ( nach rechts)); -  cursor (f1, 2, 2); out (f1, anwendungstext (12)); -                     out (f1, tastenbezeichnung ( nach links)); - -  cursor (f1, 2, 3); out (f1, anwendungstext (13)); -                     out (f1, tastenbezeichnung ( nach oben)); -  cursor (f1, 2, 4); out (f1, anwendungstext (14)); -                     out (f1, tastenbezeichnung ( nach unten)); -  cursor (f1, 2, 5); out (f1, anwendungstext (15)); -                     out (f1, tastenbezeichnung ( ausbesserung)); -  cursor (f1, 2, 6); out (f1, anwendungstext (16)); -                     out (f1, tastenbezeichnung ( naechstes)); -  cursor (f2, 2, 1); out (f2, anwendungstext (17)); - -                     out (f2, text (anzahl aphasen, 4)); -  cursor (f2, 2, 2); out (f2, anwendungstext (18)); -                     out (f2, text (aphasendauer,   4)); -                     out (f2, anwendungstext (51)); -  cursor (f2, 2, 3); out (f2, anwendungstext (19)); -                     out (f2, text (pausendauer,    4)); -                     out (f2, anwendungstext (51)); -  cursor (f2, 2, 4); out (f2, anwendungstext ( 5)); -                     out (f2, text (gesamtzeit,      4)); -                     out (f2, anwendungstext (51)); - -  cursor (f2, 2, 6); out (f2, anwendungstext (251)); -                     out (f2, 3 * blank); -                     out (f2, fehlerzeichen). -END PROC gib bedieninformationen aus; -INT PROC gesamtzeit: -  anzahl aphasen * aphasendauer + (anzahl aphasen - 1) * pausendauer -END PROC gesamtzeit; -PROC hole werkstueck (WERKSTUECK VAR w, INT VAR anzahl fehler): -  INT VAR spaltenzaehler, zeilenzaehler; -  anzahl fehler := 0; -  FOR zeilenzaehler FROM 1 UPTO hoehe REP -    ermittle eine zeile -  PER. - -  ermittle eine zeile: -    FOR spaltenzaehler FROM 1 UPTO breite REP -      ermittle eine position; -      ggf fehler registrieren -    PER. -  ermittle eine position: -    w [spaltenzaehler][zeilenzaehler] := zufallscode. -  zufallscode: -    random (kleinster code, groesster code). -  ggf fehler registrieren: -    IF w [spaltenzaehler][zeilenzaehler] = code (fehlerzeichen) -       THEN anzahl fehler INCR 1 -    FI. -END PROC hole werkstueck; -PROC zeige werkstueck (WERKSTUECK CONST w, WINDOW VAR f): - -  INT VAR spaltenzaehler, zeilenzaehler; -  page (f); -  FOR zeilenzaehler FROM 1 UPTO hoehe REP -    zeige eine zeile -  PER. -  zeige eine zeile: -    cursor (f, eckspalte, eckzeile + zeilenzaehler - 1); -    ggf invers einschalten; -    FOR spaltenzaehler FROM 1 UPTO breite REP -      out (f, code (w [spaltenzaehler][zeilenzaehler])) -    PER; -    ggf invers ausschalten. -  ggf invers einschalten: -    IF inversdarstellung THEN out (f, markierung ein) FI. -  ggf invers ausschalten: -    IF inversdarstellung THEN out (f, markierung aus) FI. - -END PROC zeige werkstueck; -PROC kurzauswertung auf bildschirm (TEXT CONST dateiname): -  WINDOW VAR fenster :: window (  2, 10, 77, 13); -  show (fenster); -  clear buffer; -  notiere ueberschrift; -  notiere ergebnis. -  notiere ueberschrift: -    cursor (fenster, 1, 1); -    out (fenster, center (fenster, anwendungstext (275))); -    cursor (fenster, 1, 2); -    out (fenster, center (fenster, anwendungstext (276))). -  notiere ergebnis: -    BOUND KONTROLLTABELLE CONST k := old (dateiname); -    ermittle die simulationsdaten; - -    notiere gesamtzahl werkstuecke; -    notiere zeichengesamtzahl; -    notiere bedienfehler; -    notiere benoetigte zeit; -    notiere gesamtausbesserungsrate; -    notiere gesamtbewertungsfaktor; -    notiere gesamtbewertungszahl mit pausenueberziehung; -    cursor (1, 24); out (anwendungstext (2)); -    pause. -  ermittle die simulationsdaten: -    INT  VAR z, anzahl zeichen pro werkstueck, -             anzahl werkstuecke        ::   0, -             anzahl bedienfehler       ::   0, -             anzahl produktionsfehler  ::   0, - -             anzahl korrekturen        ::   0; -    REAL VAR gesamtzahl zeichen, anteil korrekturen, -             gesamtzeit                :: 0.0, -             pausenueberzug            :: 0.0; -    FOR z FROM 1 UPTO k.letzter eintrag REP -      IF   k.tabelle [z].eintragskennung = werkstueckendekennung -           THEN anzahl werkstuecke       INCR 1; -                anzahl bedienfehler      INCR k.tabelle [z].anzahl bedienfehler; -                anzahl produktionsfehler INCR k.tabelle [z].produktionsfehler; - -                anzahl korrekturen       INCR k.tabelle [z].anzahl korrekturen; -                gesamtzeit               INCR k.tabelle [z].differenz; -      ELIF k.tabelle [z].eintragskennung = pausenendekennung -           THEN pausenueberzug           INCR k.tabelle [z].differenz; -      FI -    PER; -    anzahl zeichen pro werkstueck := k.breite * k.hoehe; -    gesamtzahl zeichen            :=   real (anzahl werkstuecke) -                                     * real (anzahl zeichen pro werkstueck); - -    IF anzahl produktionsfehler = 0 -       THEN anteil korrekturen    := 1.0 -       ELSE anteil korrekturen    :=   real (anzahl korrekturen) -                                     / real (anzahl produktionsfehler) -    FI. -  notiere gesamtzahl werkstuecke: -    cursor (fenster, 12, 4); out (fenster, anwendungstext (277)); -                             out (fenster, text (anzahl werkstuecke, 8)). -  notiere zeichengesamtzahl: -    cursor (fenster, 12, 5); out (fenster, anwendungstext (278)); -                             out (fenster, zahl aus zeichenkette). - -  zahl aus zeichenkette: -    subtext (text (gesamtzahl zeichen, 9, 0), 1, 8). -  notiere bedienfehler: -    cursor (fenster, 12, 6); out (fenster, anwendungstext (279)); -                             out (fenster, text (anzahl bedienfehler, 8)). -  notiere benoetigte zeit: -    cursor (fenster, 12, 7); out (fenster, anwendungstext (280)); -                             out (fenster, text (gesamtzeit,         8, 2)). -  notiere gesamtausbesserungsrate: -    cursor (fenster, 12, 9); out (fenster, anwendungstext (281)); - -                             out (fenster, text (anteil korrekturen, 8, 2)). -  notiere gesamtbewertungsfaktor: -    cursor (fenster, 12,10); out (fenster, anwendungstext (282)); -                             out (fenster, text (bewertungsfaktor, 8, 2)). -  bewertungsfaktor: -    bewertungsmasszahl (anteil korrekturen). -  notiere gesamtbewertungszahl mit pausenueberziehung: -    cursor (fenster, 12, 12); out (fenster, (anwendungstext (283))); -                              out (fenster, text (gesamtwertung,   8, 2)); - -    cursor (fenster, 12, 13); out (fenster, (anwendungstext (284))); -                              out (fenster, 8 * "="). -  gesamtwertung: -    IF gesamtzeit = 0.0 -       THEN 0.0 -       ELSE gesamtzahl zeichen / (gesamtzeit + pausenueberzug) -                               * bewertungsfaktor -    FI. -END PROC kurzauswertung auf bildschirm; -PROC simulationsauswertung (TEXT CONST dateiname, BOOL CONST mit zeigen): -  TEXT CONST auswertdatei :: dateiname + auswertdateipostfix; -  ermittle die kenndaten aus der protokolldatei (dateiname); - -  notiere ueberschrift 1               (auswertdatei); -  notiere die kenndaten der simulation (auswertdatei); -  notiere die werkstueckkenndaten      (auswertdatei); -  notiere ein beispielwerkstueck       (auswertdatei); -  notiere ueberschrift 2               (auswertdatei); -  notiere gesamtergebnisse             (auswertdatei, dateiname); -  notiere ueberschrift 3               (auswertdatei); -  notiere tabellenkopf                 (auswertdatei); -  notiere einzelne werkstueckdaten     (auswertdatei, dateiname); - -  notiere ggf die anmerkungen; -  zeige ggf auswertung auf bildschirm. -  notiere ggf die anmerkungen: -    IF mit anmerkungen -       THEN notiere anmerkungen        (auswertdatei); -    FI. -  zeige ggf auswertung auf bildschirm: -    IF mit zeigen -       THEN cursor on; show (auswertdatei); cursor off -    FI. -END PROC simulationsauswertung; -PROC ermittle die kenndaten aus der protokolldatei (TEXT CONST dateiname): -  BOUND KONTROLLTABELLE CONST k := old (dateiname); -  breite                    := k.breite; - -  hoehe                     := k.hoehe; -  kleinster code            := k.kleinster code; -  groesster code            := k.groesster code; -  fehlerzeichen             := k.fehlerzeichen; -  inversdarstellung         := k.inversdarstellung; -  nach rechts               := k.nach rechts; -  nach links                := k.nach links; -  nach oben                 := k.nach oben; -  nach unten                := k.nach unten; -  ausbesserung              := k.ausbesserung; -  naechstes                 := k.naechstes; - -  anzahl aphasen            := k.anzahl aphasen; -  aphasendauer              := k.aphasendauer; -  pausendauer               := k.pausendauer; -  datum                     := k.datum; -  uhrzeit                   := k.uhrzeit; -  bewertung                 := k.bewertung; -END PROC ermittle die kenndaten aus der protokolldatei; -PROC notiere ueberschrift 1 (TEXT CONST auswertdatei): -  IF exists (auswertdatei) -     THEN forget (auswertdatei, quiet) -  FI; -  FILE VAR f :: sequential file (output, auswertdatei); - -  IF auswertung geht zum drucker -     THEN schreibe druckeranweisungen -  FI; -  putline (f, center (auswertdatei)); -  putline (f, center (length (auswertdatei) * "=")); -  put (f, anwendungstext (272)); put (f, datum); put (f, 26 * blank); -  put (f, anwendungstext (273)); putline (f, uhrzeit); -  line (f); -  putline (f, center (anwendungstext (291))); -  putline (f, center (length (anwendungstext (291)) * "=")). -  schreibe druckeranweisungen: -    write (f, "#type ("""); -    write (f, protokollschrifttyp); - -    write (f, """)##limit ("); -    write (f, text (schreibfeldbreite)); -    write (f, ")##pagelength ("); -    write (f, text (schreibfeldlaenge)); -    write (f, ")##start ("); -    write (f, text (xstart)); -    write (f, ","); -    write (f, text (ystart)); -    write (f, ")#"); line (f). -END PROC notiere ueberschrift 1; -PROC notiere ueberschrift 2 (TEXT CONST auswertdatei): -  FILE VAR f :: sequential file (output, auswertdatei); -  putline (f, center (anwendungstext (285))); -  putline (f, center (length (anwendungstext (285)) * "=")) - -END PROC notiere ueberschrift 2; -PROC notiere ueberschrift 3 (TEXT CONST auswertdatei): -  FILE VAR f :: sequential file (output, auswertdatei); -  line (f, 2); -  putline (f, center (anwendungstext (311))); -  putline (f, center (length (anwendungstext (311)) * "=")); -  line (f) -END PROC notiere ueberschrift 3; -PROC notiere die kenndaten der simulation (TEXT CONST auswertdatei): -  FILE VAR f :: sequential file (output, auswertdatei); -  ROW 6 TEXT VAR ausgabe; -  bestuecke ausgabezeilen; -  schreibe ausgabezeilen. - -  bestuecke ausgabezeilen: -    ausgabe [1] :=   anwendungstext (11) -                   + gleichlang (tastenbezeichnung (nach rechts ), 23) -                   + anwendungstext (17) -                   + text (anzahl aphasen,   4); -    ausgabe [2] :=   anwendungstext (12) -                   + gleichlang (tastenbezeichnung (nach links  ), 23) -                   + anwendungstext (18) -                   + text (aphasendauer,     4) + anwendungstext (51); -    ausgabe [3] :=   anwendungstext (13) - -                   + gleichlang (tastenbezeichnung (nach oben   ), 23) -                   + anwendungstext (19) -                   + text (pausendauer,      4) + anwendungstext (51); -    ausgabe [4] :=   anwendungstext (14) -                   + gleichlang (tastenbezeichnung (nach unten  ), 23) -                   + anwendungstext ( 5) -                   + text (simulationsdauer, 4) + anwendungstext (51); -    ausgabe [5] :=   anwendungstext (15) -                   + gleichlang (tastenbezeichnung (ausbesserung), 23); - -    ausgabe [6] :=   anwendungstext (16) -                   + gleichlang (tastenbezeichnung (naechstes   ), 23) -                   + anwendungstext (251) -                   + (3 * blank) + fehlerzeichen. -  simulationsdauer: -    anzahl aphasen * aphasendauer + (anzahl aphasen - 1) * pausendauer. -  schreibe ausgabezeilen: -    INT VAR i; -    FOR i FROM 1 UPTO 6 REP -      putline (f, ausgabe [i]) -    PER; -    line (f). -END PROC notiere die kenndaten der simulation; -PROC notiere die werkstueckkenndaten (TEXT CONST auswertdatei): - -  FILE VAR f :: sequential file (output, auswertdatei); -  ROW 4 TEXT VAR ausgabe; -  bestuecke ausgabezeilen; -  schreibe ausgabezeilen. -  bestuecke ausgabezeilen: -    ausgabe [1] :=  anwendungstext (292) + text (breite,        4) + -                    anwendungstext (296); -    ausgabe [2] :=  anwendungstext (293) + text (hoehe,          4) + -                    anwendungstext (296); -    ausgabe [3] :=  anwendungstext (294) + text (breite * hoehe, 4) + -                    anwendungstext (296); - -    ausgabe [4] :=  anwendungstext (295) + zeichenumfang. -  zeichenumfang: -    " " + code (kleinster code) + " ... " + code (groesster code) + -    " (" + text (groesster code - kleinster code + 1, 3) + -    anwendungstext (296) + ")". -  schreibe ausgabezeilen: -    INT VAR i; -    FOR i FROM 1 UPTO 4 REP putline (f, ausgabe [i]) PER; -    line (f). -END PROC notiere die werkstueckkenndaten; -PROC notiere ein beispielwerkstueck (TEXT CONST auswertdatei): -  FILE VAR f :: sequential file (output, auswertdatei); - -  WERKSTUECK VAR beispiel; -  INT VAR beispielfehler; -  hole werkstueck (beispiel, beispielfehler); -  notiere ueberschrift; -  notiere werkstueckzeilen; -  notiere werkstueckleerzeilen. -  notiere ueberschrift: -    putline (f, center (anwendungstext (297))); -    putline (f, center (length (anwendungstext (297)) * "-")). -  notiere werkstueckzeilen: -    INT VAR bs, bz; -    FOR bz FROM 1 UPTO hoehe REP -      notiere eine zeile -    PER. -  notiere eine zeile: -    TEXT VAR beispielzeile :: ""; - -    konstruiere beispielzeile; -    gib beispielzeile aus. -  konstruiere beispielzeile: -    beispielzeile CAT (((80 - breite) DIV 2) * blank); -    FOR bs FROM 1 UPTO breite REP -      beispielzeile CAT code (beispiel [bs][bz]) -    PER. -  gib beispielzeile aus: -    putline (f, beispielzeile). -  notiere werkstueckleerzeilen: -    line (f, maxzeilen - hoehe + 1). -END PROC notiere ein beispielwerkstueck; -PROC notiere gesamtergebnisse (TEXT CONST auswertdatei, protokolldatei): -  FILE VAR f :: sequential file (output, auswertdatei); - -  BOUND KONTROLLTABELLE CONST k :: old (protokolldatei); -  ermittle die simulationsdaten; -    notiere gesamtzahl werkstuecke; -    notiere anzahl zeichen pro werkstueck; -    notiere zeichengesamtzahl; -    notiere bedienfehler; -    notiere produktionsfehlerzahl; -    notiere fehlerkorrekturen; -    notiere gesamtzeit mit pausenueberziehung; -    notiere zeichenzahl pro sekunde mit; -    notiere gesamtausbesserungsrate; -    notiere gesamtbewertungsfaktor  mit; -    notiere gesamtbewertungszahl    mit; - -    notiere gesamtzeit ohne pausenueberziehung; -    notiere zeichenzahl pro sekunde ohne; -    notiere gesamtbewertungszahl    ohne. -  ermittle die simulationsdaten: -    INT  VAR z, anzahl zeichen pro werkstueck, -             anzahl werkstuecke        ::   0, -             anzahl bedienfehler       ::   0, -             anzahl produktionsfehler  ::   0, -             anzahl korrekturen        ::   0; -    REAL VAR gesamtzahl zeichen, anteil korrekturen, -             gesamtzeit                :: 0.0, - -             pausenueberzug            :: 0.0; -    FOR z FROM 1 UPTO k.letzter eintrag REP -      IF   k.tabelle [z].eintragskennung = werkstueckendekennung -           THEN anzahl werkstuecke       INCR 1; -                anzahl bedienfehler      INCR k.tabelle [z].anzahl bedienfehler; -                anzahl produktionsfehler INCR k.tabelle [z].produktionsfehler; -                anzahl korrekturen       INCR k.tabelle [z].anzahl korrekturen; -                gesamtzeit               INCR k.tabelle [z].differenz; - -      ELIF k.tabelle [z].eintragskennung = pausenendekennung -           THEN pausenueberzug           INCR k.tabelle [z].differenz; -      FI -    PER; -    anzahl zeichen pro werkstueck := k.breite * k.hoehe; -    gesamtzahl zeichen            :=   real (anzahl werkstuecke) -                                     * real (anzahl zeichen pro werkstueck); -    IF anzahl produktionsfehler = 0 -       THEN anteil korrekturen    := 1.0 -       ELSE anteil korrekturen    :=   real (anzahl korrekturen) - -                                     / real (anzahl produktionsfehler) -    FI. -  notiere gesamtzahl werkstuecke: -    put (f, anwendungstext (277)); putline (f, text (anzahl werkstuecke, 8)). -  notiere anzahl zeichen pro werkstueck: -    put (f, anwendungstext (286)); putline (f, text (breite * hoehe,     8)). -  notiere zeichengesamtzahl: -    put (f, anwendungstext (278)); putline (f, zahl aus zeichenkette); -    line (f). -  zahl aus zeichenkette: -    subtext (text (gesamtzahl zeichen, 9, 0), 1, 8). - -  notiere produktionsfehlerzahl: -    put (f, anwendungstext (287)); putline (f, text (anzahl produktionsfehler, 8)). -  notiere fehlerkorrekturen: -    put (f, anwendungstext (288)); putline (f, text (anzahl korrekturen, 8)). -  notiere bedienfehler: -    put (f, anwendungstext (279)); putline (f, text (anzahl bedienfehler,8)); -    line (f). -  notiere gesamtzeit mit pausenueberziehung: -    put (f, anwendungstext (301)); put (f, text (gesamtzeit mit, 8, 1)); -    putline (f, anwendungstext (300)). - -  gesamtzeit mit: -    gesamtzeit + pausenueberzug. -  notiere zeichenzahl pro sekunde mit: -    put (f, anwendungstext (302)); -    putline (f, text (zeichenpro sec mit, 8, 1)); -    line (f). -  zeichen pro sec mit: -    IF gesamtzeit + pausenueberzug > 0.0 -       THEN gesamtzahl zeichen / (gesamtzeit + pausenueberzug) -       ELSE 0.0 -    FI. -  notiere gesamtausbesserungsrate: -    put (f, anwendungstext (281)); putline (f, text (anteil korrekturen, 8, 1)). -  notiere gesamtbewertungsfaktor mit: - -    put (f, anwendungstext (282)); putline (f, text (bewertungsfaktor, 8, 1)); -    line (f). -  bewertungsfaktor: -    bewertungsmasszahl (anteil korrekturen). -  notiere gesamtbewertungszahl mit: -    put (f, (anwendungstext (283))); putline (f, text (gesamtwertung mit,   8, 1)); -    put (f, (anwendungstext (284))); putline (f, 8 * "="). -  gesamtwertung mit: -    IF gesamtzeit = 0.0 -       THEN 0.0 -       ELSE gesamtzahl zeichen / (gesamtzeit + pausenueberzug) -                               * bewertungsfaktor - -    FI. -  notiere gesamtzeit ohne pausenueberziehung: -    put (f, anwendungstext (303)); put (f, text (gesamtzeit, 8, 1)); -    putline (f, anwendungstext (300)). -  notiere zeichenzahl pro sekunde ohne: -    put (f, anwendungstext (302)); -    putline (f, text (zeichenpro sec ohne, 8, 1)). -  zeichen pro sec ohne: -    IF gesamtzeit > 0.0 -       THEN gesamtzahl zeichen / gesamtzeit -       ELSE 0.0 -    FI. -  notiere gesamtbewertungszahl ohne: -    put (f, (anwendungstext (304))); putline (f, text (gesamtwertung ohne,   8, 1)); - -    put (f, (anwendungstext (284))); putline (f, 8 * "="). -  gesamtwertung ohne: -    IF gesamtzeit = 0.0 -       THEN 0.0 -       ELSE gesamtzahl zeichen / gesamtzeit * bewertungsfaktor -    FI. -END PROC notiere gesamtergebnisse; -PROC notiere tabellenkopf (TEXT CONST auswertdatei): -  FILE VAR f :: sequential file (output, auswertdatei); -  putline (f, anwendungstext (312)); -  putline (f, anwendungstext (313)); -  putline (f, anwendungstext (314)); -  putline (f, anwendungstext (315)); -  putline (f, anwendungstext (316)); - -  putline (f, anwendungstext (317)); -  putline (f, anwendungstext (318)); -END PROC notiere tabellenkopf; -PROC notiere einzelne werkstueckdaten (TEXT CONST auswertdatei, dateiname): -  BOUND KONTROLLTABELLE CONST k :: old (dateiname); -  FILE VAR f :: sequential file (output, auswertdatei); -  INT  VAR zeiger, werkstuecknummer :: 0; -  TEXT VAR ausgabezeile :: ""; -  FOR zeiger FROM 1 UPTO k.letzter eintrag REP -   notiere bearbeitungszeile -  PER. -  notiere bearbeitungszeile: -    IF   k.tabelle [zeiger].eintragskennung = werkstueckendekennung - -         THEN werkstuecknummer INCR 1; -              schreibe werkstueckzeile -    ELIF k.tabelle [zeiger].eintragskennung = pausenendekennung -         THEN schreibe pausenzeile -    ELIF k.tabelle [zeiger].eintragskennung = simulationsendekennung -         THEN werkstuecknummer INCR 1; -              schreibe abschluss -    ELSE putline (f, 75 * "?") -    FI. -  schreibe werkstueckzeile: -    konstruiere ausgabezeile; -    putline (f, ausgabezeile). -  konstruiere ausgabezeile: -    ausgabezeile := ""; - -    ausgabezeile CAT text (werkstuecknummer, 5); -    ausgabezeile CAT 2 * blank; -    ausgabezeile CAT trenn; -    ausgabezeile CAT text (k.tabelle [zeiger].anzahl bedienfehler, 5); -    ausgabezeile CAT 3 * blank; -    ausgabezeile CAT trenn; -    ausgabezeile CAT text (k.tabelle [zeiger].produktionsfehler,   6); -    ausgabezeile CAT 2 * blank; -    ausgabezeile CAT trenn; -    ausgabezeile CAT text (k.tabelle [zeiger].anzahl korrekturen,  6); -    ausgabezeile CAT 2 * blank; -    ausgabezeile CAT trenn; - -    ausgabezeile CAT text (k.tabelle [zeiger].differenz,  6, 1); -    ausgabezeile CAT blank; -    ausgabezeile CAT trenn; -    ausgabezeile CAT text (zeichen pro zeiteinheit,  6, 1); -    ausgabezeile CAT blank; -    ausgabezeile CAT trenn; -    ausgabezeile CAT text (einzelausbesserungsrate,  6, 1); -    ausgabezeile CAT blank; -    ausgabezeile CAT trenn; -    ausgabezeile CAT text (bewertungsmasszahl (einzelausbesserungsrate), 6, 1); -    ausgabezeile CAT blank; -    ausgabezeile CAT trenn; - -    ausgabezeile CAT text (endbewertungszahl, 6, 1); -    ausgabezeile CAT blank. -  zeichen pro zeiteinheit: -    real (breite * hoehe) / k.tabelle [zeiger].differenz. -  einzelausbesserungsrate: -    IF k.tabelle [zeiger].produktionsfehler = 0 -       THEN 0.0 -       ELSE   real (k.tabelle [zeiger].anzahl korrekturen) -            / real (k.tabelle [zeiger].produktionsfehler ) -    FI. -  endbewertungszahl: -    real (breite * hoehe) / k.tabelle [zeiger].differenz -                          * bewertungsmasszahl (einzelausbesserungsrate). - -  schreibe pausenzeile: -    line (f); -    put     (f, anwendungstext (320)); -    put     (f, text (k.tabelle [zeiger].differenz, 6, 1)); -    putline (f, anwendungstext (300)); -    line (f). -  schreibe abschluss: -    putline (f, anwendungstext (318)); -    putline (f, anwendungstext (319)); -    line (f); -    konstruiere ausgabezeile; -    ausgabezeile := "(" + -                    subtext (ausgabezeile, 2, length (ausgabezeile) - 1) + -                    ")"; -    putline (f, ausgabezeile). - -END PROC notiere einzelne werkstueckdaten; -PROC notiere anmerkungen (TEXT CONST auswertdatei): -  FILE VAR f :: sequential file (output, auswertdatei); -  line (f); -  schreibe kopf; -  schreibe hinweis auf letztes werkstueck; -  schreibe hinweis auf bedienfehler; -  erlaeutere bewertungsschluessel; -  stelle bewertungsschluessel graphisch dar; -  schreibe rest. -  schreibe kopf: -    putline (f, center (anwendungstext (325))); -    putline (f, center (length (anwendungstext (325)) * "=")); -    line (f). - -  schreibe hinweis auf letztes werkstueck: -    INT VAR i; -    FOR i FROM 326 UPTO 337 REP -      putline (f, anwendungstext (i)) -    PER; -    line (f). -  schreibe hinweis auf bedienfehler: -    FOR i FROM 339 UPTO 341 REP -      putline (f, anwendungstext (i)) -    PER; -    line (f). -  erlaeutere bewertungsschluessel: -    FOR i FROM 343 UPTO 372 REP -      putline (f, anwendungstext (i)) -    PER. -  stelle bewertungsschluessel graphisch dar: -    putline (f, anwendungstext (374)); -    putline (f, anwendungstext (375)); - -    ermittle die startposition; -    zeichne diagramm; -    trage werte ein. -  ermittle die startposition: -    modify (f); -    INT VAR zeilenpos :: lines (f) + 2, spaltenpos :: 18. -  zeichne diagramm: -    cursor (f, spaltenpos, zeilenpos     , anwendungstext (20)); -    cursor (f, spaltenpos, zeilenpos +  1, anwendungstext (21)); -    cursor (f, spaltenpos, zeilenpos +  3, anwendungstext (23)); -    cursor (f, spaltenpos, zeilenpos +  4, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos +  5, anwendungstext (22)); - -    cursor (f, spaltenpos, zeilenpos +  6, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos +  7, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos +  8, anwendungstext (24)); -    cursor (f, spaltenpos, zeilenpos +  9, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos + 10, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos + 11, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos + 12, anwendungstext (22)); -    cursor (f, spaltenpos, zeilenpos + 13, anwendungstext (25)); - -    cursor (f, spaltenpos, zeilenpos + 14, anwendungstext (26)); -    cursor (f, spaltenpos, zeilenpos + 15, anwendungstext (27)). -  trage werte ein: -    zeilenpos INCR 13; -    INT VAR bwzeiger; -    FOR bwzeiger FROM 1 UPTO 11 REP -      cursor (f, spaltenpos + 3 * bwzeiger, zeilenpos - konkreter wert, "+") -    PER. -  konkreter wert: -    int (bewertung [bwzeiger] * 10.0). -  schreibe rest: -    output (f); -    line (f, 2); -    FOR i FROM 377 UPTO 387 REP -      putline (f, anwendungstext (i)) - -    PER; -    haenge an jede zeile ein blank an. -  haenge an jede zeile ein blank an: -    TEXT VAR inhalt; -    INT  VAR zeilenzeiger; -    modify (f); -    FOR zeilenzeiger FROM 1 UPTO lines (f) REP -      to line (f, zeilenzeiger); -      read record (f, inhalt); -      inhalt CAT blank; -      write record (f, inhalt) -    PER; -    to line (f,1). -END PROC notiere anmerkungen; -PROC cursor (FILE VAR f, INT CONST spa, zei, TEXT CONST text): -  positioniere an zeile; -  positioniere an spalte; - -  gib text an position aus. -  positioniere an zeile: -    IF zeile noch nicht vorhanden -       THEN schaffe zeile und gehe dorthin -       ELSE to line (f,zei) -    FI. -  zeile noch nicht vorhanden: -    zei > lines (f). -  schaffe zeile und gehe dorthin: -    INT VAR zaehler 1; -    IF lines (f) = 0 -       THEN to line (f,lines (f)); -            insert record (f); -    FI; -    FOR zaehler 1 FROM lines (f)  UPTO zei REP -      to line (f,lines (f)); -      down (f);insert record (f) -    PER; - -    to line(f,zei). -  positioniere an spalte: -    TEXT VAR alter satz :: "", neuer satz :: "", restsatz ::""; -    INT VAR satzlaenge; -    read record (f,alter satz); -    satzlaenge := length (alter satz); -    IF satzlaenge = 0 -       THEN neuer satz CAT (spa -1) * " " -    ELIF satzlaenge >= spa -       THEN neuer satz := subtext(alter satz,1,spa-1); -            restsatz   := subtext(alter satz, spa + length (text)); -       ELSE neuer satz := alter satz; -            neuer satz CAT (spa - satzlaenge - 1) * " " - -    FI. -  gib text an position aus: -   neuer satz CAT text; -   IF restsatz <> "" -      THEN neuer satz CAT restsatz -   FI; -   write record(f,neuer satz). - END PROC cursor; -TEXT PROC gleichlang (TEXT CONST text, INT CONST laenge): -  TEXT VAR intern :: compress (text); -  INT  VAR anzahl :: laenge - length (intern); -  IF anzahl < 0 -     THEN subtext (intern, 1, laenge) -     ELSE intern + (anzahl * blank) -  FI -END PROC gleichlang; -REAL PROC bewertungsmasszahl (REAL CONST wert): -  REAL VAR interner wert := round (wert, 1); - -  IF interner wert > wert -     THEN interner wert DECR 0.1 -  FI; -  interpoliere. -  interpoliere: -    REAL VAR unterer wert, oberer wert; -    unterer wert := interner wert; -    IF unterer wert = 1.0 -       THEN oberer wert := 1.0 -       ELSE oberer  wert := unterer wert + 0.1 -    FI; -    unterer wert := bewertung (int (unterer wert * 10.0) + 1); -    oberer  wert := bewertung (int (oberer  wert * 10.0) + 1); -    unterer wert + (oberer wert - unterer wert) * faktor. -  faktor: -    frac (wert * 10.0). - -END PROC bewertungsmasszahl; -PROC zeige aktuellen protokollumfang an: -  WINDOW VAR w :: window (2, 2, 34,  5); -  show (w); -  cursor (w, 1, 1); out (w, center (w, invers (anwendungstext (431)))); -  IF mit anmerkungen -     THEN cursor (w, 2, 4); out (w, anwendungstext (432)) -     ELSE cursor (w, 2, 4); out (w, anwendungstext (433)); -  FI. -END PROC zeige aktuellen protokollumfang an; -PROC gib erlaeuterungen zum protokollumfang: -  WINDOW VAR f :: window ( 2, 9, 77, 15); -  show (f); -  cursor (f, 1, 1); out (f, center (f, invers (anwendungstext (434)))); - -  cursor (f, 5, 3); out (f, anwendungstext (435)); -  cursor (f, 5, 4); out (f, anwendungstext (436)); -  cursor (f, 5, 5); out (f, anwendungstext (437)); -  cursor (f, 5, 6); out (f, anwendungstext (438)); -  cursor (f, 5, 8); out (f, anwendungstext (439)); -  cursor (f, 5, 9); out (f, anwendungstext (440)); -  cursor (f, 5,10); out (f, anwendungstext (441)); -  cursor (f, 5,11); out (f, anwendungstext (442)); -  cursor (f, 5,13); out (f, anwendungstext (443)); -  cursor (f, 5,14); out (f, anwendungstext (444)); - -END PROC gib erlaeuterungen zum protokollumfang; -PROC frage nach umfangsaenderung: -  WINDOW VAR fenster :: window (38, 2, 41, 5); -  show (fenster); -  cursor (fenster, 1, 1); out (fenster, center (fenster, invers (anwendungstext (451)))); -  cursor (fenster, 4, 3); out (fenster, anwendungstext (452)); -  cursor (fenster, 4, 4); -  IF yes (fenster, anwendungstext (453)) -     THEN  mit anmerkungen := NOT mit anmerkungen -  FI. -END PROC frage nach umfangsaenderung; -PROC zeige aktuelle kurzauswertungseinstellung an: - -  WINDOW VAR w :: window ( 2, 2, 34,  5); -  show (w); -  cursor (w, 1, 1); out (w, center (w, invers (anwendungstext (431)))); -  IF mit kurzprotokoll -     THEN cursor (w, 7, 4); out (w, anwendungstext (461)); -     ELSE cursor (w, 7, 4); out (w, anwendungstext (462)); -  FI. -END PROC zeige aktuelle kurzauswertungseinstellung an; -PROC gib erlaeuterungen zur kurzauswertung: -  WINDOW VAR f :: window ( 2, 9, 77, 15); -  show (f); -  cursor (f, 1, 1); out (f, center (f, invers (anwendungstext (463)))); - -  cursor (f, 5, 3); out (f, anwendungstext (464)); -  cursor (f, 5, 4); out (f, anwendungstext (465)); -  cursor (f, 5, 5); out (f, anwendungstext (466)); -  cursor (f, 5, 6); out (f, anwendungstext (467)); -  cursor (f, 5, 8); out (f, anwendungstext (468)); -  cursor (f, 5, 9); out (f, anwendungstext (469)); -  cursor (f, 5,10); out (f, anwendungstext (470)); -  cursor (f, 5,11); out (f, anwendungstext (471)); -  cursor (f, 5,13); out (f, anwendungstext (472)); -  cursor (f, 5,14); out (f, anwendungstext (473)); - -END PROC gib erlaeuterungen zur kurzauswertung; -PROC frage nach kurzauswertungsaenderung: -  WINDOW VAR fenster :: window (38, 2, 41, 5); -  show (fenster); -  cursor (fenster, 1, 1); out (fenster, center (fenster, invers (anwendungstext (481)))); -  cursor (fenster, 5, 3); out (fenster, anwendungstext (482)); -  cursor (fenster, 5, 4); -  IF yes (fenster, anwendungstext (483)) -     THEN  mit kurzprotokoll := NOT mit kurzprotokoll -  FI. -END PROC frage nach kurzauswertungsaenderung; -END PACKET ls mp bap 2; - - diff --git a/mp-bap/ls-MP BAP-gen b/mp-bap/ls-MP BAP-gen deleted file mode 100644 index 40df0b4..0000000 --- a/mp-bap/ls-MP BAP-gen +++ /dev/null @@ -1,100 +0,0 @@ -                                             (*****************************)  -                                             (*                           *)  -                                             (*         ls-MP BAP         *)  -                                             (*     GENERATORPROGRAMM     *)  -                                             (*                           *)  -                                             (* (c) 1987  (01.09.87)      *)  -                                             (*     by Eva Latta          *)  -                                             (*        Bielefeld          *)  -                                             (*****************************)  -LET mm taskname   = "ls-MENUKARTEN",  -    eigener name  = "ls-MP BAP/gen",  -    datei1        = "ls-MP BAP 1",  -    datei2        = "ls-MP BAP 2",  -    menukarte     = "ls-MENUKARTE:MP-BAP";  -  -PROC stelle existenz des mm sicher:  -  cursor (1, 5); out (""4"");  -  IF NOT exists (task (mm taskname))  -     THEN errorstop ("Unbedingt erst den 'MENUKARTEN MANAGER' generieren!");  -  FI  -END PROC stelle existenz des mm sicher;  -  -PROC vom archiv (TEXT CONST datei):  -  cursor (1,5); out (""4"");  -  out ("  """); out (datei); putline (""" wird geholt."); -  fetch (datei, archive) -END PROC vom archiv; -PROC hole (TEXT CONST datei): -  IF NOT exists (datei) THEN vom archiv (datei) FI -END PROC hole; -PROC in (TEXT CONST datei): -  hole (datei); -  cursor (1, 5); out (""4""); -  out ("  """); out (datei); out (""" wird übersetzt: "); -  insert (datei); -  forget (datei, quiet); -END PROC in; -PROC schicke (TEXT CONST datei): -  cursor (1, 5); out (""4""); -  out ("  """); out(datei); -  out (""" wird zum MENUKARTEN-MANAGER geschickt!"); - -  command dialogue (FALSE); -  save (datei, task (mm taskname)); -  command dialogue (TRUE); -  forget (datei, quiet) -END PROC schicke; -INT VAR size, used; -BOOL VAR einzeln; -storage (size, used); -einzeln := size - used < 500; -forget (eigener name, quiet); -wirf kopfzeile aus; -stelle existenz des mm sicher; -hole die dateien; -insertiere die dateien; -mache global manager aus der task. -wirf kopfzeile aus: -  page; -  putline ("                  "15"ls-MP BAP  -  Automatische Generierung "14""). - -hole die dateien: -  IF     NOT exists (datei 1) -     COR NOT exists (datei 2) -     COR NOT exists (menukarte) -     THEN hole dateien vom archiv; LEAVE hole die dateien -  FI. -hole dateien vom archiv: -  cursor (1,3); out (""4""); -  IF yes ("Ist das Archiv angemeldet und die Diskette eingelegt") -     THEN lese ein -     ELSE line (2); -          errorstop ("Ohne die Diskette kann ich das System nicht generieren!") -  FI. -lese ein: -  cursor (1, 3); out (""4""); -  out ("                   "15"Bitte die Diskette eingelegt lassen! "14""); - -  IF NOT einzeln -     THEN  hole (datei 1); -           hole (datei 2); -           hole (menukarte); -           cursor (1, 3); out(""4""); -           out ("                  "15"Die Diskette wird nicht mehr benötigt! "14""); -           release (archive) -  FI. -insertiere die dateien: -  check off; -  cursor (1, 3); out(""4""); -  out ("                  "15"Die Diskette wird nicht mehr benötigt! "14""); -  in (datei 1); -  in (datei 2); -  schicke (menukarte); -  IF einzeln THEN release (archive) FI; - -  check on. -mache global manager aus der task: -  global manager. - - | 
