2008-09-29 5 views
0

Je peux (sur Windows XP) précompiler, compiler et lier un exemple de programme de test COBOL (Fujitsu NetCobol) qui contient du SQL embarqué. Ce programme de test doit lire et afficher le nombre de lignes dans une table de base de données DB2 (UDB 9.5 sous Linux).JMP0811I-U Erreur d'exécution Fujitsu après la compilation de Fujitsu COBOL avec DB2 SQL: cause/remède?

Lors de l'exécution, je reçois le message suivant d'erreur:

JMP0811I-U [PID: ... TID: ...] NON DANS LES RÈGLES DE LIAISON OU PARAMÈTRE DU PROGRAMME 'de sqlgstrt'. PGM = DB2TST1

Le code source precompile cette erreur fait référence se présente comme suit:

 * ... in WORKING-STORAGE section: 

     01 SQLA-PROGRAM-ID. 
     05 SQL-PART1 pic 9(4) COMP-5 value 172. 
     05 SQL-PART2 pic X(6) value "AEAMAI". 
     05 SQL-PART3 pic X(24) value "gBSdTdJY01111 2   ". 
     05 SQL-PART4 pic 9(4) COMP-5 value 13. 
     05 SQL-PART5 pic X(13) value "ADMINISTRATOR". 
     05 SQL-PART6 pic X(115) value LOW-VALUES. 
     05 SQL-PART7 pic 9(4) COMP-5 value 8. 
     05 SQL-PART8 pic X(8) value "COBOL/DB". 
     05 SQL-PART9 pic X(120) value LOW-VALUES. 

     * .. in PROCEDURE DIVISION: 

     *EXEC SQL CONNECT TO :DB-SERVER USER :DB-USER USING :DB-PWD 
     *  END-EXEC 
      CALL "sqlgstrt" USING 
       BY CONTENT SQLA-PROGRAM-ID 
       BY VALUE 0 
       BY REFERENCE SQLCA 

Quelqu'un sait-il ce que ce message d'erreur?

+0

Si j'avais 1 point de karma de plus, je le ferais pour vous, mais vous devriez changer le "cobol". tag pour supprimer le "." – Moe

+0

J'ai corrigé l'étiquette. Merci, – Sklivvz

Répondre

1

La description de l'erreur est due à: *) l'option du compilateur CHECK (LINKAGE) (disponible uniquement en NetCOBOL pour Windows, et non pour Linux) sans cette option, l'erreur est toujours là, mais encore moins descriptive

l'erreur réelle est due à: *) le CALL "sqlgstrt" USING ... généré par le précompilateur DB2 implique la mauvaise (= COBOL) convention d'appel => modifier manuellement les appels à CALL "sqlgstrt" WITH STDCALL LINKAGE USING... a résolu l'erreur d'exécution

Cette solution implique cependant de modifier les résultats du précompilateur, donc je suis toujours à la recherche d'une option de précompilateur DB2 pour générer les bons CALL.