Développeurs AS400

Sur AS400 depuis 1995, nous assurons un soutien indéfectible à nos anciens clients comme aux nouveaux qui souhaiterons nous faire confiance.

Nous maîtrisons la plupart des langages natifs liés à l’OS400 et à DB2 pour répondre aux besoins les plus divers :

  • spécifiques purs ou sur ERP,
  • interfaces,
  • reprises ou extractions de données,
  • analyses, gestion de projets, audits …
  • modernisation de vos sources OCL, RPG36 pour pérenniser vos codes.

Depuis 20 ans avec ACROBAS, certains clients du début nous font toujours confiance.

Plus d’informations sur notre site dédié : https://developpeur-as400.fr



Résolutions de soucis sur AS400 / IBMi

Souvent il m’est arrivé de bloquer sur des problèmes et j’ai été ravi de pouvoir trouver de la ressource sur internet.

J’essaie de compiler ici, au fur et à mesure (j’aurais dû m’y mettre avant ;o)) des résolutions à quelques soucis rencontrés.

CPF5029 et SQL par RRN

Si vous rencontrez ce message d’erreur en accès à un enregistrement du fichier (par READ ou CHAIN), il est fort probable qu’un enregistrement  du fichier soit vérolé.

Erreur de mappage de données sur le membre FICHIER.
Erreur d’E-S CPF5029 détectée dans TBLELVA (C G S D F).   

Vous pouvez alors tenter d’appliquer la solution suivante :

1/ voir où se trouve l’erreur : faire  F1 sur le message « Erreur de mappage de données ». Vous obtenez :

ID message . . . . . . : CPF5035 Gravité . . . . . . . : 10
Type de message . . . : Diagnostic    Date d’envoi . . . . . : xx/xx/20    Heure d’envoi . . . . : 08:01:35
Message . . . . : Erreur de mappage de données sur le membre FICHIER.
Cause . . . . . : Une erreur de mappage de données s’est produite sur la
zone XXXXX du numéro d’enreg 95373955, format REPAN, membre numéro 1, dans le membre FICHIER, fichier FICHIER de la biblio BIBFIC. Code d’erreur
: 19. La signification du code d’erreur est la suivante : …

Noter le fichier et surtout le numéro d’enregistrement qu’il faudra corriger. Ici 95373955.

2/ il faut aller corriger l’enregistrement : soit par SQL et/ou par DFU (journée sans DFU, journée fouttue).

Problème : votre fichier est à index et le DFU ne vous permet pas d’accéder par RRN (Relative Record Number). Heureusement, un SQL un peu spécial va vous donner les clés :

SELECT rrn(a), a.* FROM BIBFIC/FICHIER as a WHERE rrn(a) =
95373954

et voila !

Changer les valeurs par défaut d'une commande OS400

Et voilà, vous avez compilé tous vos écrans en RSTDSP à *NO, ou alors vos programmes sans vue de source pour le déboguage. Ben oui, mais les valeurs par défaut des commandes n’étaient pas les bonnes !!!

Bon, en accord avec le gestionnaire de l’exploitation de la machine, vous allez pouvoir utiliser une petite commande magique pour modifier les valeurs par défaut de vos commandes préférées.

Faire donc un CHGCMDDFT avec en attributs la valeur système à changer (donnée par le F11 de la commande ciblée) et, entre parenthèses, la valeur à affecter.

Exemple pour la compilation en vue source d’un RPG ILE :     

CHGCMDDFT CMD(CRTBNDRPG) NEWDFT(‘DBGVIEW(*SOURCE)’)

donc, après CMD, la commande OS400 à modifier (ici CRTBNDRPG pour compiler un RPG ILE)

ensuite, dans NEWDFTP et entre côtes (pas entrecôte !) : l’attribut de la commande à changer (pour l’obtenir faire F11 sur la dite commande)

puis, entre parenthèses (sans jeu de mot), la nouvelle valeur telle que vous l’auriez saisie dans la commande modifiée.

C’est tout.



Modifier une structure de fichier sans (presque) rien faire

Que celui qui n’a jamais eu besoin de modifier une structure de fichier DDS me jette le premier écran 5250. PAr contre, connaissez-vous la commande magique qui vous permet de faire cela sans passer par un fichier intermédiaire et recompiler tous les index ?

Cette commande existe et elle est fabuleuse : c’est le CHGPF, tout simplement.

Donc, modifier votre source dans le QDDSSRC, appliquer le CHGPF en précisant le source modifié, et c’est tout ! il fera le travail de reprise des données et de reconstruction des index tout seul comme un grand. Si vous perdez des données, il va même vous avertir.

Attention, la magie s’arrête au traitement du fichier, et ne prend pas en compte les recompilations des programmes, DSPF et PRTF associés, ni des éventuelles variables de travail à re-dimensionner… Pour cela, faîtes appel à votre prestataire favori ;o))

 

 

Les paramètres de vos CL, en SBMJOB, passent n'importe quoi ...

Nous avons eu du mal à le croire mais il y a un bug sur le passage de paramètre d’un CL via un CALL en SBMJOB …. et oui, les valeurs de paramètres « bavent » les uns sur les autres, dégoûtant … 

Blague à part, si vous passez plusieurs variables assez longues (> 30 caractère), vous allez avoir des bouts d’une variable sur l’autre. En cela fonctionne en interactif … Sûrement un souci de pointeurs. Bon, on a une solution : mettons que vous ayez 2 paramètres à passer dans 2 programmes :

PGM1   parm(&VAR11  &VAR12)  

appelle

PGM2   parm(&VAR21  &VAR22)  

