, , Zones numériques étendues

Voici une petite expérience à faire sur les zones étendues

Commençons par créer un fichier PF comme ceci

A R TESTAF
A NUMERO 5
A NOM 30
A PRENOM 30

Compilez-le

on lui met des données

par exemple par SQL

INSERT INTO GDATA/TESTA VALUES(‘AAAAA’, ‘Carlsen’, ‘Magnus’)
INSERT INTO GDATA/TESTA VALUES(‘BBBBB’, ‘Vachier-Lagrave’, ‘Maxime’)
INSERT INTO GDATA/TESTA VALUES(‘CCCCC’, ‘Firouzja’, ‘Alireza’)

Si on fait un DSPPFM, on voit ceci

On décide de changer NUMERO et de le passer en numérique

On a donc le fichier décrit comme suit

A R TESTNF
A NUMERO 5S 0
A NOM 30
A PRENOM 30

Vous le compilez

vous décidez de récupérer les données

par un CPYF

CPYF FROMFILE(TESTA)
TOFILE(TESTN)
MBROPT(*REPLACE) FMTOPT(*NOCHK)

vous faites DSPPFM du fichier TESTN, voici le résultat :

Vous faites un select * from TESTN voici le résultat :

C’est étonnant non ?

Si vous faites un contrôle de données vous n’avez pas d’erreur

SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE(‘GDATA’, ‘TESTN’));

Vous allez me dire pourquoi ne pas faire le nouveau fichier comme une table, allons y ?

CREATE TABLE GDATA.TESTS (
NUMERO NUMERIC(5, 0) NOT NULL DEFAULT 0 ,
NOM CHAR(30) CCSID 1147 NOT NULL DEFAULT  » ,
PRENOM CHAR(30) CCSID 1147 NOT NULL DEFAULT  » )
RCDFMT TESTS

On récupère a nouveau des données

CPYF FROMFILE(TESTA)
TOFILE(TESTN)
MBROPT(*REPLACE) FMTOPT(*NOCHK)

Si on fait un DSPPFM voici le résultat :

Si on fait un select * from TESTS :

conclusion

Si vous copiez des données alpha dans du numérique étendu

1/ En DDS

Les données sont fausses dans le fichier et interprétées à l’exécution SQL
attention si vous lisez en RPG les données ne sont pas chargées et il n’y a pas d’erreur !

exemple :

fTESTN if e disk
read(e) TESTN ;
if %error ;
dsply ‘ici’ ;
else ;
dsply ‘la’ ;
dsply NOM ; ;
endif ;
*inlr = *on ;

2/ En SQL

Le données sont converties lors du CPYF, mais elles ne sont pas bonnes : on passe ici de AAAAA à 11111

Faites attention si vous récupérez des données numériques étendues vous pourriez avoir des surprises

Dernière remarque

Il n’y pas de problème avec des données packées :
En DDS, RPG ou SQL erreur à la lecture.
En SQL, impossible de copier les données.

, Travail à démarrage automatique

Un job à démarrage automatique, c’est un travail qui démarre en même temps que votre sous-système, soit pour initialiser quelque chose, soit pour se mettre en attente d’événements à traiter.

Vous en connaissez au moins 2

Le QSTRUP

C’est le programme indiqué dans la valeur système QSTRUPPGM et il est lancé par votre sous système de contrôle, le plus souvent QCTL .

et le second c’est QSTRRMTWTR


C’est Le démarrage des imprimantes qui est lancé en même temps que QSPL !

Vous pouvez créer vos propres travaux à démarrage automatique

Si vous devez créer un job à démarrage automatique pour vous faciliter l’administration de notre partition, voici les étapes à suivre

Création du sous système (s’il n’existe pas encore)

CRTSBSD SBSD(GAIA/GAIASBS) POOLS((1 *BASE)) TEXT(‘Sous systéme …’)

Ajouter une donnée de routage pour faire

Si elle n’existe pas le plus simple une seule, elle permettra de faire exécuter les jobs qui rentreront votre sous système

ADDRTGE SBSD(GAIA/GAIASBS)
SEQNBR(9999)
CMPVAL(*NONE)
PGM(QCMD)
CLS(QBATCH)

Vous avez intérêt à créer une jobq spécifique avec une entrée dédiée à votre job auto

CRTJOBQ JOBQ(GAIA/AUTO)

ADDJOBQE SBSD(GAIA/GAIASBS)
JOBQ(GAIA/AUTO)
MAXACT(1)

Vous pouvez créer une autre jobq qui permettra à d’autres travaux de s’exécuter soit les uns à la suite des autres

ADDJOBQE SBSD(GAIA/GAIASBS)
JOBQ(GAIA/GAIA)
MAXACT(1)

Ou tous ensemble

ADDJOBQE SBSD(GAIA/GAIASBS)
JOBQ(GAIA/GAIA)
MAXACT(*NOMAX)

Vous devez ensuite créer une jobd

CRTJOBD JOBD(GAIA/AUTO)
JOBQ(GAIA/AUTO)
TEXT(‘File pour job auto …’)
USER(QPGMR)
RTGDTA(‘QCMDB’)
RQSDTA(‘CALL GAIA/PGMAUTO’)

Cette jobd doit comporter 2 particularités , un utilisateur, paramètre USER ici QPGMR et un programme à lancer paramètre RQSDTA ici appel du programme PGMAUTO.

Vous pouvez maintenant ajouter votre travail à démarrage AUTO

ADDAJE SBSD(GAIA/GAIASBS)
JOB(AUTOJOB)
JOBD(GAIA/AUTO)

Quand vous ferez un STRSBS GAIA/GAIASBS votre job AUTOJOB sera exécuté.

Attention :

Les programmes à démarrage automatique ne doivent pas planter, pensez y également quand vous adaptez le programme QSTRUP