Thank you Charles and Jon for your explanations.
"I would guess your S0C4 is caused by you not specifying LINKAGE=BRANCH on the
WTO"
I use LINKAGE=BRANCH. Using workarea method works well (WTO OK) except when a
user login/logoff (S0C4-11). I use this area for few bytes (less than 1024)
Workarea method : works but S0C4-11 when a user login/logoff on my test system
LR R10,R1 Parameter list dans R10
USING SMFEXITP,R10
...
L R8,SMXP_RECPTR R8 = record SMF
LR R9,R10 R9 = Parameter List
A R9,SMXP_WORKAREA_OFFSET R9 = Pointer to the work area
...
USING WORKAREA,R9
...
WTO MF=(E,WTOZONE),LINKAGE=BRANCH
Storage Obtain method : works every time on my test system
LR R10,R1 Parameter list dans R10
USING SMFEXITP,R10
...
L R8,SMXP_RECPTR R8 = record SMF
STORAGE OBTAIN,LENGTH=WORKLEN,ADDR=(R1),SP=245
LTR R15,R15 Storage Obtain OK ?
JNZ FIN Non, on sort sans RELEASE
LR R9,R1 R9 = addr memoire obtenue
...
USING WORKAREA,R9
ST R9,WORKADDR Sauvegarde de l addr pour le release
...
WTO MF=(E,WTOZONE),LINKAGE=BRANCH
STORAGE RELEASE,LENGTH=WORKLEN,ADDR=WORKADDR,SP=245