Si vous regardez l'option COBOL dans la barre de menus en haut de l'écran, sélectionnez Program type
vous verrez deux options: Executable
; Module
.
Pour le programme démarré à partir du système d'exploitation, votre MAIN, vous devez définir sur Executable. Pour le programme CALLed, UTIL, vous devez le régler sur Module.
Vous devriez également essayer d'installer GnuCOBOL, qui est le nouveau nom d'OpenCOBOL. GnuCOBOL est activement maintenu. Le site GnuCOBOL est actuellement sur SourceForge.Net. Il y a une discussion récente dans le Help getting started
pour savoir exactement comment faire cela (pour Ubuntu, de toute façon, si vous utilisez quelque chose de différent, postez une question et vous obtiendrez de l'aide).
Divulgation: Je suis un modérateur là.
Vous devez savoir que le concept de "principal" n'existe pas dans COBOL lui-même, pas dans le sens des autres langues que vous connaissez. Exactement comment fonctionne le programme initial est à la mise en œuvre et le système d'exploitation. Sous Linux/Unix/Windows, le programme initial est compilé différemment, donc il ressemble plus à un "principal". Sur un mainframe IBM, il n'est pas compilé différemment.
Notez également qu'un sous-programme peut APPELER un autre sous-programme. Vous devrez compiler les deux en tant que module dans votre cas. Ce n'est pas COBOL qui dicte cela, mais le système d'exploitation et l'implémentation. Si vous apprenez COBOL, soyez moderne à ce sujet. Dans la DIVISION DE LA PROCÉDURE, n'attachez pas un point/une période à une ligne de code et utilisez-les uniquement lorsqu'ils sont nécessaires, et non lorsqu'ils sont optionnels. Dans les normes COBOL antérieures, le point d'arrêt complet était la seule terminaison de portée disponible, et pour la rétrocompatibilité, il agit toujours comme un "super-scope-terminator" qui n'est généralement pas ce que vous voulez, et si c'était le cas vous voulez, c'est une mauvaise pratique que tout autre lecteur considérerait comme une erreur et se demander ce que vous aviez vraiment prévu.
Un arrêt/une période est nécessaire: pour terminer l'instruction PROCEDURE DIVISION; terminer un libellé de paragraphe ou de SECTION; pour terminer un paragraphe ou une section elle-même; pour terminer un programme.
Si vous utilisez une directive de compilation COPY
ou REPLACE
, vous devez également mettre fin à ceux-ci avec un point/une période.
Votre sous-programme ne contient pas de programme GOBACK, RETURN ou EXIT. Même si cela fonctionnait, ce serait non-standard, non portable et ne serait pas un bon moyen d'apprendre COBOL.
Dans le monde réel de la programmation COBOL, vous ne pouvez pas/jamais trouver un PIC A utilisé. Il est considéré comme peu utile, car tout ce qu'il fait est d'éviter d'utiliser ce champ comme source et un champ numérique comme cible dans la même déclaration. Utiliser un PIC X au lieu du PIC A est ce que vous verrez normalement, donc vous pouvez tout aussi bien commencer maintenant (malgré ce que n'importe quel tutoriel peut dire).
C'est une opinion, et vous n'avez pas besoin de suivre ce conseil, mais dans la pratique, c'est comme ça.
L'utilisation de virgules (ou de tout autre séparateur non pertinent) dans les instructions COBOL ne fait qu'ombrer un programme. Ils n'ont aucune valeur réelle. Ceci est valable:
PROCEDURE DIVISION USING LS-STUDENT-ID, , , , , LS-STUDENT-NAME.
Alors, quel serait le point?
Il n'y a aucun avantage à définir un champ comme numérique simplement parce qu'il contient un nombre. Vous n'allez jamais faire un calcul avec l'identifiant de l'étudiant, il vaut donc mieux qu'il soit PIC X et non PIC 9.
Je trouve difficile de croire que vous avez trouvé le temps de changer votre avatar, mais n'a pas trouver le temps de donner votre avis. –