-
Die
vorliegende Erfindung betrifft ein Verfahren zum automatischen Umsetzen
von Daten, die in einem bestimmten Laufzeitcodierungssystem erzeugt
wurden, für
die Verarbeitung in einem anderen Laufzeitcodierungsverfahren.
-
Viele
Client-/Serveranwendungen tauschen Daten zwischen verschiedenen
Plattformen aus und nutzen sie gemeinsam. Dabei können die
Plattformen verschiedene Codeseiten verwenden, was sich entweder
auf unterschiedliche Codierungssysteme (ASCII, EBCDIC, UNICODE)
oder auf Einstellungen für
nationale Sprachen zurückführen lässt. ASCII steht
für American
Standard Code for Information Interchance. Dabei handelt es sich
um einen Code, bei dem jedes alphanumerische Zeichen für den Computer
als 8-Bit-Binärcode
dargestellt wird. ASCII wird von den meisten Mikrocomputern und
Druckern sowie im Internet verwendet und ermöglicht so die einfache Übertragung
von Textdateien zwischen verschiedenen Computertypen. Zur Darstellung
der nationalen Zeichensätze
wird ein anderer Satz von ASCII-Codeseiten verwendet.
-
EBCDIC
steht für
Extended Binary Coded Decimal Interchange Code. Dabei handelt es
sich um einen 8-Bit-Binärcode
für größere IBM
Computer, bei dem jedes Byte für
ein alphanumerisches Zeichen steht. Zur Darstellung nationaler Zeichensätze wurden
EBCDIC-Codeseiten definiert.
-
Unicode
steht für
einen Zeichensatz, der 16 Bit (zwei Byte) für jedes Zeichen verwendet und
daher mehr Zeichen umfassen kann als ASCII oder EBCDIC. Unicode
kann 65 536 Zeichen umfassen und so zur Codierung nahezu aller Sprachen
weltweit verwendet werden. Unicode enthält den ASCII-Zeichensatz.
-
Derzeit
ist die Erkennung und Verwaltung verschiedener Codeseiten Aufgabe
der Anwendung. Anwendungen, die für eine Plattform (z. B. UNIX
mit ASCII-Zeichensatz) entwickelt wurden, können nicht ohne weiteres so
erweitert werden, dass sie in einer heterogenen Umgebung ausgeführt werden
und Daten gemeinsam nutzen können
(z. B. AIX/6000 mit ASCII + OS/390 UNIX mit EBCDIC). Die Unterstützung einer
heterogenen Umgebungen geht weit über das Portieren der Anwendung
hinaus.
-
Außerdem sind
viele Anwendungen an ein bestimmtes Codierungssystem (z. B. ASCII)
gebunden, während
die vom Betriebssystem bereitgestellten Dienstprogramme erfordern,
dass die Dateien Daten nach dem jeweiligen rechnereigenen Codierungssystem
enthalten (so erwartet OS/390 UNIX System Services z. B. EBCDIC-Dateien).
-
Die
Portierung von Anwendungen von einer ASCII-basierten Plattform auf
eine EBCDIC-basierte Plattform wie beispielsweise OS/390 beinhaltet
häufig
eine zeitraubende Analyse sämtlicher
Zeichensatzcodierungen, die in dem Programm selbst sowie in Daten
verwendet werden, die vom Benutzer oder einer Datei an das Programm übergeben
wurden. Für Daten,
die von einer Datei an eine Anwendung übergeben wurden, sind Verfahren
erforderlich, mit denen erkannt werden kann, ob die Datei codierte
Zeichen enthält
und, wenn dies der Fall ist, welcher codierte Zeichensatz verwendet
wurde.
-
Die
US-Patentschrift 5 784 544 beschreibt eine
Datentyp-Erkennungseinrichtung
für die
Ermittlung des Datentyps eines eingehenden Datenstroms. Die Zeichen
des Datenstroms werden zunächst
daraufhin überprüft, ob es
sich um gültige
Zeichen eines bestimmten Datentyps handelt (z. B. EBCDIC). Die gültigen Zeichen
werden gezählt.
Danach wird ein anderer Datentyp (z. B. ASCII) für den Datenstrom angenommen,
und die Zeichen des Datenstroms werden von diesem Datentyp in den
ersten Datentyp umgesetzt. Nach der Umsetzung wird der gleiche Test
auf gültige
Zeichen durchgeführt
und ein weiterer Zählwert
erhalten. Anschließend
werden die beiden Werte miteinander verglichen, um den Datentyp des
Datenstroms zu ermitteln.
-
Diese
Annahmemethode kann folgende Probleme verursachen: Die Annahme kann
falsch sein, was zu einer fehlerhaften Umsetzung führt. Dies
ist nicht weiter von Bedeutung, wenn die Daten einer Person vorgelegt
werden, die ihre Korrektheit feststellen kann. Wenn die Daten beispielsweise
fehlerhaft angezeigt oder gedruckt werden, ergibt sich aus einer
inkorrekten Umsetzung eine unleserliche Darstellung, die einfach
erkannt werden kann. Das Drucken wird in diesem Patent daher auch
als Anwendungsbeispiel bezeichnet. Die Annahmemethode ist nicht
akzeptabel, wenn relevante Geschäftsdaten von
einem anderen Programm verarbeitet werden sollen, da dies zu Datenverlust
oder Datenfehlern führen
könnte.
Darüber
hinaus lässt
sich die Annahmemethode nur anwenden, wenn die Sprache bzw. Sprachfamilie
(z. B. Latin1 = westeuropäische
Sprachen) bekannt ist. Das beschriebene Verfahren ist nicht anwendbar,
um zwischen verschiedenen Codeseiten ein und desselben Codierungssystems
zu unterscheiden, z. B. zwischen EBCDIC französisch und EBCDIC tschechisch.
Schließlich
erfordert die Annahmemethode, dass eine angemessene Datenmenge für die Überprüfung zur
Verfügung
steht. Einige Ausführungen überprüfen die
ersten 256 Zeichen, bevor sie eine Entscheidung treffen. Wenn lediglich einige
wenige Zeichen verfügbar
sind, kann das Verfahren versagen. Zur Leistungsfähigkeit
lässt sich feststellen,
dass das Verfahren einen gewissen Verarbeitungsmehraufwand verursacht,
da vor der Verarbeitung eine angemessene Datenmenge überprüft werden
muss.
-
Aufgabe
der vorliegenden Erfindung besteht daher in einem Verfahren zum
automatischen Umsetzen von Daten, die in einem bestimmten Laufzeitcodierungssystem
erzeugt wurden, für
die Verarbeitung in einem anderen Laufzeitcodierungssystem.
-
Diese
Aufgabe wird durch die Merkmale im Anspruch 1 erfüllt. Weitere
bevorzugte Ausführungsformen
der vorliegenden Erfindung sind in den Unteransprüchen niedergelegt.
-
Die
vorliegende Erfindung stellt Einrichtungen für die Kennzeichnung von Dateien
oder Daten mit einer Dateikennzeichnung (TAGINFO) bereit, die eine
Kennung für Textinformationen
(TXTFLAG) und ein Attribut (CCSID) für die Kennzeichnung von Codierungssystemen
enthält.
Außerdem
wird einem Prozess ein Laufzeitattribut (Prozess-CCSID) zugewiesen,
welches das Laufzeitcodierungssystem festlegt. Eine Umsetzung erfolgt
automatisch durch eine automatische Umsetzungsfunktion, sofern beide CCSID
eine Umsetzung zulassen. Dateien ohne Dateikennzeichnung werden
unter Verwendung heuristischer Regeln, mit denen ermittelt wird,
ob die Daten oder die Datei Text- oder Binärinformationen enthalten/enthält, durch
eine Funktion AUTOTAG mit einer virtuellen Dateikennzeichnung (Standardkennzeichnung)
gekennzeichnet. Ältere
Anwendungen müssen wie
bisher mit nicht gekennzeichneten Dateien arbeiten. Bestehende Anwendungen
sollten in der Lage sein, die automatische Umsetzung zu nutzen und
damit neue, gekennzeichnete Dateien ohne Codeanpassungen zu verarbeiten.
Diese Erfindung ermöglicht
die physische Speicherung von Daten in der Prozesscodeseite der
Anwendung, wobei Umsetzungen auf dem stark genutzten Pfad vermieden
werden, während
die Dateikennzeichnung und automatische Umsetzung andere Programme,
die mit einer anderen Codeseite arbeiten, nicht am Zugriff auf die
Daten hindert.
-
Die
vorliegende Erfindung wird ausführlicher mit
Blick auf die bevorzugten Ausführungsformen und
Figuren beschrieben, wobei
-
1 eine
typische Datenübertragungsarchitektur
in einem Hostsystem zeigt, in dem die vorliegenden Erfindung realisiert
sein kann;
-
2 die
Datenübertragungsarchitektur
aus 1 unter Verwendung des Kennzeichnungssystems der
Erfindung zeigt;
-
3 ein
heterogenes Netzwerk unter Verwendung der vorliegenden Erfindung
zeigt;
-
4 eine
Datenübertragungsarchitektur zeigt,
die nicht gekennzeichnete Dateien gemäß der vorliegenden Erfindung
verwendet;
-
5 die
Schritte des Verfahrens zur Ermittlung der Dateikennzeichnungen
gemäß der vorliegenden
Erfindung zeigt;
-
6 die Schritte des Verfahrens zur Erzeugung
neuer Dateikennzeichnungen gemäß der vorliegenden
Erfindung zeigt;
-
7 die
Schritte des Verfahrens zur Ermittlung der automatischen Umsetzung
gemäß der vorliegenden
Erfindung zeigt;
-
8 das
Verfahren zur Verarbeitung von Mount-Kennzeichnungen gemäß der vorliegenden Erfindung
zeigt.
-
Die
vorliegende Erfindung und insbesondere die Erzeugung und Verwendung
von Dateikennzeichnungen lässt
sich folgendermaßen
zusammenfassen:
Vorzugsweise wird eine neue Compiler-Option
PROGRAM (EBCDIC ASCII) verwendet, um anzugeben, ob die Initialisierung
einen EBCDIC oder ASCII CODESET (EBCDIC- oder ASCII-Codesatz) erstellen
soll. Die Programmoption teilt dem Compiler außerdem mit, ob EBDIC- oder
ASCII-Literale und Literalzeichenketten in dem Programmobjekt erzeugt werden
sollen. Das Programmobjektattribut, das den CODESET (Codesatz; ASCII,
EBCDIC oder UNICODE) des kompilierten Programms angibt, wird in der
Kopfzeile des Haupteingangspunkts des Programmobjekts abgelegt.
-
Jede
neu erzeugte Datei hat eine Kennzeichnung mit einer Kennung für Textinformationen
und einem Attribut für
die Codeseite. Die Dateikennzeichnung wird zusammen mit den übrigen Attributen
der Datei im Dateisystem, z. B. im Dateiverzeichnis, gespeichert.
Das Dateiverzeichnis wird unter Verwendung des Laufzeit- und E/A-Zugriffsverfahrens
um Kennzeichnungsinformationen erweitert. Dabei können die
folgenden Kennzeichnungsfälle
unterschieden werden:
Nicht gekennzeichnete lokale Dateien:
Ein Standarddateiattribut wird zum Mount-Zeitpunkt angegeben und
entspricht der lokalen Systemkonfiguration.
-
Ferne
Dateien: Da andere Plattformen möglicherweise
die Dateikennzeichnung nicht unterstützen, wird ausgehend vom Mount-Punkt
des Netzwerkdateisystems ein Standardattribut festgelegt. Dieses
Attribut bezieht sich auf die Systemkonfiguration des fernen Systems.
Wenn die ferne Plattform die Dateikennzeichnung unterstützt, wird
das Standardattribut von den vorhandenen Kennzeichnungen überschrieben.
Neue Dateien erhalten das Attribut des Programms, das die Datei
erzeugt hat. Als Dateikennzeichnung wird entweder die anfängliche
Programmkennzeichnung oder die Codeseite verwendet, die aus den
aktuellen Benutzereinstellungen abgeleitet wurde. Außerdem kann
die Anwendung die Dateikennzeichnung einer bestimmten Datei zum Zeitpunkt
der Dateierzeugung überschreiben.
Für Pseudodateien
(Pipes, Sockets, spezielle Dateien/Geräte) gilt Ähnliches.
-
Beim
Lesen aus einer bzw. Schreiben in eine bestehende Textdatei vergleicht
das Betriebssystem das Programmattribut mit dem der Datei. Wenn
sie voneinander abweichen, überprüft das Betriebssystem,
ob eine konsistente, datenerhaltende Umsetzung möglich ist. Zu diesem Zweck
wird eine Übereinstimmungstabelle
verwendet. Diese Tabelle listet alle Codeseiten auf, die denselben
Zeichensatz enthalten. Wenn eine konsistente Umsetzung möglich ist,
wird eine derartige automatische Umsetzung ausgeführt. Wenn
das nicht möglich
ist, wird ein Fehler angezeigt. Die automatische Umsetzung betrifft
nicht den Zugriff auf Binärdateien.
-
Die
Umsetzung erfolgt so, dass sie für
die Anwendung transparent ist. Weder muss der Anwendungscode geändert werden,
noch muss die Anwendung die tatsächliche
Codeseite der Datei kennen.
-
In
den meisten Fällen
gibt ein Programm mit den betreffenden Funktionsaufrufen an, ob
es eine Datei im Text- oder im Binärmodus liest/schreibt. Eine neue
Option zum Öffnen
ermöglicht
die ausdrückliche
Angabe des Textmodus; dies ist für
Fälle gedacht,
in denen ein Programm einen Binärmodus-Funktionsaufruf verwendet,
obwohl gerade es eine Textdatei verarbeitet.
-
1 zeigt
ein Hostsystem mit einer gemischten Plattform, die ASCII- und EBCDIC-Daten und
-Programme unterstützt.
-
Die
Dateien, die von dem ASCII-Programm erzeugt und/oder verarbeitet
werden, sollen nun folgendermaßen
klassifiziert werden:
-
Private Dateien
-
Inhalt
und Struktur privater Dateien werden durch die Anwendung definiert.
Diese Dateien sind nicht für
die Verarbeitung durch andere Programme vorgesehen, mit Ausnahme
derjenigen Anwendungen, die Struktur und Inhalt dieser Dateien kennen. Diese
Dateien sollten mit NOTEXT (TEXTFLAGG = OFF) gekennzeichnet werden.
-
Steuerdateien
-
Der
Inhalt dieser Dateien besteht ausschließlich aus Text. Bei internationalen
Anwendungen ist er üblicherweise
auf die POSIX-konformen Zeichen beschränkt. Diese Dateien sind für die Bearbeitung
bzw. Verarbeitung durch UNIX-Dienstprogramme vorgesehen. Bei der
Umsetzung und der Rückumsetzung
bleibt der Inhalt erhalten. Es sollte weder für die Anwendung noch für die Dienstprogramme
von Belang sein, wer ihn erzeugt hat und ob er im ASCII- oder EBCDIC-Format
vorliegt; die automatische Umsetzung stellt sicher, dass das Programm
ihn mit der richtigen Codeseite erhält. Diese Dateien müssen mit
TEXT (TEXTFLAG = ON) und CCSID gekennzeichnet werden.
-
Protokolldateien
-
Diese
Textdateien werden von der Anwendung geschrieben. Der Benutzer muss
sie direkt oder mit UNIX-Dienstprogrammen lesen können. Die
Dateien enthalten keine geschäftsrelevanten
Daten, die von einem anderen Anwendungsprogramm verarbeitet werden
müssen.
Die Verarbeitung beschränkt sich
im Wesentlichen auf ihr Durchblättern,
Sortieren, das Durchsuchen nach Fehlermeldungen mit dem Befehl grep
usw. Diese Dateien sollten mit TEXT und der CCSID gekennzeichnet
werden, und zwar auch dann, wenn sie nicht nur reinen Text enthalten
(sie können
auch bestimmte Hexadezimalzeichen beinhalten).
-
2 zeigt
eine bevorzugte Ausführung
für die
Erzeugung von Dateikennzeichnungen gemäß der vorliegenden Erfindung.
-
Die
Ausführung
von 2 verwendet ASCII-Programme, welche die Anforderungen
der vorliegenden Erfindung erfüllen. Ältere Programme
werden in dieser Ausführung
nicht berücksichtigt.
Jedes ASCII-Programmobjekt wurde während seiner Kompilierung entweder
als ASCII- oder als EBCDIC-Programm
gekennzeichnet.
-
Die
Entscheidung erfolgt auf Basis einer Kennzeichnung, die dem Haupteingangspunkt
zugewiesen ist. Diese Kennzeichnung wird aus der neuen Kompilierungsoption
PROGRAM (EBCDICASCII) abgeleitet. Die Umgebungsvariable, auch als
Prozess-CCSID, z. B. BPXCCSIDS = (EBCDIC_CCSID, ASCII_CCSID), bezeichnet,
ist ein Standardwert (z. B. IBM-1047, ISO 8859-1), der angibt, welche CCSIDs
einem Prozess zugewiesen werden sollen, der ein EBCDIC- oder ASCII-Programmobjekt
ausführt.
-
Die
geeigneten Werte sind abhängig
von der Installation des Kunden. Die Werte beziehen sich auf die
Standardcodeseite des Systems, auf Einstellungen des Datenstationsemulators,
die Umsetzungstabelle für
Network File Systems (NFS) und die Codeseite der verbundenen Datenstationen.
Daher sollte diese Umgebungsvariable entweder für das gesamte System oder zumindest
für die
gesamte Sitzung festgelegt werden.
-
Die
möglichen
Werte beschränken
sich auf angemessene Kombinationen, die eine konsistente Umsetzung
ermöglichen.
Die Dateikennzeichnung ist ein Dateiattribut, das den Zeichensatz
der Textdaten in der Datei kennzeichnet.
-
Jede
von einem ASCII-Programm erzeugte Datei wird mit einer Dateikennzeichnung
versehen. Die Dateikennzeichnung (TAGINFO) besteht aus der TEXTFLAG
(Textkennzeichnung) und der CCSID. Die TEXTFLAG ist ein binärer Schalter.
ON heißt, dass
die Datei eine einheitlich codierte Textdatei ist. OFF bedeutet,
dass die Datei keine einheitlich codierte Textdatei ist. TEXTFLAG
= ON (bzw. TEXT) bedeutet, dass sie sicher in eine andere Codeseite desselben
Zeichensatzes umgesetzt werden kann, um dann von einem anderen Programm verarbeitet zu
werden. TEXTFLAG = OFF (bzw. NOTEXT) bedeutet, dass die automatische
Umsetzung dieser Datei nicht zulässig
ist. Die CCSID kann entweder eine 16-Bit-Zahl mit einer entsprechenden
Langform sein, die alle Aspekte einer Zeichensatzcodierung beschreibt
(z. B. Codeseite, Zeichensatz, Codierungssystem), oder eine bestimmte
Binärdatei-CCSID (x'FFF').
-
Dateien,
z. B. private Dateien in der Ausführung aus 2,
können
mit der TEXTFLAG ”NOTEXT” gekennzeichnet
sein. Dies bedeutet, dass der Binärschalter auf AUS (OFF) steht.
Diese Dateien werden nicht automatisch in eine andere Codeseite oder
ein anderes Codierungssystem umgesetzt, da diese Dateien nur zwischen
Programmen ausgetauscht werden, die denselben Codesatz bzw. dasselbe
Codierungssystem verwenden.
-
Dateien
wie beispielsweise Steuerdateien in der Ausführung aus 1 können die
TEXTFLAG ”TEXT” aufweisen.
-
Dies
bedeutet, dass der Binärschalter
auf EIN (ON) steht. Diese Dateien werden automatisch in einen anderen
Codesatz oder ein anderes Codierungssystem mit demselben Zeichensatz
umgesetzt. Die automatische Umsetzung ist erforderlich, da die ASCII-Datei
von dem EBCDIC-Programm verwendet und dabei angepasst bzw. erweitert
wird, bevor sie an das ASCII-Programm
zurückgegeben
wird.
-
Dateien
wie beispielsweise Protokolldateien in der Ausführung aus 2 können die
TEXTFLAG ”TEXT” aufweisen,
wobei jedoch keine automatische Umsetzung erforderlich ist, da das
empfangene EBCDIC-Programm die Dateien nicht liest bzw. schreibt.
-
Die
CCSID kann entweder eine 16 Bit umfassende Zahl mit einer entsprechenden
Langform sein, die alle Merkmale einer Zeichensatzcodierung (z.
B. Codeseite, Zeichensatz, Codierungssystem) beschreibt, oder eine
bestimmte Binärdatei-CCSID.
In 2 entspricht die CCSID für alle Dateien der Norm ISO
8859-1.
-
Der
Verzeichniseintrag der betreffenden Datei wird vorzugsweise physisch
um die Dateikennzeichnungsinformationen erweitert; so wird er z.
B. in der Regel im Dateisystem selbst gespeichert, wobei jedoch
nicht alle Dateisysteme die Dateikennzeichnung speichern können, so
dass sie auch im Mount-Befehl enthalten sein kann.
-
Eine
bevorzugte Ausführungsform
einer Dateikennzeichnung besteht aus den folgenden Feldern:
- CCSID – Ein 16-Bit-Wert,
der den Zeichensatz der Datei festlegt.
0 × 0000 = Die Datei ist nicht
gekennzeichnet.
0 × FFFF
= Die Datei enthält
Binärdaten.
- TEXTFLAG – Eine
Unterscheidungskennzeichnung, die Auswirkungen auf die automatische
Umsetzung hat.
ON – Die
Datei mit dieser CCSID ist eine reine Textdatei und kommt so für die automatische
Umsetzung in Frage.
OFF – Die
Datei enthält
gemischte Daten und wird nicht umgesetzt.
-
Es
dürfen
nur Dateien automatisch umgesetzt werden, die folgende Kennzeichnung
aufweisen: TEXTFLAG = ON und 0 < CCSID < 0 × FFFF.
-
Gekennzeichnete
Dateien mit TEXTFLAG = OFF werden von Programmen verwendet, die
den Inhalt der Datei verstehen und die CCSID verwenden, um die Abschnitte
der Datei umzusetzen, auf die sie sich bezieht.
-
3 zeigt
einen Teil eines heterogenen Netzwerks, in dem die vorliegende Erfindung
ausgeführt
ist.
-
Das
heterogene Netzwerk umfasst ein Hostsystem, z. B. IBM S/390, auf
dem sowohl ASCII-Programme als auch EBCDIC-Programme installiert sind, und eine
ASCII-Datenstation mit einem fernen Dateisystem, das über eine
Datenverbindung mit Programmen des Hostsystems kommuniziert. Dateien
werden zwischen der ASCII-Datenstation und den ASCII- und EBCDIC-Programmen auf dem
Host ausgetauscht.
-
Wenn
die Datenstationsplattform die Dateikennzeichnung gemäß 2 nicht
unterstützt,
wird ausgehend vom Mount-Punkt des Netzwerkdateisystems ein Standardattribut
festgelegt. Mit einer neuen Option für den Mount-Punkt TAG (NOTEXT
TEXT, CCSID) kann eine standardmäßige TAGINFO
(Kennzeichnungsinformation) für
nicht gekennzeichnete Dateien festgelegt werden (”virtuelle
Dateikennzeichnung”).
Wenn sie festgelegt wird, werden für alle nicht gekennzeichneten
Dateien diese Kennzeichnungsinformationen anstelle des Werts UNDEFINED (0 × 0000)
verwendet. Wenn die ferne Plattform dagegen die Dateikennzeichnung
unterstützt,
wird die vorhandene Dateikennzeichnung von einem Standardattribut überschrieben.
-
Durch
das Lesen bzw. Schreiben von nicht gekennzeichneten Dateien wird
der betreffenden Datei eine virtuelle Dateikennzeichnung zugewiesen. Die
Struktur der virtuellen Datei- oder Mount-Kennzeichnung entspricht
derjenigen der Dateikennzeichnung.
-
4 zeigt
eine Datenübertragungsarchitektur
für die
Verwendung von nicht gekennzeichneten Dateien gemäß der vorliegenden
Erfindung. Zwischen einem ASCII- und einem EBCDIC-Programm wird
eine EBCDIC-Datei ausgetauscht. Wenn die EBCDIC-Datei nicht gekennzeichnet
ist, bedeutet das, dass die Datei von einem Programm erstellt wurde, welches
das Verfahren der Dateikennzeichnung gemäß der vorliegenden Erfindung
nicht verwendet. Beim Zugriff auf die EBCDIC-Datei mit dem E/A-Zugriffsverfahren
wird das Verzeichnis der Systemdatei virtuell um die ”virtuelle
Dateikennzeichnung” erweitert,
wenn die Mount-Option aktiviert wurde (ON). Je nachdem, ob der Standardwert
für TEXTFLAG
ON oder OFF ist, wird die Systemdatei durch die automatische Umsetzungsfunktion
in das ASCII-Codierungssystem umgesetzt. Die automatische Umsetzung
gemäß der vorliegenden
Erfindung ist ein Verfahren, mit dem ASCII- und EBCDIC-Programme
ein und dieselbe Textdatei verarbeiten können. Die Umsetzung erfolgt
so, dass sie für
die Anwendung transparent ist. Sie bezieht sich sowohl auf das Lesen
als auch auf das Schreiben. Die Umgebungsvariable BPXAUTOCVT = ON
oder OFF aktiviert bzw. deaktiviert die automatische Umsetzung.
Der beabsichtigte Wert für
die Umgebungsvariable muss für
das gesamte System oder für
die gesamte Sitzung festgelegt werden. Für eine konsistente automatische
Umsetzung muss der Benutzer diese Variable immer dann aktivieren,
wenn er mit Programmen oder Dateien arbeitet, die von Programmen
erzeugt wurden, welche die Funktionen für die Dateikennzeichnung und
die automatische Umsetzung verwenden. Zunächst wird die Dateikennzeichnung
festgelegt; bei neuen Dateien wird sie gemäß den oben genannten Regeln
bestimmt. Danach erfolgt die Entscheidung bezüglich der automatischen Umsetzung.
-
5 zeigt
die einzelnen Schritte für
die Festlegung einer Dateikennzeichnung gemäß der vorliegenden Erfindung.
-
Wenn
eine Datei mit einem E/A-Zugriffsverfahren unter Verwendung der
vorliegenden Erfindung geöffnet
wird, wird zunächst
geprüft,
ob es sich um eine neue Datei handelt. Wenn ja, wird eine Dateikennzeichnung
mit der TEXTFLAG und die Prozess-CCSID wie oben beschrieben erzeugt.
Die Dateikennzeichnung wird dann in dem Verzeichnis der betreffenden
Datei abgelegt.
-
Wenn
die geöffnete
Datei jedoch keine neue, sondern eine bereits vorhandene Datei ist,
wird in einem nächsten
Schritt geprüft,
ob es sich um eine vorhandene leere Datei handelt. Wenn ja, wird
eine Dateikennzeichnung erzeugt und in den Verzeichnisinformationen
gespeichert. Wenn nein, wird in einem weiteren Schritt geprüft, ob es
sich bei der Datei um eine bereits gekennzeichnete Datei handelt.
Wenn es eine gekennzeichnete Datei ist, werden mit der TAGINFO (Dateikennzeichnung)
die Dateikennzeichnungsinformationen festgelegt. Wenn es eine nicht gekennzeichnete
Datei ist, wird, sofern vorhanden, die Standardkennzeichnung verwendet.
-
6A/B
zeigt die einzelnen Schritte für
die Erzeugung einer neuen Dateikennzeichnung gemäß der vorliegenden Erfindung.
-
Die
Dateikennzeichnung kann explizit von einem Programm beim Öffnen der
Datei oder mit der Dateisteueroperation fcntl () nach dem Öffnen festgelegt
werden; dies gilt jedoch nur für
neue Dateien und vorhandene, leere Dateien. In beiden Fällen wird
die TEXTFLAG von dem Programm, das die Öffnungs- oder fcntl()-Operation
ausführt,
explizit festgelegt, während
die CCSID entweder explizit von dem Programm festgelegt oder aus
der Prozess-CCSID abgeleitet wird.
-
Wenn
die Dateikennzeichnung nicht explizit festgelegt wird (nicht gekennzeichnete
Datei), wird die Laufzeitoption AUTOTAG_NEW_FILES (ON OFF) überprüft. Wenn
diese Option auf ON gesetzt wurde, wird die Datei unter Zugrundelegung
der folgenden heuristischen Regeln gekennzeichnet. Bei der Festlegung
der Laufzeitoption obliegt es der Anwendung sicherzustellen, dass
diejenigen Dateien, die Ausnahmen von dieser Regel darstellen, explizit gekennzeichnet
werden. Bei den Funktionsaufrufen fopen () ohne ,b', popen () sowie
für die
umgelenkten Funktionsaufrufe stdout, stderr wird die TEXTFLAG auf
ON gesetzt und die CCSID aus der Prozess-CCSID abgeleitet. Bei allen
anderen Funktionsaufrufen, d. h. fopen () mit ,b' (binär), open () usw., wird die
TEXTFLAG auf OFF gesetzt und die CCSID aus der Prozess-CCSID abgeleitet.
Wenn weder die Dateikennzeichnung noch die Laufzeitoption angegeben
sind, ist die Datei nicht gekennzeichnet. (Wenn eine Mount-Option
TAG festgelegt wurde, wird dieser Wert den nicht gekennzeichneten
Dateien logisch zugewiesen.) Wenn das Dateisystem die Dateikennzeichnung
nicht unterstützt,
wird die beim Öffnen
oder mit der Laufzeitoption festgelegte TAGINFO ignoriert. Ein expliziter
Versuch, die Kennzeichnungsinformationen mit fcntl () festzulegen,
ergibt eine Fehlermeldung.
-
7 zeigt
die Schritte des Verfahrens zur Festlegung der automatischen Umsetzung
gemäß der vorliegenden
Erfindung.
-
Die
automatische Umsetzung gemäß der vorliegenden
Erfindung ist ein Verfahren, mit dem ASCII- und EBCDIC-Programme
ein und dieselbe Textdatei verarbeiten können. Die Umsetzung erfolgt so,
dass sie für
die Anwendung transparent ist. Sie bezieht sich sowohl auf das Lesen
als auch auf das Schreiben. Die Umgebungsvariable BPXAUTOCVT = ON
oder OFF aktiviert bzw. deaktiviert die automatische Umsetzung.
Der beabsichtigte Wert für
die Umgebungsvariable muss für
das gesamte System oder für
die gesamte Sitzung festgelegt werden. Für eine konsistente automatische
Umsetzung muss der Benutzer diese Variable immer dann aktivieren,
wenn er mit Programmen oder Dateien arbeitet, die von Programmen
erzeugt wurden, welche die Funktionen für die Dateikennzeichnung und
die automatische Umsetzung verwenden. Zunächst wird die Dateikennzeichnung
festgelegt; bei neuen Dateien wird sie gemäß den oben genannten Regeln
bestimmt. Danach erfolgt die Entscheidung bezüglich der automatischen Umsetzung.
-
Wenn
die Umgebungsvariable BPXAUTCVT aktiviert ist (ON), beruht die automatische
Umsetzung auf den Informationen, die in der Dateikennzeichnung enthalten
sind. Dabei sind die folgenden Fälle
zu unterscheiden:
- 1. Wenn die TEXTFLAG auf
ON gesetzt wurde, erfolgt die automatische Umsetzung auf Basis der CCSID
der Datei und der Prozess-ID.
Wenn die Umsetzung nicht kompatibel
ist (oder nicht unterstützt
wird), wird das Lesen/Schreiben dieser Datei abgelehnt und führt zu einer
Fehlermeldung.
- 2. Wenn die TEXTFLAG auf OFF gesetzt wurde, wird die Datei ohne
automatische Umsetzung verarbeitet.
- 3. Wenn die Kennzeichnungsinformationen UNDEFINED (= nicht gekennzeichnete
Datei und keine Mount-Option) lauten, wird die Laufzeitoption AUTCVT_UNTAGGED_FILES
(ON OFF) überprüft. Wenn
diese Option auf ON gesetzt wurde, wird die Datei unter Zugrundelegung
der folgenden heuristischen Regeln automatisch umgesetzt. Bei der
Festlegung der Laufzeitoption obliegt es der Anwendung sicherzustellen,
dass für diejenigen
Dateien, die Ausnahmen von dieser Regel darstellen, die Umsetzung
explizit deaktiviert wird. Für
die Funktionsaufrufe fopen () ohne ,b', popen () und für umgelenkte Funktionsaufrufe stdin,
stdout, stderr werden als Dateikennzeichnungsinformationen TEXTFLAG
= ON und EBCDIC_CCSID angenommen. Die automatische Umsetzung erfolgt
zwischen der EBCDIC_CCSID und der Prozess-CCSID. Wenn diese Umsetzung
nicht kompatibel ist (oder nicht unterstützt wird), wird das Lesen/Schreiben
dieser Datei abgelehnt und führt
zu einer Fehlermeldung. Der Wert für EBCDIC_CCSID wird aus der Umgebungsvariablen
BPXCCSIDS abgeleitet. Für
alle anderen Funktionsaufrufe, d. h. fopen () mit ,b', open () usw., wird
für die
TEXTFLAG der Wert OFF angenommen. Es erfolgt keine Umsetzung. Der
Funktionsaufruf fcntl () ermöglicht
die Abfrage des tatsächlichen
Umsetzungsmodus, die Aktivierung/Deaktivierung der Umsetzung und die
explizite Auswahl aller verfügbaren
Umsetzungstabellen zu jedem beliebigen Zeitpunkt.
-
8 zeigt
das Verfahren für
die Festlegung der Standardkennzeichnung gemäß der vorliegenden Erfindung.
-
Wenn
eine Datei nicht gekennzeichnet ist, prüft das Verfahren der Erfindung,
ob eine Option für den
Mount-Punkt die Festlegung einer Standard-Dateikennzeichnung für nicht
gekennzeichnete Dateien gestattet (”virtuelle Kennzeichnung”). Wenn
dies festgelegt werden kann, wird diese Dateikennzeichnung anstelle
des Werts UNDEFINED (0 × 0000)
für nicht gekennzeichnete
Dateien verwendet. Zusammenfassend lässt sich sagen, dass, wenn
eine Option für den
Mount-Punkt verfügbar
ist, eine Mount-Kennzeichnung MOUNT TAG in der Datei gespeichert wird.
Wenn keine Mount-Option
verfügbar
ist, bleibt die Datei nicht gekennzeichnet bzw. nicht definiert
mit der Folge, dass keine automatische Umsetzung möglich ist.