IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

z/OS Discussion :

Compilation C et COBOL sur z/OS


Sujet :

z/OS

  1. #1
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut Compilation C et COBOL sur z/OS
    Bonsoir,

    Je souhaiterais savoir comment compiler des sources C et COBOL sur z/OS, et comment lancer le binaire résultat.

    Je m'explique : j'ai accès à un z/OS de test afin de me familiariser à tous les outils (et surtout ISPF, TSO et le JCL).
    Je suis habitué à développer en C/UNIX et C/Windows, mais j'aimerais bien essayer le C/zOS afin de voir les possibilités... et de savoir en faire un petit peu !
    Auriez-vous de la documentation sur le C/zOS (les syscalls z/OS avec leurs paramètres, etc...) ? Si possible les liens directs, ou les noms des meilleurs redbooks associés.
    Avec quels outils puis-je développer sur z/OS ? Pour le moment j'ai du notepad++, ainsi qu'emacs sur cygwin.... donc je ne sais pas trop comment transférer... (le transfert via l'émulateur de 3270 ne marche pas toujours très bien de mon côté, je serais intéressé pour savoir comment activer USS/OMVS pour ajouter un service FTP et ajouter quelques utilisateurs sur z/OS)

    De plus, j'avais fais un peu d'OpenCOBOL avec un fichier simple et formaté, comment puis-je compiler et exécuter ce programme sur Hercules ? (je pense avoir compris l'association des DDnames et des DSN en JCL avec les file control COBOL)

    J'en demande beaucoup, mais je souhaite vraiment pouvoir utiliser correctement mon petit zOS/Hercules et me permettre d'expérimenter beaucoup de choses ^^'
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  2. #2
    Membre habitué
    Homme Profil pro
    Retraité ex-Développeur Grands Systèmes IBM
    Inscrit en
    Août 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Retraité ex-Développeur Grands Systèmes IBM

    Informations forums :
    Inscription : Août 2008
    Messages : 74
    Points : 133
    Points
    133
    Par défaut
    Salut !
    Pour utiliser les programmes développés (compilation + édition de liens) l'exécutable se trouve dans une bibliothèque ; celle-ci se déclare avec le DDName STEPLIB (même syntaxe qu'une carte DD classique) et la validité est limitée au STEP en cours (derrière la carte EXEC).
    //STEPLIB DD DISP=SHR,DSN=<nom de la bibliothèque>
    Ça peut se déclarer également en tête de JOB avant le 1er STEP avec le DDName JOBLIB dans ce cas la validité est sur la totalité du JOB.
    J'espère que cela peut t'aider...
    @+
    JG

    PS Pour mémoire chaque ligne JCL est dite "carte"

  3. #3
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Merci !
    En effet, la partie JCL m'intéressait ! (M.Dlb m'avait expliqué en vitesse qu'il fallait faire un CALL en TSO, et je suppose qu'il faut rajouter la bibliothèque avec la sortie de la compilation dans l'environnement du TSO, mais je ne me souviens plus de la commande en question, si une âme charitable pourrait me la redonner, ce serait gentil)

    M.Dlb m'avait également parlé de XL C/C++, en m'envoyant vers boulder, mais je suis aussi preneur des bookshelves (et du lien surtout !)... et aussi du job pour compiler 2 membres d'un PDS vers 1 exécutable si possible...
    (j'en demande beaucoup...)
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Bonsoir

    Citation Envoyé par Metalman Voir le message
    Auriez-vous de la documentation sur le C/zOS (les syscalls z/OS avec leurs paramètres, etc...) ? Si possible les liens directs, ou les noms des meilleurs redbooks associés.
    Le lien de départ: http://www-03.ibm.com/systems/z/os/zos/bkserv/
    De là, tu trouves l'infocenter (aussi connu sous le nom de Boulder), où tu as de la documentation Web. Mais je préfère de loin les bouquins (PDF), beaucoup plus rapide une fois le téléchargement effectué. De l'infocenter, tu peux des fois les télécharger, sinon, se rabattre sur les bookshelves (dans la page principale, chercher la section "z/OS elements and features shelf") sur la bonne version (la version n'a pas vraiment d'impact, sauf sur les toutes dernières fonctionnalités).

    En cherchant "Xl" dans les bookshelves, tu trouves ce genre de livres:
    z/OS V1R13.0 XL C/C++ Language Reference cbclr1b0 06/13/11 04:09:46 SC09-4815-11
    z/OS V1R13.0 XL C/C++ Messages cbcdg190 06/10/11 11:30:41 GC09-4819-09
    z/OS V1R13.0 XL C/C++ Programming Guide cbcpg1c1 08/02/12 23:47:32 SC09-4765-13
    z/OS V1R13.0 XL C/C++ Run-Time Library Reference edclb1c0 06/17/11 18:00:47 SA22-7821-13
    z/OS V1R13.0 XL C/C++ User's Guide cbcug1a1 08/02/12 02:24:33 SC09-4767-11
    Le Programming Guide et le Run-Time Library Reference sont les plus intéressants, une fois la logique de développement comprise (compilation, link...)


    Citation Envoyé par Metalman Voir le message
    Avec quels outils puis-je développer sur z/OS ? Pour le moment j'ai du notepad++, ainsi qu'emacs sur cygwin.... donc je ne sais pas trop comment transférer... (le transfert via l'émulateur de 3270 ne marche pas toujours très bien de mon côté, je serais intéressé pour savoir comment activer USS/OMVS pour ajouter un service FTP et ajouter quelques utilisateurs sur z/OS)
    Perso, ISPF, ce qui évite les transferts de fichier... Le temps "perdu" avec ISPF quand on a pas l'habitude est compensé par les transferts FTP. A noter qu'il existe un serveur FTP qui va avec la stack TCP/IP de z/OS, il faut démarrer la bonne STC

    Cadeau, un job de compil/link à adapter bien sûr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    //COMPILNK JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,REGION=0M,
    //         NOTIFY=&SYSUID,TIME=30                          
    //COMPILE EXEC PGM=CCNDRVR,                                
    //        PARM='/SEARCH(''CEE.SCEEH.+'') NOOPT SO OBJ LIST'
    //STEPLIB DD DSNAME=CEE.SCEERUN,DISP=SHR                   
    //        DD DSNAME=CEE.SCEERUN2,DISP=SHR                  
    //        DD DSNAME=CBC.SCCNCMP,DISP=SHR                   
    //SYSPRINT DD SYSOUT=*                                     
    //SYSCPRTT DD SYSOUT=*                                     
    //SYSLIB DD DSN=SYS1.MDALBIN.PROG.C,DISP=SHR               
    //       DD DISP=SHR,DSN=TCPIP.SEZACMAC                    
    //       DD DISP=SHR,DSN=CEE.SCEEH.H                       
    //USERLIB DD DSN=SYS1.MDALBIN.PROG.C,DISP=SHR              
    //SYSIN  DD DSN=SYS1.MDALBIN.PROG.C(TCPS),DISP=SHR         
    //SYSLIN DD DSN=SYS1.MDALBIN.PROG.OBJ(TCPS),DISP=SHR       
    //BIND1 EXEC PGM=IEWL,PARM='OPTIONS=OPTS'                  
    //OPTS DD *                                                
         AMODE=31,MAP                                          
         NORENT,DYNAM=DLL                                      
         CASE=MIXED                                            
    /*                                                         
    //SYSLIB DD DISP=SHR,DSN=CEE.SCEELKEX                      
    //       DD DISP=SHR,DSN=TCPIP.SEZACMTX                    
    //       DD DISP=SHR,DSN=CEE.SCEELKED                      
    //       DD DISP=SHR,DSN=CEE.SCEECPP                       
    //       DD DISP=SHR,DSN=SYS1.CSSLIB                       
    //SYSLIN DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(TCPS)       
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(EDSATT)     
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(WAIT)       
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(STOP0C1)    
    //       DD DISP=SHR,DSN=CBC.SCLBSID(IOSTREAM)             
    //SYSLMOD DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OUT(TCPS)
    //SYSPRINT DD SYSOUT=*                               
    //*
    Pour lancer le programme, soit par JCL, en spécifiant en STEPLIB la bibliothèque qui contient le module, soit par un CALL sous TSO (commande TSO pour lancer un programme compilé). Le batch de lancement, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //RUN      JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A,REGION=0M,
    //         NOTIFY=&SYSUID,TIME=30                          
    //RUNPRM   EXEC PGM=TESTPROG,REGION=0M                       
    //STEPLIB  DD DSN=SYS1.MDALBIN.PROG.OUT,DISP=SHR       
    //CONFIG   DD DSN=SYS1.MDALBIN..CONFIG,DISP=SHR         
    //SYSPRINT DD SYSOUT=*                                     
    //SYSUDUMP DD SYSOUT=*                                     
    //SYSABEND DD SYSOUT=*
    Y'a plus qu'à adapter tout ça, et comprendre ce que ca fait !
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Wouah !
    Un grand merci à M.Dlb !
    J'espère que cela en aidera plus d'un !

    A tout hasard, pour activer une STC, si me souviens bien, il faut ajouter son JCL dans la PARMLIB ? (et on connait la PARMLIB chargée grâce aux paramètres de l'IPL si je me souviens bien....)
    Théoriquement un FTP est censé déjà tourner, mais c'est pour être bien sûr !
    (et l'ajout d'utilisateurs sur le système se fait avec des commandes RACF, je suppose ? Mon école possède quelques vieux livres d'exercices corrigés d'IBM, je retournerai là bas pour les relire)

    J'essaye tout cela ce WE, et je reviendrai probablement vous demander de l'aide.... (mais dès que ça compilera.... j'espère que mes connaissances en C + vos liens me suffiront pour continuer comme un grand !)

    Merci à tous !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Eternel débat juridique avec Hercules ...

    Si l'outil lui-même est bien "Open Source", les systèmes d'exploitation récents (z/OS 1.13 ou 1.14 par exemple) qui pourraient l'utiliser sont soumis à des restrictions d'utilisation très strictes de la part d'IBM (la nécessité d'avoir un numéro de série ("Serial Number") par exemple ...), et sans même parler des autres produits logiciels qui sont bien sûr payants.

    Donc, à moins d'avoir reçu l'autorisation de la part d'IBM, je suis toujours dubitatif quand quelqu'un me dit vouloir se former au Mainframe avec Hercules ...

    voir aussi :
    Demande d'aide pour Hercules Emulator

  7. #7
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Pour la partie Hercules c'est réglé depuis très longtemps.
    Le z/OS n'est pas récent, mais il me sert surtout personnellement pour acquérir les réflexes, et revoir les bases.
    Je sais déjà faire du C, et un touuuuut petit peu de COBOL.
    Je souhaite vraiment voir ce que le z/OS offre en interface... pour le plaisir de savoir surtout !

    Initialement, le système devait m'aider à bien utiliser ISPF, SDSF, TSO et taper un peu de JCL, mais comme je souhaite aller un peu plus loin (et surtout je veux vraiment voir mon unique programme COBOL tourner sur un z/OS une fois dans ma vie ), j'en profite pour améliorer mes mini-compétences.

    Enfin rassurez-vous : ça n'est pas un z/OS caché qui fait de la prod' pour une entreprise.

    EDIT : voilà le programme COBOL que je veux faire tourner topic developpez.net, il est écrit dans les derniers posts.
    Evidemment, j'avais recherché dans le passé l'utilisation du SORT z/OS pour éviter le tri interne COBOL, mais il me manquait évidemment le plus important : compiler du COBOL !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  8. #8
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Je plussoie Luc Orient,

    Soit tu as une version obsolète de ce que tu appelles z/OS --> MVS 3.8 la seule version me semble-t-il qui soit "libre" et dans ce cas ISPF, SDSF et TSO ont pas mal évolués.

    Soit c'est une version non autorisée.

    En tout état de cause c'est dommage que des gens motivés comme toi ne puissent pas s'essayer à ce Système dans de meilleures conditions.

  9. #9
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    En effet, tout devient difficile en ce moment pour expérimenter... :s
    Je ne perds pas espoir, "peut être" qu'une nouvelle formation un peu plus orientée développement me sera fournie dans les mois à venir... mais je veux tester le plus tôt possible !


    J'ai essayé d'adapter la solution de M.Dlb :

    J'ai alloué plusieurs PDS :
    • METAL.MALIB.C : contient les sources (dont le membre HELLOC), RECFM=VB, LRECL=255, Block Size = 5100
    • METAL.MALIB.JCL : contient les JCL pour compiler et lancer, RECFM=FB, LRECL=80, Block Size = 800
    • METAL.MALIB.OBJ : d'après ce que je connais du C et ce que je lis du JCL, cela doit être l'équivalent des .o sur Unix/Linux, RECFM=VB, LRECL=256, Block Size = 512
    • METAL.MALIB.OUT : toujours d'après le JCL, cela contient le programme final, probablement, RECFM=VB, LRECL=256, Block Size = 512


    Voici le contenu de METAL.MALIB.C(HELLOC), en caps off :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(void)                          
    {                                       
      int s = 42;                           
      char *str = "Hello World!";           
      printf("i : %d, str : %s\n", i, str); 
                                          
       return (0);                           
    }
    Le JCL de compilation "modifié", METAL.MALIB.JCL(CC) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    //COMPILNK JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,REGION=0M,
    //         NOTIFY=&SYSUID,TIME=30                          
    // SET FICHIER=HELLOC                                      
    //COMPILE EXEC PGM=CCNDRVR,                                
    //        PARM='/SEARCH(''CEE.SCEEH.+'') NOOPT SO OBJ LIST'
    //STEPLIB DD DSNAME=CEE.SCEERUN,DISP=SHR                   
    //        DD DSNAME=CEE.SCEERUN2,DISP=SHR                  
    //        DD DSNAME=CBC.SCCNCMP,DISP=SHR                   
    //SYSPRINT DD SYSOUT=*                                     
    //SYSCPRTT DD SYSOUT=*                                     
    //SYSLIB DD DSN=METAL.MALIB.C,DISP=SHR                     
    //       DD DISP=SHR,DSN=TCPIP.SEZACMAC                    
    //       DD DISP=SHR,DSN=CEE.SCEEH.H                       
    //USERLIB DD DSN=METAL.MALIB.C,DISP=SHR                    
    //SYSIN  DD DSN=METAL.MALIB.C(&FICHIER),DISP=SHR       
    //SYSLIN DD DSN=METAL.MALIB.OBJ(&FICHIER),DISP=SHR     
    //BIND1 EXEC PGM=IEWL,PARM='OPTIONS=OPTS'              
    //OPTS DD *                                            
         AMODE=31,MAP                                      
         NORENT,DYNAM=DLL                                  
         CASE=MIXED                                        
    /*                                                     
    //SYSLIB DD DISP=SHR,DSN=CEE.SCEELKEX                  
    //       DD DISP=SHR,DSN=TCPIP.SEZACMTX                
    //       DD DISP=SHR,DSN=CEE.SCEELKED                  
    //       DD DISP=SHR,DSN=CEE.SCEECPP                   
    //       DD DISP=SHR,DSN=SYS1.CSSLIB                   
    //SYSLIN DD DISP=SHR,DSN=METAL.MALIB.OBJ(&FICHIER)     
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(EDSATT) 
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(WAIT)   
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(STOP0C1)
    //       DD DISP=SHR,DSN=CBC.SCLBSID(IOSTREAM)     
    //SYSLMOD DD DISP=SHR,DSN=METAL.MALIB.OUT(&FICHIER)
    //SYSPRINT DD SYSOUT=*                             
    //*
    Quand je "sub" le job, j'ai droit à un fabuleux code 16, et je n'arrive pas à trouver dans SDSF en output mon job...
    METAL.MALIB.OBJ contient bien un membre HELLOC, mais il est vide (probablement alloué par JES sans plus...)
    Je suppose que je n'aurais pas dû mettre de VB pour les OBJ et OUT, mais je suis perdu tout d'un coup à ne même pas pouvoir trouver de logs pour m'indiquer un peu plus d'erreurs.

    Si vous avez des pistes, cela m'intéresse toujours !
    (Pareil pour la compilation COBOL !)
    Le Programming Guide des shelves est inaccessible, malheureusement...
    J'ai trouvé ça : XL C/C++ guide : binding, compiling z/OS Batch
    Je suppose que sans .h ça ne marche pas donc...

    Merci encore à tous pour vos réponses ! (même si elles rappellent le cadre très très strict d'utilisation du z/OS !)
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 41
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    tu a deux étiquettes SYSLIB dans ton Jcl de compil. C'est peut-être ça le pb ...

    EDIT :
    eh bé non; j'avais pas vu la carte
    //BIND1 EXEC PGM=IEWL,PARM='OPTIONS=OPTS'

  11. #11
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    En effet, il y a 2 programmes... mais cela m'a donné de bonnes idées de recherches !
    Compiler CCNDRVR
    Binder IEWL

    J'ai ajouté un PDS : METAL.MALIB.H (même format que METAL.MALIB.C)
    Et surtout le JCL ressemble enfin à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    //COMPILNK JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,REGION=0M,         
    //         NOTIFY=&SYSUID,TIME=30                                   
    // SET FICHIER=HELLOC                                               
    /*                                                                  
    /* **************************************************************** 
    /* * COMPILE CCNDRVR '/SEARCH(''CEE.SCEEH.+'') NOOPT SO OBJ LIST' * 
    /* **************************************************************** 
    /*                                                                  
    //COMPILE EXEC PGM=CCNDRVR,                                         
    //        PARM='/SEARCH(''CEE.SCEEH.+'') NOOPT SO OBJ LIST'         
    //STEPLIB DD DSNAME=CEE.SCEERUN,DISP=SHR                            
    //        DD DSNAME=CEE.SCEERUN2,DISP=SHR                           
    //        DD DSNAME=CBC.SCCNCMP,DISP=SHR                            
    //SYSPRINT DD SYSOUT=*                                              
    //SYSCPRTT DD SYSOUT=*                                              
    /* SYSLIB DD DSN=METAL.MALIB.C,DISP=SHR                             
    /*       DD DISP=SHR,DSN=TCPIP.SEZACMAC                             
    /*       DD DISP=SHR,DSN=CEE.SCEEH.H                                
    /* USERLIB DD DSN=METAL.MALIB.C,DISP=SHR                            
    //SYSIN  DD DSN=METAL.MALIB.C(&FICHIER),DISP=SHR                    
    //SYSLIN DD DSN=METAL.MALIB.OBJ(&FICHIER),DISP=SHR                  
    /*                                                                  
    /* *************************************************                
    /* *  BIND1  IEWL 'OPTIONS=OPTS'                   *                
    /* *************************************************                
    /*                                                                  
    //BIND1 EXEC PGM=IEWL,PARM='OPTIONS=OPTS'                           
    //OPTS DD *                                                         
         AMODE=31,MAP                                                   
         NORENT,DYNAM=DLL                                               
         CASE=MIXED                                              
    /*                                                           
    //SYSLIB DD DISP=SHR,DSN=CEE.SCEELKEX                        
    //       DD DISP=SHR,DSN=TCPIP.SEZACMTX                      
    //       DD DISP=SHR,DSN=CEE.SCEELKED                        
    //       DD DISP=SHR,DSN=CEE.SCEECPP                         
    //       DD DISP=SHR,DSN=SYS1.CSSLIB                         
    //SYSLIN DD DISP=SHR,DSN=METAL.MALIB.OBJ(&FICHIER)           
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(EDSATT)       
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(WAIT)         
    //*      DD DISP=SHR,DSN=SYS1.MDALBIN.PROG.OBJ(STOP0C1)      
    //       DD DISP=SHR,DSN=CBC.SCLBSID(IOSTREAM)               
    //SYSLMOD DD DISP=SHR,DSN=METAL.MALIB.OUT(&FICHIER)          
    //SYSPRINT DD SYSOUT=*                                       
    //*
    Après avoir sub le job, j'ai enfin un petit avancement ! (déjà j'ai retrouvé mes logs en SDSF en "st"... hrem)

    CCN0629(U) 'METAL.MALIB.OBJ' has invalid attributes.
    CCN0630(I) 'METAL.MALIB.OBJ' has attributes RECFM = VB, LRECL = 256, BLKSIZE = 512.
    CCN0632(I) The attributes should be one of the following:
    RECFM = F, FS; LRECL = 80; BLKSIZE = 80
    RECFM = FB, FBS; LRECL = 80; 80 <= BLKSIZE <= 32720
    Merci encore à M.Dlb !
    Votre JCL de base m'a donné exactement les noms de programmes à chercher !
    J'ai vraiment l'impression d'avancer dans ma quête juste avec 2 JCL, vos explications... et google + boulder ! ^^'
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  12. #12
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Bonsoir !

    J'avance toujours.
    J'ai modifié mon PDS METAL.MALIB.OBJ, et une erreur sur le linker me sortait également que METAL.MALIB.OUT devait être en RECFM=U.

    Les PDS sont donc maintenant :
    • METAL.MALIB.OBJ : RECFM=FB LRECL=80
    • METAL.MALIB.OUT : RECFM=U LRECL=80


    J'ai un error code à 12 maintenant, un PDS METAL.MALIB.C.LIST a été créé et il semble contenir les erreurs de compilation.
    Actuellement, j'ai ça en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        1       !int main(void)                            
        2       !{                                         
    ===========> a.........................................
    *=ERROR===========> a - CCN3046 Syntax error.          
        3       !  int s = 42;                             
        4       !  char *str = "Hello World!";             
        5       !  printf("i : %d, str : %s\n", i, str);
    Dans mon code, évidemment, il n'y a pas de 'a' qui se balade tout seul.
    Même en faisant des F11 (pour aller à droite), la ligne semble entièrement vide.

    Plus bas je peux lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     CCN3046     30      Syntax error. 
                         ( 2-0:2 )
    Je me doute qu'il s'agit de la 2e ligne, serait-ce l'accolade qui ne passe pas ?...
    Pourquoi la fermante fonctionnerait ?
    Si quelqu'un a une explication, encore une fois, je suis preneur !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  13. #13
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    bonjour

    surement un problème de code-page.

    vérifie celui du logiciel de connection.

  14. #14
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Bonne idée !

    J'avais aussi trouvé ça : Lien

    Je soupçonnait déjà quelque chose dans l'encoding...
    Je transforme mon PDS de VB 255 vers FB 240, puis je cherche l'encodage de mon émulateur 3270 !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  15. #15
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Oui, le C est capricieux, j'utilise souvent le CP 1047 (United States) pour coder en C, c'est beaucoup plus simple !
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  16. #16
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    En effet... en passant en 1047 - US...
    Voilà ce qui apparait dans mon membre HELLOC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(void)                         
    é                                      
      int s = 42;                          
      char *str = "Hello World|";          
      printf("i : %d, str : %sçn", i, str);
                                           
      return (0);                          
    è
    Merci bien pour l'explication !

    Bref, en plus je n'ai pas fait gaffe aux âneries que j'ai écrit... genre "int s", pour appeler après "i"...
    J'ai oublié d'include stdio.h, mais cela n'a absolument pas gêné la compilation.
    Le code retour est devenu 0 !

    Pour l'exécution, j'ai dû mettre la carte DD "CONFIG" en commentaire...
    Je n'ai pas encore bien compris ce que je devrais mettre dedans...

    L'exécution s'est déroulée correctement, dans ma log "st" j'ai pu voir la sortie de mon printf !
    Comment devrais-je faire pour écrire dans la "o"/output log ?
    Je suis convaincu que je dois rajouter une carte DD, mais je ne sais pas encore laquelle.

    Dès que je peux écrire dans la "output" log, je copie/colle mon code et mes JCL ici même pour aider les suivants !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  17. #17
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonjour

    Quelques liens que j'ai toujours dans mes favoris:

  18. #18
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    La carte DD CONFIG de mon job RUN pointe sur un fichier de config que mes programmes lisent. Si tu n'en as pas besoin, tu peux la commenter.

    Pour voir la sortie "séparée", tu peux faire un ? devant ton job en st, pour récupérer un membre SYSPRINT qui contient la sortie standard
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  19. #19
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    @bernard : Ha ! Merci pour ces infos ! Je connaissais l'existence de plusieurs EBCDICs, mais au point qu'un même OS puisse travailler avec 2 codepages...
    Je vais garder en effet la version FR et US de mes profils pour m'éviter des difficultés.

    @M.Dlb : Ah ! Je croyais que SYSOUT servait à la sortie... mais en googlant un peu... je suis un peu perdu...
    Certains disent que cela sert à sortir les DISPLAY COBOL, et divers messages pour les logs, et le SYSPRINT pour la partie purement traitement...
    Si je comprends bien :
    - SYSOUT = messages de debug
    - SYSPRINT = données traitées (listings, etc...)
    Est-ce correct ?

    Pour ouvrir le DD CONFIG dans mon programme en C, il me suffit de taper une de ces solutions ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int fd;
    stream s;
    
    fd = open(CONFIG, O_RDONLY);
    s = fopen(CONFIG, rw);
    Et pour écrire ?
    Je crée le DSN avec mon JCL et j'écris comme je le souhaite ? (en séparant les enregistrements avec des '\n' pour que le programme "revienne" à la ligne/bourre de blanc ce qui dépasse ?)

    J'essayerai dans tous les cas, histoire de voir les comportements...
    C'est aussi le but de cette expérimentation !
    Ce soir j'édite mon premier post pour donner la méthode pas à pas de compilation du C avec XL C/C++ !


    Et à tout hasard : comment s'appelle le programme compilant du COBOL ? (son nom "dans la doc", et son nom "dans la carte EXEC du JCL")

    Merci !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  20. #20
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Et bien, une SYSOUT, c'est un terme générique pour dire "sortie", traditionnellement sous le contrôle de JES2... SYSPRINT c'est le nom d'une SYSOUT

    Pour les fichiers, regarder le Chapitre 5 "Opening Files, du bouquin "z/OS XL C/C++Programming Guide"
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PC] Comment utiliser le plugin Cobol sur Eclipse ?
    Par julien-blaise dans le forum Cobol
    Réponses: 7
    Dernier message: 24/02/2012, 08h36
  2. [PC] Compilateur Cobol sur WinXP
    Par titof dans le forum Cobol
    Réponses: 13
    Dernier message: 16/03/2011, 11h52
  3. Réponses: 3
    Dernier message: 06/10/2006, 13h55
  4. Réponses: 1
    Dernier message: 11/12/2004, 19h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo