Ich würde diese Bibliothek schlecht geschrieben. Wenn Sie eine Low-Level-Bibliothek für die Verwendung durch COBOL schreiben, sollten Sie Datentypen auswählen, die COBOL leichter manipulieren kann. In diesem Fall wäre ein COMP-Element, das ein Langwort darstellt (S9 (9) COMP), für COBOL leichter zu bewältigen.
Angenommen, Sie verknüpfen diese Werte zusammen, um einen Aufruf an eine untergeordnete Bibliothek zu senden, können Sie sie einfach addieren, um die Merkerwerte zu erhalten. Dies funktioniert, weil jede Konstante ein einzelnes Bit gesetzt hat.
Sie könnten die Konstanten in einen temporären Neudefinitionsbereich verschieben oder die fehlende COBOL-Sicherheit nutzen und sie an ein Unterprogramm für den Vorgang übergeben. Im Folgenden würde auf VMS COBOL arbeiten:
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLEOR.
DATA DIVISION.
WORKING-STORAGE SECTION.
*
* OPTVAL field for IPV6_ADDR_PREFERENCES_FLAGS
*
01 IPV6-ADDR-PREFERENCES-FLAGS PIC X(4).
*
* IPV6_ADDR_PREFERENCES_FLAGS mappings
*
77 IPV6-PREFER-SRC-HOME PIC X(4) VALUE X'00000001'.
77 IPV6-PREFER-SRC-COA PIC X(4) VALUE X'00000002'.
77 IPV6-PREFER-SRC-TMP PIC X(4) VALUE X'00000004'.
77 IPV6-PREFER-SRC-PUBLIC PIC X(4) VALUE X'00000008'.
77 IPV6-PREFER-SRC-CGA PIC X(4) VALUE X'00000010'.
77 IPV6-PREFER-SRC-NONCGA PIC X(4) VALUE X'00000020'.
PROCEDURE DIVISION.
1.
CALL "BINARYOR"
USING IPV6-PREFER-SRC-HOME
IPV6-PREFER-SRC-COA
IPV6-ADDR-PREFERENCES-FLAGS.
CALL "BINARYOR"
USING IPV6-PREFER-SRC-PUBLIC
IPV6-ADDR-PREFERENCES-FLAGS
IPV6-ADDR-PREFERENCES-FLAGS.
IF IPV6-ADDR-PREFERENCES-FLAGS NOT = X'0000000B'
DISPLAY "Failure"
END-IF.
END PROGRAM SAMPLEOR.
IDENTIFICATION DIVISION.
PROGRAM-ID. BINARYOR.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 ARG1 PIC S9(9) COMP.
01 ARG2 PIC S9(9) COMP.
01 RESULT PIC S9(9) COMP.
PROCEDURE DIVISION USING ARG1 ARG2 RESULT.
1.
ADD ARG1 TO ARG2 GIVING RESULT.
END PROGRAM BINARYOR.
Wenn dies nicht funktioniert, dann werden Sie Ihre COBOL-Plattform Darstellung von binären Elementen studieren müssen, um die richtigen Typen zu erarbeiten.
Ich habe in COBOL (vor Jahrzehnten) viel (zu viel wahrscheinlich) niedrigere Dinge getan. Normalerweise können Sie es ausarbeiten. Aber irgendwann wird es zu schwer und es lohnt sich nicht. An diesem Punkt lohnt es sich, zu einer Sprache (wie C) zu rufen, die besser zum Drehen von Bits geeignet ist.