
Partager:
Steve est un mathématicien autoproclamé et le roi du sarcasme. Il aime aussi les lévriers, les puzzles tortueux et les jeux de société européens. Lorsqu'il ne parle pas de mathématiques à des personnes qui n'en font pas, ou de Java à des personnes qui n'en font pas, on peut le trouver en train de siroter un café et de bidouiller du code.
Envoyer un message texte avec COBOL
COBOL fait fureur dans le secteur bancaire et financier : plus de 95 % des transactions effectuées dans les distributeurs automatiques de billets reposent sur du code COBOL, selon un rapport de Reuters. rapport de Reuters.
Dans ce tutoriel, je vais vous montrer une méthode bricolée pour envoyer des messages texte en utilisant COBOL. Alors allumez votre ordinateur central, préparez votre terminal 3270, et commençons à écrire du COBOL !
Attendez une minute
Qu'est-ce que c'est, vous n'avez pas n'avez pas accès à un ordinateur central de plusieurs millions de dollars ? Peut-être que votre employeur en a un que vous pouvez emprunter ? Non ? Ce n'est pas grave, il y a une solution de rechange.
Conditions préalables
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Vous aurez également besoin du CLI Nexmo. Vous pouvez l'utiliser pour acheter un numéro de téléphone afin d'envoyer des messages texte sortants.
Vous aurez également besoin d'un compilateur COBOL qui convertira votre COBOL en binaires natifs à exécuter sur votre système. Pour ce tutoriel, j'utiliserai GnuCOBOL.
GnuCOBOL est un compilateur COBOL gratuit qui convertit le COBOL en C et compile le code traduit. Il vous permet de créer des binaires natifs qui peuvent fonctionner sur Mac, Windows et Unix/Linux.
Vous pouvez trouver des liens de téléchargement pour GnuCOBOL ici. En option, les utilisateurs de Mac peuvent l'installer en utilisant homebrew :
Vous aurez également besoin d'un éditeur. J'ai utilisé avec succès le logiciel OpenCobolIDE. Vous pouvez peut-être vous contenter d'un simple éditeur de texte. Je parlerai de la structure d'un module COBOL un peu plus tard et de la raison pour laquelle il est essentiel d'avoir un IDE approprié.
Envoyer un message texte avec COBOL
Ce tutoriel vous montrera comment acheter un numéro de téléphone avec le CLI de Numbers, et comment utiliser ce numéro pour envoyer des messages texte avec COBOL.
Achat d'un numéro
Vous aurez besoin d'un numéro Nexmo pour envoyer des SMS. Si vous n'avez pas de numéro, vous pouvez utiliser la CLI Nexmo pour en acheter un :
Notez que dans certains pays, vous pouvez envoyer des messages à partir d'un identifiant d'expéditeur alphanumérique. Pour plus d'informations, voir ID d'expéditeur personnalisé.
Notez le numéro que vous venez d'acheter. Vous l'utiliserez plus tard lorsque vous écrirez le code pour créer l'appel téléphonique.
Création du module COBOL
Il existe plusieurs façons d'envoyer un message texte à partir de COBOL. Cependant, la plupart de ces méthodes varient en fonction du matériel que vous utilisez. Comme vous n'avez probablement pas accès à un ordinateur central, vous allez tricher un peu. Ce que vous allez faire, c'est créer un module COBOL qui peut appeler l'interface de programmation Nexmo pour envoyer un message texte.
Tout d'abord, passons en revue la structure des modules COBOL. Je ne vais pas vous donner un guide complet sur le COBOL, mais je pense qu'il est important de savoir comment les modules sont structurés.
La structure des colonnes
COBOL propose deux formats différents : fixe ou libre. Le format fixe exige que le code soit aligné sur des colonnes spécifiques :
| 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. |
Cette image illustre un exemple de module hello world avec les sections indiquées :

COBOL 2002 a introduit un format libre qui supprime ces restrictions de colonnes et combine les zones A et B. Je ne suis pas aussi familier avec COBOL 2002, j'ai donc choisi de m'en tenir à un format fixe pour ce tutoriel.
Les divisions
Les modules COBOL sont divisés en quatre régions différentes, appelées divisions :
Le
IDENTIFICATION DIVISIONqui fournit des informations d'identification telles que le nom du module.Le
ENVIRONMENT DIVISIONqui décrit les parties de votre module qui dépendent de l'ordinateur sur lequel il s'exécute.L'endroit
DATA DIVISIONoù vos données sont définies.L'endroit où les instructions de programmation du module sont définies.
PROCEDURE DIVISIONoù sont définies les instructions de programmation du module.
Créez un nouveau programme COBOL appelé "SENDSMS.cbl" et ajoutez le contenu suivant, en notant que les espaces sont indispensables avant le contenu de chaque ligne :
IDENTIFICATION DIVISION.
PROGRAM-ID. SENDSMS.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "Hello world".
END PROGRAM SENDSMS.Si vous utilisez OpenCobolIDE, vous pouvez exécuter ce module, et vous devriez voir "Hello world" dans la console :

