/* srvtyp.h */ /* Types dans les commandes/fonctions serveurs/services applicatifs */ /* ; Type des arguments des commandes serveur et des fonctions services applicatifs ; Code hex. Type 4 octets (binaire) ;yxxx0000 : Skip n octets 1nnnnnnn nnnnnnnn 00000000 00000000 ;xxxx0000 : Undefined xxxxxxxx xxxxxxxx 00000000 00000000 ;00010001 : Byte 00000000 00000001 00000000 00000001 ;00020001 : Integer*2 00000000 00000010 00000000 00000001 ;00040001 : Integer*4 00000000 00000100 00000000 00000001 ;00080001 : Integer*8 00000000 00001000 00000000 00000001 ;00010002 : Logical*1 00000000 00000001 00000000 00000010 ;00040002 : Logical*4 00000000 00000100 00000000 00000010 ;00040004 : Real*4 00000000 00000100 00000000 00000100 ;00080004 : Real*8 00000000 00001000 00000000 00000100 ;00100004 : Real*16 00000000 00010000 00000000 00000100 ;00040008 : Complex*4 00000000 00000100 00000000 00001000 ;00080008 : Complex*8 00000000 00001000 00000000 00001000 ;00100008 : Complex*16 00000000 00010000 00000000 00001000 ;xxxx0010 : Character xxxxxxxx xxxxxxxx 00000000 00010000 ;xxxx0011 : Extended Character xxxxxxxx xxxxxxxx 00000000 00010001 ;------ Inutilises peut etre pris: ;00040020 : Entry point address 00000000 00000100 00000000 00100000 ;00040040 : Etiquette/Instruction address 00000000 00000100 00000000 01000000 ;00040080 : Data address 00000000 00000100 00000000 10000000 ;------ fin des Inutilises ;00000100 : Adresse de datas a remplacer par la valeur dans ACSRV ;00000300 : Adresse de datas indexee a remplacer par la valeur dans ACSRV ; : (On a l'adresse suivie de l'adresse de l'index) ;00000400 : Indicateur mode de passage IN 00000000 00000000 00000100 00000000 ;00000800 : Indicateur mode de passage OUT 00000000 00000000 00001000 00000000 Ces indicateurs ne sont pas des types mais sont codes dans le meme mot que le type. ;xxxx1000 : Structure de xxxx champs xxxxxxxx xxxxxxxx 00010000 00000000 ;xxxx2000 : Enumeration de xxxx arguments xxxxxxxx xxxxxxxx 00100000 00000000 ;xxxx4000 : Handle de xxxx mots xxxxxxxx xxxxxxxx 01000000 00000000 ;xxxx8000 : Tableau de xxxx elements xxxxxxxx xxxxxxxx 10000000 00000000 ; */ #define TYPSKB 0x80000000 /* Skip n octets */ #define TYPUND 0x00000000 /* Undefined */ #define TYPIT1 0x00010001 /* Byte */ #define TYPIT2 0x00020001 /* Integer*2 */ #define TYPIT4 0x00040001 /* Integer*4 */ #define TYPIT8 0x00080001 /* Integer*8 */ #define TYPLO1 0x00010002 /* Logical*1 */ #define TYPLO4 0x00040002 /* Logical*4 */ #define TYPRE4 0x00040004 /* Real*4 */ #define TYPRE8 0x00080004 /* Real*8 */ #define TYPR16 0x00100004 /* Real*16 */ #define TYPCO4 0x00040008 /* Complex*4 */ #define TYPCO8 0x00080008 /* Complex*8 */ #define TYPC16 0x00100008 /* Complex*16 */ #define TYPCHR 0x00000010 /* Character */ #define TYPCHREXT 0x00000011 /* Character */ #define TYPINT 0x00000001 /* Integer */ #define TYPLOG 0x00000002 /* Logical */ #define TYPREAL 0x00000004 /* Real */ #define TYPCOMP 0x00000008 /* Complex */ #define MSK_TYPE 0x0000f3ff /* Masque isole le type */ #define TYPALONE(X) (unsigned int ) ((X) & MSK_TYPE) /* Macro */ #define MSK_LGR 0x7fff0000 /* Masque isole la longueur */ #define LGRALONE(X) (((X) & MSK_LGR) >> 16) /* Macro */ #define MSK_TYPCHR 0x0000ffff /* Masque pour TYPCHR */ #define MSK_LGCHR 0x7fff0000 /* Masque pour lg TYPCHR */ #define MSK_LGUND 0x7fff0000 /* Masque pour lg Undefined */ #define MSK_LGSTRUCT 0x7fff0000 /* Masque pour lg Structure */ #define MSK_LGHDLE 0x7fff0000 /* Masque pour lg Handle */ #define TYPENT 0x00040020 /* Entry point address */ #define TYPETI 0x00040040 /* Etiquette/Inst address */ #if defined (__osf__) || defined (DECOSF1) #define TYPDAD 0x00080080 /* Data address */ #else #define TYPDAD 0x00040080 /* Data address */ #endif #define TYPADD 0x00000100 /* Adresse de data a remplacer par la valeur dans ACSRV */ #define TYPADI 0x00000300 /* Adresse de datas indexee */ /* A remplacer par la valeur dans ACSRV. */ /* (On a l'adresse suivie de l'adresse de l'index) */ #define TYPSTRUCT 0x00001000 /* Structure */ /* 16 bits de poids forts : Nombre de champs de la structure */ /* Suivent les champs donnes par leur type et leur valeur */ #define TYPENUM 0x00002000 /* Enumeration */ /* 16 bits de poids forts : Nombre d'arguments la decrivant */ /* Suivent les arguments donnes par leur type et leur valeur */ #define TYPHDLE 0x00004000 /* Handle */ /* 16 bits de poids forts : Nombre de mots de 32 bits du handle */ #define TYPARR 0x00008000 /* Tableau */ /* 16 bits de poids forts : nombre d'elements du tableau */ /* Ce mot de type est suivi par un autre mot de type qui */ /* indique la longueur de l'element de tableau et son type */ /* Le mode de passage de l'argument */ /* Il est mis dans le type */ #define MODIN 0x00000400 #define MODOUT 0x00000800 #define MODINOUT 0x00000c00 #define MSKMOD (~MODINOUT) #define MODALONE(X) ((X) & (~MSKMOD)) /* Macro */ /* Le protocole */ #define CCALLEVEL 1