Bonjour,
je cherche à appeler un programme COBOL sous AS400 à partir d'un programme JAVA?
est ce que quelqu'un a une idée la dessus?
Merci d'avance![]()
Bonjour,
je cherche à appeler un programme COBOL sous AS400 à partir d'un programme JAVA?
est ce que quelqu'un a une idée la dessus?
Merci d'avance![]()
Mes articles, Mon Blog
Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----
tout d'abord... bonne chance![]()
sinon, il existe un pack web services pour as400
voir http://www-128.ibm.com/developerwork...rary/ws-as400/
pas trop d'autre solution a mon avis.
merci beaucoup, je vais foncer dans ce sens même si ça fait longtemps que je n'ai pas mis la main sur les web services mais bon ... vu que ça répond à ma question donc....
merci encore une fois![]()
Mes articles, Mon Blog
Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----
C'est possible sans web service :
http://www-03.ibm.com/servers/eserver/iseries/toolbox/
Si jamais, je dois pouvoir retrouver un exemple.
un exemple serait le bien venu de ta part. car je perd les pedalles à trouver un exemple avec une architecture plus simple....
Merci![]()
Mes articles, Mon Blog
Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----
Fais une recherche dans cette doc, dans le Programmer's guide :
Programmation --> Java --> IbmToolbox for Java --> Ibm Toolbox for Java classes --> Access classes --> Access Package - ProgramCall Classe
(ouf, vive les docs Ibm)
Il y a 1 ou 2 exemples déjà là.
Je te poste mon exemple dans la journée
PS : J'ai supposé que ton programme COBOL avait été compilé bien sûr hein ..
oui oui bien sûr mon programme COBOL est bien compilé et marche parfaitement, me manque juste son exécution![]()
je vais chercher et je te tiens au courant![]()
Mes articles, Mon Blog
Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----
Hop là, j'ai retrouvé, un peu épuré aussi, histoire d'aller à l'essentiel. C'est sans doute tout moche, mais ça date déjà ..
Par contre, il faut aussi que quelque chose soit installé sur l'AS400. Mais là, c'est plus trop trop mon rayon. D'après ce que je lis dans la doc, c'est installé de base sur la plupart des serveur .. A voir ce que ca donne chez toi.
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
47
48
49
50
51
52
53
54
55
56
57
58 import com.ibm.as400.access.*; public class ExecutionAS400 { public ExecutionAS400(String paramrfuc, String paramdate) { AS400 sys = new AS400("160.1.1.1"); // déclarations des convertisseurs de données // AS400Text : longueur des données, CCSID (=297 pour systeme), AS400 Object AS400Text text1024Converter = new AS400Text(1024, 297, sys); AS400Text text2Converter = new AS400Text(2, 297, sys); AS400Text text7Converter = new AS400Text(7, 297, sys); ProgramCall pgm = new ProgramCall(sys); // ********* Préparation de la liste de paramètres ********* ProgramParameter[] parmList = new ProgramParameter[3]; byte[] rfuc = text2Converter.toBytes(paramrfuc); byte[] date = text7Converter.toBytes(paramdate); byte[] message = text1024Converter.toBytes(new String("")); parmList[0] = new ProgramParameter(rfuc); parmList[1] = new ProgramParameter(date); parmList[2] = new ProgramParameter(1024); // ********* Execution du programme sur le système ********* try { // paramètres toPath : Bibliothèque, Programme, Type d'objet pgm.setProgram(QSYSObjectPathName.toPath("CNFOBJ", "GCXGH17", "PGM"), parmList); // Et hop, on lance le tout et on regarde c'qu'il se passe .. if (pgm.run() != true) { // En cas d'erreur d'exécution sur l'AS400 .. AS400Message[] messageList = pgm.getMessageList(); System.out.println("Probleme de lancement du pgm sur as400"); for (int i = 0; i < messageList.length; i++) { System.out.println(messageList[i].getText()); } } else { // on récupère le paramètre qui était en OutPut .. byte[] data2 = parmList[2].getOutputData(); // Avant de l'utiliser, faut pas oublier de convertir .. String travail = new String((text1024Converter.toObject(data2)).toString()); } } catch (Exception e) { System.out.println(e.toString()); } // On a terminé, on fout la paix au service .. sys.disconnectService(AS400.COMMAND); } }
Voilà j'ai utiliser ta classe pour lancer mon programme mais ça me ressort une exception de type : java.lang.NullPointerException
mais je ne sais pas quoi faire!!
peut être come tu l'as dis il faut installer quelque chose au niveau de l'AS400. si tu as une piste je serai très très reconnaissant![]()
Mes articles, Mon Blog
Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----
Dans le lien que je t'ai filé, il y a le lien vers le Programmer's guide, et dedans, il y a tout normalement, en cherchant sur Ibm Toolbox for Java (Install sur l'AS, liens pour telecharger le .jar ...). Il y a le détail des classes. Ils expliquent aussi comment vérifier que le package est installé sur le serveur. Par contre, c'est en anglais pour la plupart de la doc.
Petite précision : j'ai utilisé le jt400.jar pour ça, j'ai jamais essayé le jtopen.
Sinon, à quelle ligne se situe le NullPointerException ?
Il manque peut-être aussi des import au début de l'exemple, j'ai fait le ménage à la barbare .. J'ai pas recompilé non plus, mais normalement, je n'ai enlevé que des trucs un peu spécifiques à l'application, ça ne devrait pas gêner pour l'exemple.
moi aussi j'ai utilisé le jt400.jar. la classe se compile bien. l'exception est générée au moment de l'appel de la fonction RUN.
je vais essayer de suivre tes liens pour comprendre s'il me manque quelque chose au niveau de l'AS400....
m'ci![]()
Mes articles, Mon Blog
Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----
Partager