2 COBOL-Schnittstelle für Micro Focus Visual COBOL
Verfügbarkeit
IDM für Microsoft Windows ab IDM-Version A.06.01.d.
2.1 Unicode-Unterstützung
Die COBOL-Schnittstelle für Micro Focus Visual COBOL unterstützt Unicode als Zeichencodierung. Ein Unicode String wird hierbei von Micro Focus Visual COBOL als National Character dargestellt, wobei die Codierung der IDM-Codepage CP-utf16 entspricht. Innerhalb von Micro Focus Visual COBOL wird dies als PIC N NATIONAL repräsentiert.
2.1.1 Aktivierung von Unicode
Die Verwendung von Unicode wird durch Setzen der Anwendungscodepage aktiviert. Dies kann durch eine Startoption oder innerhalb der Anwendung mit der Funktion DMcob_Control geschehen:
... WORKING-STORAGE SECTION. 01 ACTION PIC 9(4) BINARY VALUE 0. ... PROCEDURE DIVISION ... MOVE DMF-SetCodePage TO ACTION. MOVE CP-utf16 TO DM-options. CALL "DMcob_Control" USING DM-STDARGS NULL-OBJECT ACTION. ...
Hinweise
- Über COBOL Compiler-Direktiven lässt sich die Codepage von National Character steuern. Die gesetzte Anwendungscodepage muss dieser Codierung entsprechen. Ein National Character beansprucht 2 Byte. Derzeit benutzen die IDM-Codepages CP-utf16, CP-utf16b, CP-utf16l und CP-utfwin eine 2-Byte-Repräsentation.
- Es gibt Erweiterungen im IDM um die verwendete Codepage selektiv für einzelne Funktionen einer Anwendung zu ändern. Hierdurch ist ein inkrementeller Umstieg auf Unicode möglich.
2.1.2 Erweiterung der Copy-Strecken
Die Copy Strecken sind so definiert, dass Texte wahlweise als Character oder als National Character abgelegt werden können. Hierbei bleibt der Name für den Character-Eintrag erhalten. Möchte man auf den National-Character-Eintrag zugreifen, muss dem Namen ein ‑u
angehängt werden.
Character | National Character (UTF-16) |
---|---|
DM-setsep pic X. |
DM-setsep-u pic N national. |
DM-getsep pic X. |
DM-getsep-u pic N national. |
DM-usercodepage pic X(32). |
DM-usercodepage-u pic N(32) national. |
DM-value-string pic X(80). |
DM-value-string-u pic N(80) national. |
DM-va-value-string pic X(80). |
DM-va-value-string-u pic N(80) national. |
Bei folgenden Strukturelementen des ValueRecords wird die Länge bzw. Größe als Anzahl der Zeichen, nicht der Bytes, angegeben:
DM-value-string-putlen
DM-value-string-getlen
DM-value-string-size
Dasselbe gilt für alle anderen auf dem ValueRecord basierenden Strukturen.
Hinweis
Der IDM liest bzw. schreibt die entsprechenden Werte entsprechend der aktuell geltenden Anwendungscodepage.
2.1.3 Aufrufparameter von COBOL-Funktionen
Bei allen Texten kann wahlweise Character oder National Character verwendet werden. Der IDM interpretiert den Text entsprechend der aktuell geltenden Anwendungscodepage. Die Längenangabe bezieht sich auf die Anzahl der Zeichen, nicht der Bytes. Dies gilt sowohl für die IDM-Schnittstellenfunktionen als auch für die vom IDM aufgerufenen COBOL-Funktionen. Es ist wichtig, dass die aktuell verwendete Anwendungscodepage der Textdefinition entspricht.
2.1.4 Funktionen mit Records als Parametern
Für Funktionen mit Record-Objekten als Parametern wird von der Anwendung pidm mit der Startoption +writetrampolin eine Copy-Strecke erstellt. Um bestehende Anwendungen nicht zu beeinträchtigen, werden diese Copy-Strecken standardmäßig ohne Unterstützung für National Character erzeugt. Die Unterstützung dafür muss explizit angefordert werden, indem an Stelle der COBOL Compiler-Option -mfviscob die Option -mfviscob-u verwendet wird:
pidm mydlg.dlg –mfviscob-u +writetrampolin myappl_tr
Die erzeugte Copy-Strecke kann dann wahlweise Character oder National Character enthalten. Der IDM greift dann wieder entsprechend der aktuell eingestellten Anwendungscodepage zu.
2.2 Datentyp DT-anyvalue
Der Datentyp DT-anyvalue wird über den Zeiger-Datentyp (POINTER) von Micro Focus Visual COBOL unterstützt.
Siehe auch
2.3 Unterstützung von Sammlungen
Die Sammlungsdatentypen des IDM und die damit zusammenhängenden Funktionen für gemanagte (verwaltete) IDM-Werte (Managed DM-Values) werden über den Zeiger-Datentyp (POINTER) von Micro Focus Visual COBOL unterstützt.
DM-Datentyp |
Visual-COBOL-Datentyp |
---|---|
POINTER |
|
POINTER |
|
POINTER |
|
POINTER |
|
POINTER |
Ein Managed DM-Value wird als Zeiger an Micro Focus Visual COBOL übergeben:
01 ManagedValue pointer. ENTRY "GetAnyValue" using DM-COMMON-DATA ManagedValue.
Um einen solchen Wert innerhalb der DM-Value-Struktur zu verwenden, wird der Wert nach DM-value-pointer kopiert und DM-datatype auf DT-anyvalue gesetzt.
MOVE DT-anyvalue TO DM-datatype. MOVE ManagedValue To DM-value-pointer.
2.3.1 Datenfunktionen in COBOL
Mit der Unterstützung der Sammlungsdatentypen ist auch eine Implementierung von Datenfunktionen in COBOL möglich.
Siehe auch
Kapitel „Datenfunktionen“
Kapitel „Datenfunktions-Struktur DM-Datafunc-Data“
Funktion DMcob_DataChanged
2.3.2 Struktur DM-ValueIndex
Diese Struktur ermöglicht ein vollwertiges Index-Argument. Sie wird von den DMcob_Value* Funktionen der COBOL-Schnittstelle für Micro Focus Visual COBOL für die Verarbeitung der Sammlungsdatentypen genutzt. Die Struktur steht aber für alle unterstützten COBOL-Varianten zur Verfügung und ist nicht auf diese Anwendungsbereiche beschränkt. Sie ist identisch mit der Struktur DM-Value.
2.3.3 Funktionen für die Bearbeitung von Sammlungen
-
Mit dieser Funktion kann eine von IDM gemanagte Wertereferenz manipuliert werden. Entweder kann der Gesamtwert ersetzt werden oder ein einzelner Elementwert in einer Sammlung.
-
Mit dieser Funktion kann eine von IDM gemanagte Wertereferenz manipuliert werden. Entweder kann der Gesamtwert ersetzt werden oder ein einzelner Elementwert in einer Sammlung. Im Unterschied zu DMcob_ValueChange kann bei dieser Funktion ein Puffer für String-Rückgabewerte angegeben werden, der größer als der Standardpuffer ist.
-
Liefert die Anzahl der Werte in einer Sammlung (ohne die Standardwerte) zurück. Wenn gewünscht kann auch der Indextyp bzw. der höchste Indexwert zurückgeliefert werden.
-
Diese Funktion dient dazu, aus Sammlungen einen einzelnen Elementwert zu holen, der zu einem definierten Index gehört.
-
Diese Funktion dient dazu, aus Sammlungen einen einzelnen Elementwert zu holen, der zu einem definierten Index gehört. Im Unterschied zu DMcob_ValueGet kann bei dieser Funktion ein Puffer für String-Rückgabewerte angegeben werden, der größer als der Standardpuffer ist.
-
Diese Funktion dient zur Abfrage des Datentyps eines vom IDM verwalteten Wertes.
-
Mit dieser Funktion kann der zu einer Position zugehörige Index einer Sammlung ermittelt werden.
-
Mit dieser Funktion kann ein Wert in eine vom IDM gemanagte lokale oder globale Wertereferenz umgewandelt werden. Dadurch ist die weitere Manipulation des Wertes durch DMcob_Value…()-Funktionen möglich sowie die Rückgabe als Parameter bzw. Rückgabewert.