Définir les données
Vous allez maintenant définir la structure de données permettant de stocker les informations nécessaires à l'envoi d'un message texte : le numéro auquel envoyer le message texte, le numéro à partir duquel envoyer le message et le contenu du message texte.
Les éléments de données en COBOL ont un format hiérarchique. Chaque variable se voit attribuer un numéro de niveau, les numéros de niveau supérieur étant subordonnés au niveau inférieur situé au-dessus.
Par exemple, vous pouvez représenter une date dans la structure suivante :
01 WS-DATE.
02 WS-YEAR PIC X(4).
02 WS-MONTH PIC X(2).
02 WS-DAY PIC X(2).Cela vous permet de MOVE "20190401" TO WS-DATE et d'extraire chaque composant en les désignant par les termes WS-YEAR, WS-MONTH, et WS-DAY. L'inverse est également vrai.
Le mot-clé FILLER peut être utilisé pour injecter des constantes dans la structure, ou pour ignorer certaines parties des données entrantes. Par exemple, si vous voulez afficher la date avec des tirets, vous pouvez écrire ce qui suit :
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).Maintenant, si vous exécutez le code suivant :
MOVE "2019" TO WS-YEAR.
MOVE "04" TO WS-MONTH.
MOVE "01" TO WS-DAY.
DISPLAY WS-DATELa date s'affiche comme suit 2019-04-01.
Construire la commande CLI de Nexmo
Vous pouvez en tirer parti en construisant la commande nécessaire à l'envoi d'un message texte par la CLI Nexmo :
Par mesure de sécurité, autorisons jusqu'à 15 chiffres pour chacun des numéros de téléphone et 160 caractères pour le corps du message.
Ajoutez ce qui suit au WORKING-STORAGE SECTION de votre programme :
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". Appeler le CLI Nexmo
L'instruction CALL est utilisée pour appeler d'autres programmes ou modules. Le programme SYSTEM est similaire au programme exec dans d'autres langages, en ce sens qu'il vous permet d'exécuter des programmes en ligne de commande à partir de votre programme. L'instruction WS-COMMAND contient la commande d'envoi d'un message texte via la CLI Nexmo.
Il ne vous reste plus qu'à remplir les variables et à passer la commande WS-COMMAND au programme SYSTEM programme.
Ajouter le texte suivant au MAIN-PROCEDURE en remplaçant YOUR-PHONE-NUMBER par votre numéro de téléphone et YOUR-NEXMO-NUMBER par votre numéro Nexmo acheté :
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.Voici le programme complété :
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.
Essayez-le
Lancez votre programme et laissez-vous surprendre par l'apparition d'un nouveau message texte sur votre téléphone.
Que faire maintenant ?
J'espère que vous avez apprécié cet aperçu du COBOL. Ce n'est peut-être pas le langage que vous choisirez pour envoyer des messages textuels, et il dépend fortement du matériel que vous utilisez.
Si vous êtes prêt à relever le défi, Steve Williams propose un client REST en COBOL REST Clientque vous pourriez utiliser pour appeler directement l'API Nexmo.
Vous aurez peut-être plus de succès en plaçant les messages sortants dans une file d'attente de messages, puis en utilisant Java pour envoyer un message texte. en utilisant Java pour envoyer un message texte.
En fonction de votre environnement mainframe, IBM donne des instructions sur les points suivants effectuer des requêtes HTTP par l'intermédiaire de CICS en tant que client HTTP.
Pour plus d'informations sur COBOL, consultez Le Musée national d'histoire américaine. Pour en savoir plus sur la vie de Grace Hopper, la femme qui a dirigé l'équipe chargée de développer le COBOL, voir ceci Biographie de Grace Hopper.
Partager:
Steve est un mathématicien autoproclamé et le roi du sarcasme. Il aime aussi les lévriers, les puzzles tortueux et les jeux de société européens. Lorsqu'il ne parle pas de mathématiques à des personnes qui n'en font pas, ou de Java à des personnes qui n'en font pas, on peut le trouver en train de siroter un café et de bidouiller du code.
