https://d226lax1qjow5r.cloudfront.net/blog/blogposts/send-text-message-cobol-dr/send-text-message-cobol-feature.png

Senden einer Textnachricht mit COBOL

Zuletzt aktualisiert am May 13, 2021

Lesedauer: 8 Minuten

COBOL ist in der Banken- und Finanzbranche der letzte Schrei. Laut einem Bericht der Nachrichtenagentur Reuters beruhen über 95 Prozent der Geldautomatenabhebungen auf COBOL-Code. Bericht von Reuters.

In diesem Tutorium zeige ich Ihnen eine selbst zusammengebastelte Methode zum Senden von Textnachrichten mit COBOL. Schalten Sie also Ihren Großrechner ein, bereiten Sie Ihr 3270-Terminal vor und machen Sie sich daran, ein wenig COBOL zu schreiben!

Moment mal

Was ist das, du haben keinen Sie haben keinen Zugang zu einem millionenschweren Großrechner? Vielleicht hat Ihr Arbeitgeber einen, den Sie ausleihen können? Nein? Das ist OK; es gibt eine Lösung.

Voraussetzungen

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.

Sie benötigen außerdem die Nexmo CLI. Damit können Sie eine Telefonnummer erwerben, um ausgehende Textnachrichten zu versenden.

Außerdem benötigen Sie einen COBOL-Compiler, der Ihr COBOL in native Binärdateien umwandelt, die auf Ihrem System laufen. Für dieses Tutorial werde ich Folgendes verwenden GnuCOBOL.

GnuCOBOL ist ein kostenloser COBOL-Compiler, der COBOL in C konvertiert und den übersetzten Code kompiliert. Damit können Sie native Binärdateien erstellen, die auf Mac, Windows und Unix/Linux ausgeführt werden können.

Download-Links für GnuCOBOL finden Sie finden Sie hier. Mac-Benutzer können optional mit Homebrew installieren:

brew install gnu-cobol

Sie brauchen auch einen Editor. Ich hatte einigen Erfolg bei der Verwendung des OpenCobolIDE. Sie können aber auch mit einem einfachen Texteditor auskommen. Ich werde etwas später auf die Struktur eines COBOL-Moduls eingehen und erklären, warum eine geeignete IDE so wichtig ist.

Senden einer Textnachricht mit COBOL

Dieses Tutorial zeigt Ihnen, wie Sie mit der Nexmo CLI eine Telefonnummer erwerben und diese Nummer zum Versenden von Textnachrichten mit COBOL verwenden können.

Kauf einer Nummer

Sie benötigen eine Nexmo-Nummer, um Textnachrichten zu versenden. Wenn Sie noch keine Nummer haben, können Sie über die Nexmo CLI eine Nummer erwerben:

nexmo number:buy --country_code US

Beachten Sie, dass Sie in einigen Ländern Nachrichten mit einer alphanumerischen Absenderkennung senden können. Für weitere Informationen siehe Benutzerdefinierte Absender-ID.

Notieren Sie sich die Nummer, die Sie gerade gekauft haben. Sie werden sie später verwenden, wenn Sie den Code für den Telefonanruf schreiben.

Erstellen des COBOL-Moduls

Es gibt verschiedene Möglichkeiten, eine Textnachricht von COBOL aus zu versenden. Die meisten dieser Methoden hängen jedoch von der Hardware ab, die Sie verwenden. Da Sie wahrscheinlich keinen Zugang zu einem Großrechner haben, werden Sie ein wenig mogeln. Sie werden ein COBOL-Modul erstellen, das die Nexmo CLI aufruft, um eine Textnachricht zu senden.

Lassen Sie uns zunächst die COBOL-Modulstruktur durchgehen. Ich werde Ihnen keine ausführliche Anleitung zu COBOL geben, aber ich denke, es ist wichtig zu wissen, wie die Module aufgebaut sind.

Die Säulenstruktur

COBOL hat zwei verschiedene Formate: fest oder frei. Das feste Format erfordert, dass der Code an bestimmten Spalten ausgerichtet wird:

Name Column Usage
Sequences 1-6 Used for sequence numbers. These were initially used for card and line numbers, but now the compiler ignores them. Most editors will automatically generate these.
Indicator 7 Used for indicating a comment * or a - continuation of a previous line.
Area A 8-11 Contains the start of the DIVISION and SECTION.
Area B 12-72 Contains all of your other code and programming logic not contained in the other areas.

