Enigmista
2016-11-04 11:20:26 UTC
Buongiorno.
Ho programma RPGLE CHIAMANTE DFTACTGRP(*NO) ACTGRP(*NEW).
programma RPGLE CHIAMATO (creato con il CRTBNDRPG) , tra i parametri mi
restituisce un puntatore a una chiave un record di file.
Se CHIAMATO lo compilo ACTGRP(*NO) ACTGRP(*CALLER) o DFTACTGRP(*YES) il
puntatore mi ritorna e riesco a reperire CHIAVE su CHIAMANTE.
Se CHIAMATO lo compilo ACTGRP(*NO) ACTGRP(*NEW) mi viene restituito MCH3402
"si è tentato di far riferimento ad un oggetto che non esiste più"
Da cui ne deriva che se passo da un Gruppo di attivazione *NEW ad un altro
*NEW perdo il puntatore all'area di memoria (ad esempio passo da un ACTGRP
N° 000000000000007C a un ACTGRP N° 000000000000007E)
Ma comunque anche quando passo da un *NEW a un DFTACTGRP(*YES) mi cambia il
N° del gruppo di attivazione ( ad esempio da un ACTGRP N° 000000000000008D
ad un ACTGRP N° 0000000000000002).
Probabilemente però DFTACTGRP(*YES) è un gruppo di attivazione speciale.
Può darsi che queste particolarità sui puntatori siano uno dei motivi per
cui in passato Obelix espresse il suo sdegno nei confronti dell'uso dei
puntatori per passare parametri, non so chiedo conferma :)
O forse non li sto usando e non li so usare io nella maniera corretta ,
oltre ad avere una conoscenza sui gruppi di attivazione molto a grandi
linee.
Sono graditi approfondimenti sull'argomento dai vari esperti del NG.
Grazie.
Ho programma RPGLE CHIAMANTE DFTACTGRP(*NO) ACTGRP(*NEW).
programma RPGLE CHIAMATO (creato con il CRTBNDRPG) , tra i parametri mi
restituisce un puntatore a una chiave un record di file.
Se CHIAMATO lo compilo ACTGRP(*NO) ACTGRP(*CALLER) o DFTACTGRP(*YES) il
puntatore mi ritorna e riesco a reperire CHIAVE su CHIAMANTE.
Se CHIAMATO lo compilo ACTGRP(*NO) ACTGRP(*NEW) mi viene restituito MCH3402
"si è tentato di far riferimento ad un oggetto che non esiste più"
Da cui ne deriva che se passo da un Gruppo di attivazione *NEW ad un altro
*NEW perdo il puntatore all'area di memoria (ad esempio passo da un ACTGRP
N° 000000000000007C a un ACTGRP N° 000000000000007E)
Ma comunque anche quando passo da un *NEW a un DFTACTGRP(*YES) mi cambia il
N° del gruppo di attivazione ( ad esempio da un ACTGRP N° 000000000000008D
ad un ACTGRP N° 0000000000000002).
Probabilemente però DFTACTGRP(*YES) è un gruppo di attivazione speciale.
Può darsi che queste particolarità sui puntatori siano uno dei motivi per
cui in passato Obelix espresse il suo sdegno nei confronti dell'uso dei
puntatori per passare parametri, non so chiedo conferma :)
O forse non li sto usando e non li so usare io nella maniera corretta ,
oltre ad avere una conoscenza sui gruppi di attivazione molto a grandi
linee.
Sono graditi approfondimenti sull'argomento dai vari esperti del NG.
Grazie.