Voici les conditions à respecter pour assurer la compatibilité entre le générateur C et le générateur RPG, pour les programmes de type ADELIA.
Le générateur C ne transforme que les programmes Adélia (les CLP, RPG, etc. ne sont pas concernés).
Important : si l'on travaille avec une base de données AS/400 et que les fichiers CLP contiennent des commandes (CLRPFM, OVRDBF, etc.) agissant sur les fichiers, il est possible de réécrire les CLP en Adélia, sous la forme d'un ensemble d'instructions EXECUTER_CMD contenant les commandes AS/400.
Par défaut, l'ordre APPELER appelle les programmes en mode local, mais il est possible d'appeler en mode synchrone des programmes de l'AS/400 (Remote Procedure Call).
L'instruction EXECUTER_CMD_38 sera sans effet.
L'instruction EXECUTER_CMD permet d'exécuter une commande AS/400 ou une commande micro. Les commandes sont exécutées en mode asynchrone.
Remarque : il est possible d'appeler un programme "*.EXE", grâce à un ordre EXECUTER_CMD.
L'instruction RETOURNER aura le même effet que l'instruction TERMINER ; l'instruction LIBERER_PGM sera sans effet.
Actuellement avec le générateur RPG, l'affectation "A = B" (où A est une variable alphanumérique), est équivalente à :
- "PLACER_A_GAUCHE B A" si B est alphanumérique.
- "PLACER_A_DROITE B A" si B est numérique.
Avec le générateur C, elle sera équivalente à :
- "A = *BLANK" suivie de "PLACER_A_GAUCHE B A" si B est alphanumérique.
- "A = *BLANK" suivie de "PLACER_A_DROITE B A" si B est numérique.
Avec le générateur RPG, si l'on affecte dans une variable alphanumérique une variable numérique ayant une valeur négative, le caractère de droite sera le code EBCDIC D0, D1, ..., D9.
Exemple :
Le nombre -234 donne la chaîne "23M" ("M" a pour code EBCDIC D4).
Avec le générateur C, le caractère de droite sera le code ASCII D0, D1, ..., D9 (qui est différent du caractère EBCDIC D0, ... , D9).
L'instruction "GUIDE <nom de zone> [<touche de fonction>]" ne sera pas opérationnelle pour les zones en sortie.
L'instruction REPRODUIRE sera sans effet. Par contre, il sera toujours possible de copier des données dans une zone en saisie grâce aux fonctions Copier/Coller sur micro.
Les variables numériques ne pourront avoir une définition de plus de 15 chiffres.
La zone clé des vues définies en accès direct doit être une zone numérique d'au moins 10 positions dont 0 décimale.
La valeur rendue par *NO_ENR est, pour les fichiers Btrieve, une adresse pouvant tenir sur 10 chiffres. Il est par conséquent impératif que les variables manipulant cette valeur soient définies sur au moins 10 positions dont 0 décimale.
C'est le code maquette qui déterminera le nom des objets programmes, et non pas le nom IBM.
Attention : ceci revêt une importance toute particulière lorsqu'on effectue un appel dynamique de programme : il faudra mettre dans la variable le code maquette et non pas le nom IBM.
Les comparaisons entre variables se font suivant l'ordre ANSI et non pas selon l'ordre EBCDIC.
Lorsqu'on lit par clé les données d'un fichier Btrieve, celles-ci apparaissent selon l'ordre ASCII.
Lorsqu'on lit par clé les données d'un fichier AS/400, celles-ci apparaissent selon l'ordre EBCDIC.
Restrictions
Ne pas utiliser l'instruction ECRIRE (pour les formats dans des programmes interactifs).
Ne pas utiliser les mots réservés *NUM_LIGNE, *NUM_COLONNE, *FORMAT_CURSEUR et *POS_CURS_ZONE.
Ne pas utiliser les mots réservés liés aux INFODS programme, INFODS fichier et INFODS écran, excepté *NOM_PGM et *USER (en connexion avec un AS/400), et *NO_ENR.
Ne pas utiliser les ordres SQL (cela sera possible ultérieurement).
Ne pas utiliser les instructions CLICHE_MEMOIRE, INSERER ou ECRIRE.
Les tableaux version 4 ne sont pas acceptés. Par contre, les tableaux standard d'Adélia peuvent être utilisés.