Dieses Bild zeigt ein Beispiel für ein Hallo-Welt-Modul mit den hervorgehobenen Abschnitten:

Cobol columns

COBOL 2002 führte ein freies Format ein, das diese Spaltenbeschränkungen aufhob und die Bereiche A und B kombinierte.

Die Abteilungen

COBOL-Module sind in vier verschiedene Bereiche unterteilt, die Divisionen genannt werden:

  • Die IDENTIFICATION DIVISION die Identifikationsinformationen wie den Modulnamen liefert.

  • Die ENVIRONMENT DIVISION die die Teile Ihres Moduls beschreibt, die von dem Computer abhängen, auf dem es läuft.

  • Die DATA DIVISION wo Ihre Daten definiert sind.

  • Die PROCEDURE DIVISION wo die Programmieranweisungen des Moduls definiert sind.

Erstellen Sie ein neues COBOL-Programm mit dem Namen "SENDSMS.cbl" und fügen Sie den folgenden Inhalt hinzu, wobei die Leerzeichen vor dem Inhalt jeder Zeile wichtig sind:

IDENTIFICATION DIVISION.
       PROGRAM-ID. SENDSMS.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       PROCEDURE DIVISION.
       MAIN-PROCEDURE.
           DISPLAY "Hello world".
       END PROGRAM SENDSMS.

Wenn Sie OpenCobolIDE verwenden, können Sie dieses Modul ausführen, und Sie sollten "Hello world" in der Konsole sehen:

Successful run

Definition der Daten

Jetzt werden Sie die Datenstruktur definieren, in der die Informationen gespeichert werden, die zum Senden einer Textnachricht erforderlich sind: die Nummer, an die die Textnachricht gesendet werden soll, die Nummer, von der die Nachricht gesendet werden soll, und der Inhalt der Textnachricht.

Datenelemente in COBOL haben ein hierarchisches Format. Jede Variable erhält eine Ebenennummer, wobei die Nummern der höheren Ebene den Nummern der niedrigeren Ebene darüber untergeordnet sind.

Sie könnten zum Beispiel ein Datum in der folgenden Struktur darstellen:

01  WS-DATE.
           02  WS-YEAR  PIC X(4).
           02  WS-MONTH PIC X(2).
           02  WS-DAY   PIC X(2).

Dies ermöglicht es Ihnen MOVE "20190401" TO WS-DATE und dann jede Komponente abrufen, indem Sie auf sie verweisen als WS-YEAR, WS-MONTH, und WS-DAY. Der umgekehrte Weg ist ebenfalls möglich.

Das FILLER Schlüsselwort kann verwendet werden, um Konstanten in die Struktur einzufügen oder um bestimmte Teile der eingehenden Daten zu ignorieren. Wenn Sie zum Beispiel das Datum mit Bindestrichen dazwischen anzeigen möchten, könnten Sie Folgendes schreiben:

01  WS-DATE.
           02  WS-YEAR  PIC X(4).
           02  FILLER   PIC X VALUE '-'.
           02  WS-MONTH PIC X(2).
           02  FILLER   PIC X VALUE '-'.
           02  WS-DAY   PIC X(2).

Wenn Sie nun den folgenden Code ausführen:

MOVE "2019" TO WS-YEAR.
MOVE "04" TO WS-MONTH.
MOVE "01" TO WS-DAY.
DISPLAY WS-DATE

Das Datum wird angezeigt als 2019-04-01.

Erstellen Sie den Nexmo CLI-Befehl

Sie können sich dies zunutze machen, indem Sie den für Nexmo CLI erforderlichen Befehl zum Senden einer Textnachricht erstellen:

nexmo sms TO_NUMBER MESSAGE_CONTENTS --from FROM_NUMBER --confirm

Um auf der sicheren Seite zu sein, lassen wir bis zu 15 Ziffern für jede der Telefonnummern und 160 Zeichen für den Nachrichtentext zu.

Fügen Sie folgendes in den WORKING-STORAGE SECTION Ihres Programms ein:

