| CLP : pointer et passage en paramètre |
|
Cet exemple montre comment utiliser un pointer se déplacer et le passer en paramètre à un deuxième programme.
Premier programme POINTER1
PGM
/* DONNÉES ASSOCIÉS AU POINTEUR */
DCL VAR(&MOIS) TYPE(*CHAR) LEN(108) +
VALUE('JANVIER FEVRIER MARS +
AVRIL MAI JUIN JUILLET +
AOUT SEPTEMBREOCTOBRE NOVEMBRE +
DECEMBRE')
/* ADRESSE DU POINTEUR */
DCL VAR(&MP) TYPE(*PTR) ADDRESS(&MOIS)
/* ADRESSE DU POINTEUR */
DCL VAR(&LP) TYPE(*CHAR) STG(*BASED) LEN(9) +
BASPTR(&MP)
/* INDICE DE BOUCLE */
DCL VAR(&IND) TYPE(*INT) LEN(2)
/* BOUCLE DE LCTURE DU TABLEAU */
DOFOR VAR(&IND) FROM(1) TO(6 )
SNDUSRMSG MSG('1 MOIS : ' *BCAT &LP) MSGTYPE(*INFO)
CHGVAR VAR(%OFFSET(&MP)) VALUE(%OFFSET(&MP) + 9)
ENDDO
CALL PGM(POINTER2) PARM(&MP)
ENDPGM
Deuxième programme POINTER2
PGM PARM(&MP)
DCL VAR(&MP) TYPE(*PTR) ADDRESS(&RESULT)
DCL VAR(&RES) TYPE(*CHAR) STG(*BASED) LEN(9) +
BASPTR(&MP)
DCL &IND *INT
DOFOR VAR(&IND) FROM(7) TO(12)
SNDUSRMSG MSG('2 MOIS : ' *BCAT &RES) MSGTYPE(*INFO)
CHGVAR VAR(%OFFSET(&MP)) VALUE(%OFFSET(&MP) + 9)
ENDDO
ENDPGM
Cet exemple utilise le tableau des mois chargé dans le premier programme
et se déplace jusqu'à juillet et passe la main avec le pointer à pointer2 qui lit la suite !
|