16 avril 2002

ProCobol Oracle - Programmes volumineux - make : the return code from the last command is 11

Christophe m'indique que chez son client, un problème bloquait la pré-compilation Cobol de Oracle d'un gros programme BLK : le procob sortait en erreur suite à une opération en mémoire, et générait un généreux fichier 'core' (version Oracle  8.1.6 patchée).

make : the signal code from the last command is 11

La hot-line Oracle lui a conseillée de passer l'option ltype=none (option PROFLAGS dans le fichier $SIGACS/adm/cfg/config).

Cette option évite l'étape de génération du fichier ".lis" intermédiaire entre le .pco et le .cbl, et effectivement, une fois cette option modifiée, le programme se compile entièrement.

Taille limitée à 4 Go pour les fichiers Cobol Server Express

Une erreur dans DBJ (chaîne NJD) était apparue chez un grand compte car la taille du fichier généré dépassait les 4 Go.
Pour supprimer cette erreur, positionner dans le .profile la variable EXTFH (external file handler) si elle n'existe pas deja :

EXTFH=$SIGACS/adm/cfg/extfh.cfg
export EXTFH

Enregistrer, se déconnecter puis se reconnecter.
Dans le fichier $EXTFH écrire : 
[XFH-DEFAULT]
FILEMAXSIZE=8

Ou si l'on souhaite limiter ce paramètre au seul fichier des archives :

[XFH-DEFAULT]
[/hraprd/file/PAPFR/PSBDAP00.A]
FILEMAXSIZE=8

Ce paramètre FILEMAXSIZE de Cobol Server Express - qui a comme valeur par défaut 4 - permet d'indiquer sur combien d'octets gérer l'adressage des données (adresse codée sur 4 octets = limite à 4 Go). Avec un paramètre égal à 8 la limitation de taille est en théorie de 2 To. Sans rien regénérer, la chaîne est passée et à créé un fichier de 4,5Go.

En revanche, la commande de tri MFSort est structurellement limitée à 4 Go - Je n'ai pas trouvé de solution technique à ce jour. Il est nécessaire de trouver une solution fonctionnelle - par exemple :
  • Découper le fichier a traiter,
  • Trier puis fusionner les morceaux ,
  • Lire et ecrire en séquence les morceaux ...