PHP sur AS400
Fermé
Tittom
Messages postés
422
Date d'inscription
mardi 30 mai 2000
Statut
Membre
Dernière intervention
10 janvier 2007
-
4 oct. 2001 à 21:46
adil - 30 mai 2012 à 15:39
adil - 30 mai 2012 à 15:39
A voir également:
- Php as400
- Easy php - Télécharger - Divers Web & Internet
- As400 sap - Forum Bases de données
- Bouton php - Forum PHP
- Php?id=1 - Forum PHP
- \R php ✓ - Forum PHP
50 réponses
Voici un outil que j'utilise pour faire eventuellement pour faire mes tests de requete sur l'as400
dbdesigner fork >>> https://sourceforge.net/projects/dbdesigner-fork/
en dehors d'un moyen d'extrait les données de la base , il existe dessus un outil permettant de creer des requete sql pour AS400 et aussi pour bien d'autre SGBD.
dbdesigner fork >>> https://sourceforge.net/projects/dbdesigner-fork/
en dehors d'un moyen d'extrait les données de la base , il existe dessus un outil permettant de creer des requete sql pour AS400 et aussi pour bien d'autre SGBD.
Hey les gars, on est en 2008, la 1ère question de ce sujet PHP date je crois de 2001...
Bon,ya eu du chemin fait depuis.
Parler PHP sur l'AS400 maintenant, on trouve : allez voir le spécialiste, PHLSOFT. Et vous savez comment ils ont appellé leur site ? Je vous le donne en mille émile : www.php400.com , pas plus ni moins !!!! Ils ont créé avant toute une suite de produits (phlweb, phlprint, ...) rien que pour l'AS400. Voir www.phlsoft.com et vous m'en direz des nouvelles.
A+
Bon,ya eu du chemin fait depuis.
Parler PHP sur l'AS400 maintenant, on trouve : allez voir le spécialiste, PHLSOFT. Et vous savez comment ils ont appellé leur site ? Je vous le donne en mille émile : www.php400.com , pas plus ni moins !!!! Ils ont créé avant toute une suite de produits (phlweb, phlprint, ...) rien que pour l'AS400. Voir www.phlsoft.com et vous m'en direz des nouvelles.
A+
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
3 sept. 2008 à 10:04
3 sept. 2008 à 10:04
Salut,
Oula, ça c'est du déterrage de thread
>>Bon,ya eu du chemin fait depuis.
oui en plus des outils déjà citer et utilisé avant(depuis 2005!) pour attaquer un AS/400 dans du PHP(linux/windows).
Maintenant il y a surtout le ZendCore directement sur l'AS/400.
Cordialement,
Walter
http://www.easycom-aura.com
Oula, ça c'est du déterrage de thread
>>Bon,ya eu du chemin fait depuis.
oui en plus des outils déjà citer et utilisé avant(depuis 2005!) pour attaquer un AS/400 dans du PHP(linux/windows).
Maintenant il y a surtout le ZendCore directement sur l'AS/400.
Cordialement,
Walter
http://www.easycom-aura.com
Salut, je tombe sur ce post par hasard.
J'utilise aujourd'hui le ZendCore for I5 et le Zend Studio for i5 de la société Zend au quotidien.
Sous le nom de ZendCore for I5 se cache en fait une distrib d'apache,Php et MySql maintenus et supportés par la sté Zend.
ZendStudio for I5 est un IDE du tonnerre ! avec toutes les fonction rêvées afin d'accéder aux ressources de l'AS400 (programme RPG batch, clp, DB2/400, DTAARA, commande système, valeur système et tout et tout et tout
Ces produits sont gratuits car financés par IBM, alors pas de raison de s'en priver, On peut même debugger !!!!!
N'hésitez pas si vous désirez plus d'informations
Désolé je n'ai pas lu tout le thread, en espérant ne pas répéter des messages précédent
A+
J'utilise aujourd'hui le ZendCore for I5 et le Zend Studio for i5 de la société Zend au quotidien.
Sous le nom de ZendCore for I5 se cache en fait une distrib d'apache,Php et MySql maintenus et supportés par la sté Zend.
ZendStudio for I5 est un IDE du tonnerre ! avec toutes les fonction rêvées afin d'accéder aux ressources de l'AS400 (programme RPG batch, clp, DB2/400, DTAARA, commande système, valeur système et tout et tout et tout
Ces produits sont gratuits car financés par IBM, alors pas de raison de s'en priver, On peut même debugger !!!!!
N'hésitez pas si vous désirez plus d'informations
Désolé je n'ai pas lu tout le thread, en espérant ne pas répéter des messages précédent
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour à tous,
Perso, j'utilise l'as 400 avec php pour faire mes requetes affichages ... Nikel rien a dire.
Par contre jusqu'à présent, j'ai jamais fais appel a une commade as400.
Est ce que qq'un peux me montrer un exemple de script de la connexion à l'appel de la fonction svp ?
c'est vraiment URGENTISME !!! lol
A bientot Camarade AS400 / php
Perso, j'utilise l'as 400 avec php pour faire mes requetes affichages ... Nikel rien a dire.
Par contre jusqu'à présent, j'ai jamais fais appel a une commade as400.
Est ce que qq'un peux me montrer un exemple de script de la connexion à l'appel de la fonction svp ?
c'est vraiment URGENTISME !!! lol
A bientot Camarade AS400 / php
Le Problème est plus le but : Que veux tu faire comme commande avec L'AS400. Il est possible de passer à SQL des commande de type call programme. Tu peux aussi créer des programmes dans un langage X sur l'AS400 avec ou sans paramètres. Créer une fonction SQL qui exécute celui-ci et passe par la dite fonction pour exécuter l'ordre.
... etc
Il est certain que le multiple outil du marche facilite cette objectif. Malheureusement je n'est pas d'exemple sous la main.
... etc
Il est certain que le multiple outil du marche facilite cette objectif. Malheureusement je n'est pas d'exemple sous la main.
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
15 janv. 2009 à 12:02
15 janv. 2009 à 12:02
Faudrait peut être dire quel outil tu utilise?
Parce que la comme le dis dedalios, multiple outils le fond très bien.
un exemple pré-mâché utilisant I5toolKit avec commande simple et avec retour de paramètres:
$Hdlcon = i5_connect($adresse,$user, $mdp, $jobName);
$ret = i5_command("ADDLIBLE LIB(WALTER)");
$ret = i5_command("RTVSYSVAL", array("SYSVAL"=>"QSRLNBR"), array("RTNVAR" => "NB"));
Parce que la comme le dis dedalios, multiple outils le fond très bien.
un exemple pré-mâché utilisant I5toolKit avec commande simple et avec retour de paramètres:
$Hdlcon = i5_connect($adresse,$user, $mdp, $jobName);
$ret = i5_command("ADDLIBLE LIB(WALTER)");
$ret = i5_command("RTVSYSVAL", array("SYSVAL"=>"QSRLNBR"), array("RTNVAR" => "NB"));
djazar
>
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
15 janv. 2009 à 14:06
15 janv. 2009 à 14:06
Merci Walter,
J'ai téléchargé le kit sur easycom, c'est en effet l'exemple qui a été donné et cela m'a beaucoup servi. merci pour votre réactivité.
Cordialement
J'ai téléchargé le kit sur easycom, c'est en effet l'exemple qui a été donné et cela m'a beaucoup servi. merci pour votre réactivité.
Cordialement
Bonjour à tous, voila j'ai un petit problème pour l'appel d'un programme CALL
En AS400 cela donnerai ça :
CALL PGM(OPT000) PARM('A' '23' '980065')
J'ai utiliser un exemple qui a été donné et essayer de remplacer les parametres. Mais ca ne fonctionne pas.
$prog = i5_program_prepare("*PGM/OPT000");
if(i5_program_call($prog, array('A','23','980065')))
{$result = i5_fetch_assoc($prog);
echo "result is ok";
}
else {
echo "Program call failed";
}
Est ce que qq'un pourais m'aider ? C'est assez urgent.
Merci beaucoup
En AS400 cela donnerai ça :
CALL PGM(OPT000) PARM('A' '23' '980065')
J'ai utiliser un exemple qui a été donné et essayer de remplacer les parametres. Mais ca ne fonctionne pas.
$prog = i5_program_prepare("*PGM/OPT000");
if(i5_program_call($prog, array('A','23','980065')))
{$result = i5_fetch_assoc($prog);
echo "result is ok";
}
else {
echo "Program call failed";
}
Est ce que qq'un pourais m'aider ? C'est assez urgent.
Merci beaucoup
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
18 févr. 2009 à 11:52
18 févr. 2009 à 11:52
Salut,
si tu utilise *PGM cela veut dire que tu as déclaré la structure d'appel avec l'outil Easycom "Stored Procedure configuration"
L'a tu déclaré?
si tu utilise *PGM cela veut dire que tu as déclaré la structure d'appel avec l'outil Easycom "Stored Procedure configuration"
L'a tu déclaré?
djazair
>
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
18 févr. 2009 à 13:53
18 févr. 2009 à 13:53
Merci Walter d'avoir répondu,
A vrai dire je ne sais pas du tout.
Précédemment j'avais tenté avec une commande :
$ret = i5_command("XASEPPRG/PRIXREVIEN", array("DE"=>$NART, "DSPOUPRT"=>"F"), array());
Et cela a fonctionné.
Maintenant je voudrais appeler un programme qui est le suivant :
CALL PGM(OPT000) PARM('A' '23' '980065')
j'ai une erreur sur l'AS400 :
Message . . . . : Erreur de domaine d'objet ou de protection de mémoire pour
déplacement X'0000000000000000' dans objet ZENDCOREAPQSECOFR 558180.
Cause . . . . . : Un programme a tenté d'utiliser une instruction interdite,
d'accéder à un objet du domaine système ou de faire un mauvais usage d'une
page protégée. Le type de violation est 4. Le type de violation indique le
type d'erreur. 1-Violation du domaine d'un objet 2-Violation de test TESTPTA
(Test Pointer Target Addressability) 3-Erreur de protection en lecture
Voici mon script.
$adresse = "xxx.xxx.xxx.xxx";
$user = "xxxx";
$mdp = "xxxx";
$jobName= array(I5_OPTIONS_JOBNAME=>'I5JOB');
if ($user=="" || $mdp=="" || $adresse==""){
echo "<script>alert('Vous devez configurer le fichier conn.php avec vos propriétés de connexion\\n\\nYou must edit conn.php file with your connection property');</script>";
}
/* Connexion */
$Hdlcon = i5_connect($adresse,$user, $mdp, $jobName);
$prog = i5_program_prepare("*PGM/OPT000");
if(i5_program_call($prog, array('A','23','980065 '))) {
$result = i5_fetch_assoc($prog);
echo "result is ok";
}
else {
echo "Program call failed";
}
?>
A vrai dire je ne sais pas du tout.
Précédemment j'avais tenté avec une commande :
$ret = i5_command("XASEPPRG/PRIXREVIEN", array("DE"=>$NART, "DSPOUPRT"=>"F"), array());
Et cela a fonctionné.
Maintenant je voudrais appeler un programme qui est le suivant :
CALL PGM(OPT000) PARM('A' '23' '980065')
j'ai une erreur sur l'AS400 :
Message . . . . : Erreur de domaine d'objet ou de protection de mémoire pour
déplacement X'0000000000000000' dans objet ZENDCOREAPQSECOFR 558180.
Cause . . . . . : Un programme a tenté d'utiliser une instruction interdite,
d'accéder à un objet du domaine système ou de faire un mauvais usage d'une
page protégée. Le type de violation est 4. Le type de violation indique le
type d'erreur. 1-Violation du domaine d'un objet 2-Violation de test TESTPTA
(Test Pointer Target Addressability) 3-Erreur de protection en lecture
Voici mon script.
$adresse = "xxx.xxx.xxx.xxx";
$user = "xxxx";
$mdp = "xxxx";
$jobName= array(I5_OPTIONS_JOBNAME=>'I5JOB');
if ($user=="" || $mdp=="" || $adresse==""){
echo "<script>alert('Vous devez configurer le fichier conn.php avec vos propriétés de connexion\\n\\nYou must edit conn.php file with your connection property');</script>";
}
/* Connexion */
$Hdlcon = i5_connect($adresse,$user, $mdp, $jobName);
$prog = i5_program_prepare("*PGM/OPT000");
if(i5_program_call($prog, array('A','23','980065 '))) {
$result = i5_fetch_assoc($prog);
echo "result is ok";
}
else {
echo "Program call failed";
}
?>
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
>
djazair
18 févr. 2009 à 14:42
18 févr. 2009 à 14:42
Si tu ne sais pas si tu as déclaré ton programme avec l'outil(Windows), j'aurais tendance a dire que tu ne l'a pas fait.
Donc soit tu le fait, soit tu utilise une autre solution.
L'autre solution est de déclarer ton programme directement en PHP, un exemple est fournis dans la documentation de Zend.
Tu peux aussi aller sur le forum de Zend, ce cas a déjà était traité.
A+walter
Donc soit tu le fait, soit tu utilise une autre solution.
L'autre solution est de déclarer ton programme directement en PHP, un exemple est fournis dans la documentation de Zend.
Tu peux aussi aller sur le forum de Zend, ce cas a déjà était traité.
A+walter
djazair
>
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
18 févr. 2009 à 15:33
18 févr. 2009 à 15:33
Ok merci Walter.
L'autre soltion ca ne serait pas celle ci ?
/* Paramètres */
if (isset($_POST['param1'])) {$parm1 = $_POST['param1'];} else {$parm1 = 1;}
if (isset($_POST['param2'])) {$parm2 = $_POST['param2'];} else {$parm2 = "";}
if (isset($_POST['param3'])) {$parm3 = $_POST['param3'];} else {$parm3 = 3;}
if (isset($_POST['param4'])) {$parm4 = $_POST['param4'];} else {$parm4 = "";}
$description = Array(
array("Name"=>"OP1", "IO"=>I5_IN, "Type"=>I5_TYPE_PACKED, "Length"=>"5.2"),
array("Name"=>"STR1", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"20"),
array("Name"=>"OP2", "IO"=>I5_INOUT, "Type"=>I5_TYPE_PACKED, "Length"=>"5.2"),
array("Name"=>"STR2", "IO"=>I5_INOUT, "Type"=>I5_TYPE_CHAR, "Length"=>"30"),
array("Name"=>"OP3", "IO"=>I5_OUT, "Type"=>I5_TYPE_PACKED, "Length"=>"10.4")
);
$ret = i5_program_prepare("EASYCOM/RPCSAMPLE", $description);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_prepare fail, ".$errorTab[2], E_USER_ERROR);
}
$hdlPgm = $ret;
if ($parm1!='' && $parm2!='') {
$parameter = Array(
"OP1"=>$parm1,
"STR1"=>$parm2,
"OP2"=>$parm3,
"STR2"=>$parm4,
);
$parmOut = array("OP1"=>"OP1", "OP2"=>"OP2", "OP3"=>"OP3", "STR1"=>"STR1", "STR2"=>"STR2");
$ret = i5_program_call($hdlPgm, $parameter, $parmOut);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_call fail, ".$errorTab[2], E_USER_ERROR);
}
$appel = true;
} else {
$appel = false;
}
L'autre soltion ca ne serait pas celle ci ?
/* Paramètres */
if (isset($_POST['param1'])) {$parm1 = $_POST['param1'];} else {$parm1 = 1;}
if (isset($_POST['param2'])) {$parm2 = $_POST['param2'];} else {$parm2 = "";}
if (isset($_POST['param3'])) {$parm3 = $_POST['param3'];} else {$parm3 = 3;}
if (isset($_POST['param4'])) {$parm4 = $_POST['param4'];} else {$parm4 = "";}
$description = Array(
array("Name"=>"OP1", "IO"=>I5_IN, "Type"=>I5_TYPE_PACKED, "Length"=>"5.2"),
array("Name"=>"STR1", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"20"),
array("Name"=>"OP2", "IO"=>I5_INOUT, "Type"=>I5_TYPE_PACKED, "Length"=>"5.2"),
array("Name"=>"STR2", "IO"=>I5_INOUT, "Type"=>I5_TYPE_CHAR, "Length"=>"30"),
array("Name"=>"OP3", "IO"=>I5_OUT, "Type"=>I5_TYPE_PACKED, "Length"=>"10.4")
);
$ret = i5_program_prepare("EASYCOM/RPCSAMPLE", $description);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_prepare fail, ".$errorTab[2], E_USER_ERROR);
}
$hdlPgm = $ret;
if ($parm1!='' && $parm2!='') {
$parameter = Array(
"OP1"=>$parm1,
"STR1"=>$parm2,
"OP2"=>$parm3,
"STR2"=>$parm4,
);
$parmOut = array("OP1"=>"OP1", "OP2"=>"OP2", "OP3"=>"OP3", "STR1"=>"STR1", "STR2"=>"STR2");
$ret = i5_program_call($hdlPgm, $parameter, $parmOut);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_call fail, ".$errorTab[2], E_USER_ERROR);
}
$appel = true;
} else {
$appel = false;
}
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
>
djazair
18 févr. 2009 à 15:38
18 févr. 2009 à 15:38
Oui tout a fait.
A+ walter
A+ walter
Walter,
Avec le script ci dessus, comment tu l'aurais écrit pour cette commande :
CALL PGM(OPT000) PARM('A' '23' '980065')
Merci encore
Avec le script ci dessus, comment tu l'aurais écrit pour cette commande :
CALL PGM(OPT000) PARM('A' '23' '980065')
Merci encore
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
18 févr. 2009 à 17:17
18 févr. 2009 à 17:17
la tu a 3 chaine de caractère, donc tu utilise
array("Name"=>"op1", "IO"=>I5_OUT, "Type"=>I5_TYPE_CHAR, "Length"=>"1")
de même pour le reste en fonction du nombre de caractère que tu as réellement déclaré dans ton programme.
si ton premier paramètre peux prendre en fait 2 caractère tu doit mettre 2 dans la description.
Pour le reste il suffit de remplacer avec ton programme et les paramètres d'entrée
array("Name"=>"op1", "IO"=>I5_OUT, "Type"=>I5_TYPE_CHAR, "Length"=>"1")
de même pour le reste en fonction du nombre de caractère que tu as réellement déclaré dans ton programme.
si ton premier paramètre peux prendre en fait 2 caractère tu doit mettre 2 dans la description.
Pour le reste il suffit de remplacer avec ton programme et les paramètres d'entrée
djazair
>
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
19 févr. 2009 à 09:23
19 févr. 2009 à 09:23
Walter, voila ce que j'ai fait...
Ma page internet explorer ne m'affiche pas d'erreur, mais je n'ai pas de resultat. Le programme est censé alimenter mon fichier.
Merci water
/* Connexion */
$jobName= array(I5_OPTIONS_JOBNAME=>'I5JOB');
// Connexion à l'AS400
$Hdlcon = i5_connect("IP","user", "mdp", $jobName);
/* Paramètres */
$parm1 = "A";
$parm2 = "23";
$parm3 = "980065";
$description = Array(
array("Name"=>"CODSOC", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"NOSECT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"CLIENT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"6")
);
$ret = i5_program_prepare("ATASEPI/OPT010", $description);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_prepare fail, ".$errorTab[2], E_USER_ERROR);
}
$hdlPgm = $ret;
if ($parm1!='' && $parm2!='') {
$parameter = Array(
"CODSOC"=>$parm1,
"NOSECT"=>$parm2,
"CLIENT"=>$parm3,
);
$parmOut = array("CODSOC"=>"CODSOC", "NOSECT"=>"NOSECT", "CLIENT"=>"CLIENT");
$ret = i5_program_call($hdlPgm, $parameter, $parmOut);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_call fail, ".$errorTab[2], E_USER_ERROR);
}
$appel = true;
} else {
$appel = false;
}
Ma page internet explorer ne m'affiche pas d'erreur, mais je n'ai pas de resultat. Le programme est censé alimenter mon fichier.
Merci water
/* Connexion */
$jobName= array(I5_OPTIONS_JOBNAME=>'I5JOB');
// Connexion à l'AS400
$Hdlcon = i5_connect("IP","user", "mdp", $jobName);
/* Paramètres */
$parm1 = "A";
$parm2 = "23";
$parm3 = "980065";
$description = Array(
array("Name"=>"CODSOC", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"NOSECT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"CLIENT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"6")
);
$ret = i5_program_prepare("ATASEPI/OPT010", $description);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_prepare fail, ".$errorTab[2], E_USER_ERROR);
}
$hdlPgm = $ret;
if ($parm1!='' && $parm2!='') {
$parameter = Array(
"CODSOC"=>$parm1,
"NOSECT"=>$parm2,
"CLIENT"=>$parm3,
);
$parmOut = array("CODSOC"=>"CODSOC", "NOSECT"=>"NOSECT", "CLIENT"=>"CLIENT");
$ret = i5_program_call($hdlPgm, $parameter, $parmOut);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_call fail, ".$errorTab[2], E_USER_ERROR);
}
$appel = true;
} else {
$appel = false;
}
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
>
djazair
19 févr. 2009 à 09:54
19 févr. 2009 à 09:54
Salut,
oui c'est presque ça, sauf que a priori ton programme ne modifie pas les paramètres.
Donc pourquoi les demander en retour?
dans ce cas il faut modifier là description pour que les paramètres soient en entrée/sortie
oui c'est presque ça, sauf que a priori ton programme ne modifie pas les paramètres.
Donc pourquoi les demander en retour?
dans ce cas il faut modifier là description pour que les paramètres soient en entrée/sortie
tout a fait, je n'ai rien en sortie.
Jlavais modifié de la sorte, mais le résultat est pareil :
/* Paramètres */
$parm1 = "A";
$parm2 = "23";
$parm3 = "980065";
$description = Array(
array("Name"=>"CODSOC", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"NOSECT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"CLIENT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"6")
);
$ret = i5_program_prepare("ATASEPI/OPT010", $description);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_prepare fail, ".$errorTab[2], E_USER_ERROR);
}
$hdlPgm = $ret;
if ($parm1!='' && $parm2!='') {
$parameter = Array(
"CODSOC"=>$parm1,
"NOSECT"=>$parm2,
"CLIENT"=>$parm3,
);
$ret = i5_program_call($hdlPgm, $parameter);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_call fail, ".$errorTab[2], E_USER_ERROR);
}
$appel = true;
} else {
$appel = false;
}
Jlavais modifié de la sorte, mais le résultat est pareil :
/* Paramètres */
$parm1 = "A";
$parm2 = "23";
$parm3 = "980065";
$description = Array(
array("Name"=>"CODSOC", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"NOSECT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"10"),
array("Name"=>"CLIENT", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"6")
);
$ret = i5_program_prepare("ATASEPI/OPT010", $description);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_prepare fail, ".$errorTab[2], E_USER_ERROR);
}
$hdlPgm = $ret;
if ($parm1!='' && $parm2!='') {
$parameter = Array(
"CODSOC"=>$parm1,
"NOSECT"=>$parm2,
"CLIENT"=>$parm3,
);
$ret = i5_program_call($hdlPgm, $parameter);
if (is_bool($ret) && $ret == FALSE){
$code = I5_errno();
$msg = I5_errormsg();
$errorTab = I5_error();
trigger_error("I5_program_call fail, ".$errorTab[2], E_USER_ERROR);
}
$appel = true;
} else {
$appel = false;
}
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
19 févr. 2009 à 12:09
19 févr. 2009 à 12:09
Oui, mais tu m'as pas donné le résultat :)
tu as un message d'erreur?
tu as un message d'erreur?
djazair
>
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
19 févr. 2009 à 13:36
19 févr. 2009 à 13:36
Non je n'ai aucun message d'erreur justement sur ma page Internet Explorer.
Du coté du 400 pareil je n'ai rien.
$appel retourn 1;
Du coté du 400 pareil je n'ai rien.
$appel retourn 1;
walterT
Messages postés
17
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
19 février 2009
>
djazair
19 févr. 2009 à 14:33
19 févr. 2009 à 14:33
Fait une trace AS/400, avec la fonction i5_start_filetest ou un truc comme ça.
mais cela veut dire que ta fonction a était correctement appelée normalement.
mais cela veut dire que ta fonction a était correctement appelée normalement.
ça vie toujours ce truc la?
Quid Php ou JAva est il facile de ce connection à l'AS400
Quid Php ou JAva est il facile de ce connection à l'AS400