en temps normal vous faites (ne regardez pas la syntaxe) : 
DCL &VAR11  CHAR(30)
DCL &VAR12  CHAR(50)

et

DCL &VAR21  CHAR(30)
DCL &VAR22  CHAR(50)

notre solution : 

DCL &VAR11  CHAR(31)
DCL &VAR12  CHAR(51)

avec un « * » à droite de &VAR11 et &VAR12 (donc en 31 et en 51)

et

DCL &VAR21  CHAR(30)
DCL &VAR22  CHAR(50)

là rien ne change.
C’est peut-être pas super élégant, mais c’est facile, et ça fonctionne.

 

 

Etiquettes de colisage sur les excellentes "ZEBRA"

Que ce soit en langage EPL (2) ou CPCL, voici des exemples de format d’étiquettes avec SSCC à poser sur des colis ou palettes (ou autres) : 

**    ETIQUETTE COLIS (LANGAGE EPL)                    

N                                                      

LO0,0,850,4                                            

A25,15,0,2,2,2,N, »                                     

A25,60,0,2,1,2,N, »                                     

A150,60,0,2,1,1,N, »TEL: 04 77 23 78 37                              

A25,15,0,2,2,2,N, »ACROBAS »                    

A25,60,0,2,1,1,N, »FR 42300 ROANNE »                    

LO0,90,850,4                                           

B30,120,0,1,3,10,080,B, »      ici code barre pour produit ou lot ou DLC                         

LO0,240,850,4                                          

A25,260,0,2,1,1,N, »SSCC . »                             

A90,260,0,3,1,1,N, »(00)   ici le n° SSCC en texte                             

A25,280,0,2,1,1,N, »GTIN . »                             

A90,280,0,3,1,1,N, »                                    

A25,300,0,2,1,1,N, »CIP. . »                             

A90,300,0,3,1,1,N, »                                    

A190,300,0,3,1,1,N, »                                   

A25,320,0,2,1,1,N, »PCB. . »                             

A90,320,0,3,1,1,N, »                                    

LO0,90,850,4                                 

B150,105,0,1,3,10,200,B, »(00)            ici le n° SSCC en code barre    

LO0,350,850,4                                

A25,370,0,2,1,1,N, »VOTRE REF. .              

A25,390,0,2,1,1,N, »NBRE COLIS .              

A25,410,0,2,1,1,N, »NBRE REFS. .              

A25,430,0,2,1,1,N, »NOTRE BL . .              

A450,370,0,2,2,2,N, »                         

LO0,450,850,4                                

LO580,0,4,90                                 

A580,370,0,2,4,4,N, »X »                       

P1          

 

           

 

**  ETIQUETTE PALETTE (EPL)              

N                                        

LO0,0,850,4                              

A25,15,0,2,2,2,N, »                       

A25,60,0,2,1,2,N, »                       

A150,60,0,2,1,1,N, »TEL:  04 77 23 78 37″                

A600,35,0,1,1,2,N, »ACROBAS »     

A600,60,0,2,1,1,N, »FR 42300 ROANNE »     

LO0,90,850,4                             

B150,105,0,1,3,10,200,B, »(00)          ici le SSCC en code barre  

LO0,350,850,4                            

A25,370,0,2,1,1,N, »VOTRE REF. .          

A25,390,0,2,1,1,N, »NBRE COLIS .          

A25,410,0,2,1,1,N, »NBRE REFS. .          

A25,430,0,2,1,1,N, »NOTRE BL . .          

A450,370,0,2,2,2,N, »                     

LO0,450,850,4                            

LO580,0,4,90                             

A580,370,0,2,4,4,N, »X »                   

P1            

 

                                                 

 

**    ETIQUETTE COLIS PORTATIVE (LANGAGE CPCL) 

! 0 200 200 570 1                              

LINE 0 0 750 0 2                               

TEXT 5 1 25 15                                 

TEXT 5 1 25 60                                 

TEXT 5 1 150 60 TEL: 04 77 237 837                         

TEXT 5 1 25 15 ACROBAS              

TEXT 5 1 25 60  FR 42300 ROANNE

LINE 0 100 750 100 2                           

BARCODE 128 2 2 60 60 115                      

LINE 0 200 750 200 2                           

TEXT 5 1 25 210 SSCC . . (00)                  

TEXT 5 1 25 250 GTIN . .                       

TEXT 5 1 25 290 CIP  . . .                     

TEXT 5 1 25 330 PCB  . .                       

TEXT 5 1 25 370 DLC  . .                       

TEXT 5 1 400 370 LOT  .                        

LINE 0 410 750 410 1                           

BARCODE 128 2 2 110 60 430                     

TEXT 5 2 450 20                   

TEXT 5 1 450 250 EMPL . 

LINE 0 550 750 550 2                 

 

 

Faire un SQL par RRN

Il peut s’avérer bien commode de requêter un fichier par son numéro d’enregistrement relatif (relative record number, ou RRN pour les intimes).

Seulement la syntaxe est un peu spécial : 

 

FROM fichiers  . . . . . . .       EDCDE00F as MONFIC                         

SELECT zones . . . . . . . .     RRN(monfic) as rrn1, ZONE01, ZONE02   

WHERE conditions . . . .      RRN(monfic) > 1700                           

 

Voici donc un exemple d’une requête sur le fichier « EDCDE00F » qui contient notamment les zones ZONE01 et ZONE02. 

Par ce biais, on affiche tous les enregistrements dont le RRN est supérieur à 1700.

Vous noterez que le RRN utilise l’alias du fichier.