Les variables du bloc de communication donnent le status de la dernière communication. Ce sont status, erreur et code d'erreur.
1 | erreur Inter sur le serveur |
3 | SIGINT (CTRL-C) sur le serveur |
Lorsque l'on réserve un serveur, si on ne désire pas connaître le status de la dernière communication, on peut effacer tout les status avec la fonction clearsv(). Par exemple:
shmstat=shmwait() shmstat=clearsv()Par contre, si on désire connaître le status de la dernière communication les fonctions shmgerr(), shmgsta() et shmgcod() permettre de les récupérer. Par exemple:
local code_err="" shmstat=shmwait() if shmgsta.ne.0 then ... endif if shmgerr().ne.0 then if shmgerr().eq.1 then code_err=shmgcod() ... else ... endif shmstat=clearsv()Ces différents status sont valides chaque fois que le client a la main sur le bloc de communication.
Un autre exemple montre le traitement d'une erreur survenant sur le serveur:
Par exemple, une fonction xxx peut retourner deux codes d'erreur en cas de problèmes "no_space" ou "no_name" . Ces situations sont gérable:
shmstat=shmwait() shmstat=shmput("COMMAND","@xxx") shmstat=shmack() shmstat=shmwack() if (shmstat.ne.0) then if (shmstat.eq.1) then if leq(shmgcod(),"no_space") then ... endif if leq(shmgcod(),"no_name") then ... endif else ... endif endif