Als bereits existierende Ausgabedatei steht die ISAM-Datei PERSONAL mit den folgenden Eigenschaften zur Verfügung:
RECORD-FORMAT = FIXED RECORD-SIZE = 60
KEY-POSITION = 1 KEY-LENGTH = 4
Inhalt der Datei PERSONAL vor dem PERCON-Lauf:
Spalte 1-4 5-17 18-29 30-34 35-39 41-60 Pers.-Nr. Name Vorname Abt. Gehalt Ort 0005 MUELLER HUBERT A 06500 MUENCHEN 0008 BREMER KARIN B1 04800 FREISING 0012 ILTENAU OTTO A23 03450 ULM 0015 ALBERTUS ILONA B12 02880 MUENCHEN 0023 BERGER ALBERT A1 04250 NUERNBERG 0036 BOETTGE BAERBEL K2 04300 WUERZBURG
In einem Aktualisierungslauf sollen Gehalts- und Ortsveränderungen in die Datei eingearbeitet werden. Die Änderungsdaten befinden sich in der Datei PERS.UPDATE. Mit einem dreistelligen Kennzeichen wird festgelegt, welches Feld aktualisiert werden soll. Über die Personalnummer (Schlüsselfeld) wird die Beziehung zwischen Ein- und Ausgabesätzen hergestellt:
Aufbau der Änderungssätze (variables Satzformat):
Spalte 5-7 8-11 12 - max. 31 Kennz. Pers.-Nr. Änderungsdaten (abhängig vom Kennzeichen) ORT 0015 REGENSBURG Änderung des Ortes GEH 0008 05300 Gehalts-Änderung ORT 0011 STUTTGART Änderung des Ortes, aber Pers.-Nr. nicht vorhanden
PERCON-Anweisungen:
/ADD-FILE-LINK LINK-NAME=PCOUT1 ,FILE-NAME=PERSONAL ,OPEN-MODE=*INOUT &* (1) /ADD-FILE-LINK LINK-NAME=PCOUT2 ,FILE-NAME=PERSONAL ,OPEN-MODE=*INOUT /START-PERCON &* —————————————————————————————————————————————————————— (2) //ASSIGN-INPUT-FILE FILE=*DISK-FILE(NAME=PERS.UPDATE) &* —————————————— (3) //ASSIGN-OUTPUT-FILE LINK-NAME=PCOUT1 &* —————————————————————————————— (4) //ASSIGN-OUTPUT-FILE LINK-NAME=PCOUT2 //SELECT-INPUT-RECORDS - &* ——————————————————————————————————————————— (5) // CONDITION=((5,3)='GEH') ,OUTPUT-LINK-NAME=PCOUT1 //SELECT-INPUT-RECORDS - &* ——————————————————————————————————————————— (6) // CONDITION=((5,3)='ORT') ,OUTPUT-LINK-NAME=PCOUT2 //SET-RECORD-MAPPING - &* ————————————————————————————————————————————— (7) // OUTPUT-LINK-NAME=PCOUT1,- // FILLER=*OUTPUT(- // KEY-NAME=*PRIMARY,- // KEY-VALUE=*BY-INPUT-RECORD(KEY-POSITION=8)),- // OUTPUT-FIELDS=*FIELD(- // INPUT-POSITION=12,- // INPUT-LENGTH=5,- // INPUT-FORMAT=*ZONED-DECIMAL,- // OUTPUT-POSITION=35) //SET-RECORD-MAPPING - &* ————————————————————————————————————————————— (8) // OUTPUT-LINK-NAME=PCOUT2,- // FILLER=*OUTPUT(- // KEY-NAME=*PRIMARY,- // KEY-VALUE=*BY-INPUT-RECORD(KEY-POSITION=8)),- // OUTPUT-FIELDS=*FIELD(- // INPUT-POSITION=12,- // INPUT-LENGTH=*RECORD-LENGTH(REDUCTION=7),- // OUTPUT-POSITION=41,- // OUTPUT-LENGTH=20) //END &* —————————————————————————————————————————————————————————————— (9) % PER0054 WARNING: KEY '0011' MISSING IN FILE ':2OS6:$WKST.PERSONAL', LINK='PCOUT2' % PER0030 NUMBER OF PROCESSED RECORDS FOR LINK='PCIN' (FILE=:2OS6:$WKST.PERS.UPDATE): 3 % PER0030 NUMBER OF PROCESSED RECORDS FOR LINK='PCOUT1' (FILE=:2OS6:$WKST.PERSONAL): 1 % PER0030 NUMBER OF PROCESSED RECORDS FOR LINK='PCOUT2' (FILE=:2OS6:$WKST.PERSONAL): 1 % PER0031 PERCON TERMINATED NORMALLY
(1) | Bei ISAM-Dateien können für dieselbe Ausgabedatei mehrere ADD-FILE-LINK-Kommandos mit dem Eröffnungsmodus OPEN-MODE=*INOUT und verschiedenen Dateikettungsnamen abgesetzt werden. Über diese Dateikettungsnamen werden dann unterschiedliche PERCON-Anweisungen zugeordnet. Hinweis Wenn FILLER=*OUTPUT in der Anweisung SET-RECORD-MAPPING angegeben wird, werden die betroffenen Ausgabedateien immer mit OPEN-MO-DE=*INOUT eröffnet, d.h. die Angabe in /ADD-FILE-LINK ist nicht unbedingt erforderlich. |
(2) | PERCON wird gestartet. |
(3) | Die Eingabedatei PERS.UPDATE mit den Aktualisierungsdaten wird zugewiesen. |
(4) | Die Ausgabedatei wird mit ihren Dateikettungsnamen mehrfach zugewiesen. |
(5) | Mit dieser Anweisung werden aus der Eingabedatei die Sätze selektiert, die mit dem Kennzeichen GEH eine Änderung des Feldes „Gehalt“ bewirken sollen. Über den LINK-Namen PCOUT1 wird die Verbindung zur Anweisung SET-RECORD-MAPPING, die das Feld „Gehalt“ ändert, hergestellt. |
(6) | Mit dieser Anweisung werden aus der Eingabedatei die Sätze selektiert, die mit dem Kennzeichen ORT eine Änderung des Feldes „Ort“ bewirken sollen. Über den LINK-Namen PCOUT2 wird die Verbindung zur Anweisung SET-RECORD-MAPPING, die das Feld „Ort“ ändert, hergestellt. |
(7) | Diese Anweisung bewirkt, dass ein Satz der Ausgabedatei zur Vorbelegung des Ausgabebereiches benutzt wird. Die Auswahl des Satzes erfolgt über das im Änderungssatz enthaltene Feld „Pers.-Nr.“. Die eigentlichen Änderungsdaten sind in das Feld „Gehalt“ des Ausgabesatzes zu übertragen. |
(8) | Diese Anweisung bewirkt, dass ein Satz der Ausgabedatei zur Vorbelegung des Ausgabebereiches benutzt wird. Die Auswahl des Satzes erfolgt über das im Änderungssatz enthaltene Feld „Pers.-Nr.“. Die eigentlichen Änderungsdaten sind in das Feld „Ort“ des Ausgabesatzes zu übertragen. |
(9) | Die END-Anweisung startet den Übertragungsvorgang und beendet PERCON. |
Inhalt der Datei PERSONAL nach einem PERCON-Lauf mit obigen Anweisungen:
Geändert wurden die zwei Sätze mit den Personal-Nummern 0008 und 0015.
Spalte 1-4 5-17 18-29 30-34 35-39 41-60 Pers.-Nr. Name Vorname Abt. Gehalt Ort 0005 MUELLER HUBERT A 06500 MUENCHEN 0008 BREMER KARIN B1 05300 FREISING —————————————— (10) 0012 ILTENAU OTTO A23 03450 ULM 0015 ALBERTUS ILONA B12 02880 REGENSBURG ———————————— (11) 0023 BERGER ALBERT A1 04250 NUERNBERG 0036 BOETTGE BAERBEL K2 04300 WUERZBURG
(10) | In diesem Satz wurde das Feld „Gehalt“ geändert. |
(11) | In diesem Satz wurde das Feld „Ort“ geändert. |
In der Datei PERSONAL fehlt der Satz mit der Pers.-Nr. 0011. Deshalb wird bei der Verarbeitung des entsprechenden Änderungssatzes die Meldung PER0054 ausgegeben.