Cobol Quelltexte

Seitennavigation
 
Aufgabe Quelltext Download Erläuterungen Allgemeines

GetComputername

Mit dem nachfolgenden Programm ist es Ihnen möglich den Computernamen zu erfahren. Auf die Unterstützung von Unicode wurde hierbei verzichtet.

Der Quelltext

Der nachfolgende Quelltext wurde erfolgreich unter MF NetExpress 3.1 / Win NT 4 SP6 getestet.

       IDENTIFICATION DIVISION.
       program-id.    GetComputername.
       author.        Bastie - Sebastian Ritter.
       date-written.  2002.

       ENVIRONMENT DIVISION.
       configuration section.
       special-names.
           call-convention 74 is WINAPI.

       DATA DIVISION.
       working-storage section.
       77  cint              pic s9(9)        comp-5 is typedef.
       77  culong            pic  9(9)        comp-5 is typedef.
       01  DWORD             is typedef       usage culong.
       01  BOOL              is typedef       usage cint.


       linkage section.
       01 param.
         05  computername      pic X(50) VALUE SPACES.
         05  computernamesize  usage DWORD.
         05  returncode        usage BOOL.
           88 winapi-error       value zero.

       PROCEDURE DIVISION using param.
       main section.
         set computernamesize to length of computername.
         call WINAPI "GetComputerNameA"
                 using by reference computername
                       by reference computernamesize
                 returning returncode.
       goback.
     

Code Download

Den Quelltext können Sie hier downloaden.

Erläuterungen zum Quelltext

Allgemeines zum Quelltext

Kommunikation mit Programmen anderer Programmiersprachen

In Cobol stehen bereits die entsprechenden Mechanismen bereit,um Anwendungen, die in anderen Programmiersprachen geschrieben wurden nutzen zu können. Das Prinzip der Wiederverwendung steht hier klar im Vordergrund. Aus diesem Grund gibt es die call-conventions. Mit diesen können Sie der Cobol Laufzeitumgebung sagen wie der Aufruf erfolgen soll. Die call-conventions befinden sich in der environment division, so dass sich folgender Quelltext ergibt.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL NAMES.
         CALL-CONVENTION <nummer> IS <name>
         CALL-CONVENTION <nummer> IS <name>.
       

Nach Auflistung aller call-conventions erfolgt der '.' als Abschlusszeichen. Während der Name für Ihre call-convention frei wählbar ist, müssen Sie die Nummer berechnen bzw. wissen. Es handelt sich dabei um eine 16 Bit Zahl mit den nachfolgenden Bedeutungen.

Berechnung der call-convention
Offset Bitwert Bedeutung
 
00Parameterübergabe von rechts nach links
1Parameterübergabe von links nach rechts
10Stack wird vom aufrufenden Programm aufgeräumt
1Stack wird vom aufgerufenem Programm aufgeräumt
20Rückkehrcode wird beim Verlassen gesetzt
1Rückkehrcode wird beim Verlassen nicht gesetzt
30Normales Link Verhalten
1Statisches Link Verhalten
40Reserviert (0)
1
50Reserviert (0)
1
60Aufruf erfolgt nicht nach den Windows-Stdcall-Konvention
1Aufruf erfolgt nach den Windows-Stdcall-Konventionen
70Reserviert (0)
1
80Die Parameteranzahl wird überprüft
1Die Parameteranzahl wird nicht überprüft
90nicht case sensitive
1case sensitive
100Reserviert (0)
1
110Reserviert (0)
1
120Reserviert (0)
1
130Reserviert (0)
1
140Reserviert (0)
1
150Reserviert (0)
1

Mit ein bisschen Rechnerei kommen wir schließlich zu dem Ergebnis, dass für den Aufruf der Windows API die Konvention 74 zu verwenden ist. Hilfsweise könnten Sie auch die Konvention 66 verwendet werden. Der Nachteil liegt im "normalen" Link Verhalten jedoch darin, dass die DLL nicht allein deshalb bekannt ist, nur weil die entsprechende *.LIB Datei vorhanden ist. Vielmehr müssen wir dann die DLL zuerst gesondert aufrufen.

all rights reserved © Bastie - Sebastian Ritter @: w³: http://www.Bastie.de
Diese Seite ist Bestandteil der Internetpräsenz unter http://www.Bastie.de


Java Cobol Software Resourcen Service Links Über mich Zum Gästebuch Forum