Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Plattform-spezifische Besonderheiten auf BS2000-Systemen

Übersetzen von C/C++-Teilprogrammen

Soll bei der Übersetzung von C/C++-Teilprogrammen ein Bindelademodul (LLM) erzeugt werden, das aus einer Code- und einer Daten-CSECT besteht, dann müssen Sie beim Aufruf des Compilers für die COMPILER-ACTION-Option MODULE-GENERATION(MODULE-FORMAT=LLM) setzen. Das LLM muss zum Binden mit dem BINDER in einer PLAM-Bibliothek zur Verfügung gestellt werden.
Für Ihre C-Teilprogramme können auch Objekt-Module erzeugt werden (Typ=R im LMS).

Shareable Code nutzen

Wenn Sie beabsichtigen, C/C++-Programmteile shareable zu laden, müssen Sie bereits beim Übersetzen folgende Option anbeben:

COMPILER-ACTION=MODULE-GENERATION( SHAREABLE-CODE=YES,...)

Der Shareable Code muss nicht unbedingt in einem eigenen Objektmodul abgelegt werden, sondern kann zusammen mit dem nicht-shareable Teil in einem LLM stehen, der in eine Public und eine Private Slice unterteilt ist.

Die shareable Programmteile brauchen für alle Prozesse (Tasks) der Anwendung(en) gemeinsam nur einmal geladen werden. In den task-lokalen Speicher müssen dann nur noch die nicht-shareable Teile geladen werden.

openUTM bietet verschiedene Möglichkeiten, shareable Objekte zu laden:

  • als nicht-privilegiertes Subsystem,

  • mit dem ADD-SHARED-PROGRAM-Kommando in den Systemspeicher,

  • in einen Common Memory Pool im Benutzerspeicher (Klasse 6-Speicher).

Weitere Informationen zum Übersetzen von Shareable Code finden Sie im
Benutzerhandbuch Ihres Compilers. Über das Binden und Laden von Shareable Code informiert ausführlich das openUTM-Handbuch „Anwendungen generieren“ sowie das openUTM-Handbuch „Einsatz von UTM-Anwendungen auf BS2000-Systemen“.

Formaterstellung mit dem IFG

Wie Sie Formate mit dem IFG erstellen können, ist ausführlich im IFG-Handbuch beschrieben. Wenn diese Formate für den Einsatz mit openUTM erstellt werden, so beachten Sie bitte folgende Hinweise:

  • Der Formatname darf höchstens 7 Zeichen lang sein.

  • Im Benutzerprofil wählen Sie die "Struktur des Datenübergabebereichs":

    • für #Formate: getrennte Attributblöcke und Feldinhalte

    • für *Formate: nicht ausgerichtet, ohne Attributfelder

    • für +Formate: nicht ausgerichtet, mit Attributfeldern

  • Für die Programmiersprachen C/C++ erzeugt der IFG immer eine Adressierungshilfe. Felder mit dem Attribut "Felddatentyp arithmetisch" werden auf Zeichenketten (char [..]) abgebildet.

  • Bitte beachten Sie bei der Definition der Adressierungshilfen für *Formate und +Formate, dass openUTM beim MGET bzw. FGET den Transaktionscode aus der Nachricht entfernt (sofern dies nicht in einem INPUT-Exit explizit verhindert wird). Wenn das erste Feld im Format den Transaktionscode enthält, so können Sie dies
    berücksichtigen, indem Sie die Nachricht in das zweite Feld einlesen.

    Beispiel
    struct work
       { union kc_paa param; 
         FORM1 std_mask;               /* Adresseriungshilfe fuer das*/
              .                        /* *Format FORM1 daklarieren  */
        } *spab;
              .
        /* MGET-Aufruf */
         KDCS_MGET ( spab->std_mask.FUNCTION                1)
                    ,sizeof( FORM1 )
                    ,"*FORM1  "               );
             . 
        /* MPUT-Aufruf */
         KDCS_MPUTNT (&spab->std_mask,sizeof(FORM1)
                     ,KDCS_SPACES,"*FORM1  ",KCNODF);
        /* PEND FI-Aufruf */
               .
    

    1) FUNCTION ist das zweite Eingabefeld des Formates.

  • Bei der Einsatzvorbereitung bringen Sie die Formate in die Formateinsatzdatei (Formatbibliothek). Diesen Namen geben Sie bei den FHS-Startparametern an.

Erweiterter Zeilenmodus

Für die Arbeit im erweiterten Zeilenmodus müssen Sie die Steuerzeichen, sofern diese nicht in der Sprache C/C++ zur Verfügung stehen, selbst definieren. Welche Steuerzeichen welchen hexadezimalen Werten entsprechen, finden Sie im „TIAM Benutzerhandbuch“, z.B. bei der Beschreibung des Makros VTCSET.