01  WS-COMMAND.
           02 FILLER PIC X(5) VALUE "nexmo".
           02 FILLER PIC X(5) VALUE " sms ".
           02 WS-TO-NUMBER PIC X(15).
           02 FILLER PIC X VALUE SPACE.
           02 WS-MESSAGE PIC X(160).
           02 FILLER PIC X(8) VALUE " --from ".
           02 WS-FROM-NUMBER PIC X(15).
           02 FILLER PIC X(10) VALUE " --confirm".

Aufruf der Nexmo CLI

Die Anweisung CALL Anweisung wird verwendet, um andere Programme oder Module aufzurufen. Das Programm SYSTEM Programm ist ähnlich wie exec in anderen Sprachen, da es Ihnen ermöglicht, Befehlszeilenprogramme von Ihrem Programm aus auszuführen. Die WS-COMMAND enthält den Befehl zum Senden einer Textnachricht über die Nexmo CLI.

Jetzt müssen Sie nur noch die Variablen ausfüllen und die WS-COMMAND an das SYSTEM Programm übergeben.

Dem Absatz wird Folgendes hinzugefügt MAIN-PROCEDURE Absatz und ersetzen Sie YOUR-PHONE-NUMBER durch Ihre Rufnummer und YOUR-NEXMO-NUMBER durch Ihre gekaufte Nexmo-Nummer:

MOVE "YOUR-PHONE-NUMBER" TO WS-TO-NUMBER.
           MOVE "YOUR-NEXMO-NUMBER" TO WS-FROM-NUMBER.
           MOVE "HELLO WORLD FROM COBOL" TO WS-MESSAGE.
           CALL "SYSTEM" USING WS-COMMAND.

Hier ist das fertige Programm:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SENDSMS.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
      * nexmo sms <to> Hello world! --from <from> --confirm
       01  WS-COMMAND.
           02 FILLER PIC X(5) VALUE "nexmo".
           02 FILLER PIC X(5) VALUE " sms ".
           02 WS-TO-NUMBER PIC X(15).
           02 FILLER PIC X VALUE SPACE.
           02 WS-MESSAGE PIC X(160).
           02 FILLER PIC X(8) VALUE " --from ".
           02 WS-FROM-NUMBER PIC X(15).
           02 FILLER PIC X(10) VALUE " --confirm".

       PROCEDURE DIVISION.
       MAIN-PROCEDURE.
           MOVE "YOUR-NUMBER" TO WS-TO-NUMBER.
           MOVE "NEXMO-NUMBER" TO WS-FROM-NUMBER.
           MOVE "HELLO WORLD FROM COBOL" TO WS-MESSAGE.
           CALL "SYSTEM" USING WS-COMMAND.
           STOP RUN.
       END PROGRAM SENDSMS.

Probieren Sie es aus

Starten Sie nun Ihr Programm und staunen Sie, wenn eine neue Textnachricht auf Ihrem Telefon erscheint.

Wie geht es jetzt weiter?

Ich hoffe, dieser Einblick in COBOL hat Ihnen gefallen. Es ist vielleicht nicht die Sprache Ihrer Wahl für das Versenden von Textnachrichten, und es hängt stark von der Hardware ab, die Sie verwenden.

Wenn Sie sich der Herausforderung stellen wollen, hat Steve Williams einen COBOL REST Kliententwickelt, mit dem Sie vielleicht die Nexmo-API direkt aufrufen können.

Sie könnten mehr Erfolg haben, wenn Sie ausgehende Nachrichten in eine Nachrichtenwarteschlange stellen und dann Java verwenden, um eine Textnachricht zu senden.

Abhängig von Ihrer Mainframe-Umgebung hat IBM einige Anweisungen für HTTP-Anfragen über CICS als HTTP-Client zu stellen.

Weitere Informationen über COBOL finden Sie unter Das Nationale Museum für Amerikanische Geschichte. Einen Einblick in das Leben von Grace Hopper, der Frau, die das Team zur Entwicklung von COBOL leitete, finden Sie hier Biographie von Grace Hopper.

Teilen Sie:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Steve CrowVonage Ehemalige

Steve ist ein selbsternannter Mathlet und König des Scharfsinns. Außerdem ist er ein Liebhaber von Windhunden, kniffligen Puzzles und europäischen Brettspielen. Wenn er nicht gerade mit Nicht-Mathematikern über Mathe und mit Nicht-Javaleuten über Java spricht, kann man ihn beim Kaffeetrinken und beim Hacken von Code antreffen.