/* we'll assume strings are no longer than 100 characters */ #define MYMAXSTRING 100 /* stringout, stringin needed (unfortunately) to handle char arrays */ struct stringout { char str[MYMAXSTRING]; }; struct stringin { char str[MYMAXSTRING]; }; struct personIn { char name[MYMAXSTRING]; char addr[MYMAXSTRING]; int age; }; typedef string stringinA; program LISTMGR { version LISTVER { /* Name: ADDME Purpose: add a person to the list Input: (name, address, age) Output: 0 if successful, 1 if name already present, 2 all other errors */ int ADDME(personIn) = 1; /* Name: GETAGE Purpose: retrieve the age of a person Input: name of person whose age is requested Output: age as int if successful, -1 otherwise */ int GETAGE(stringin) = 3; /* Name: GETADDR Purpose: retrieve the address of a person Input: name of person whose address is requested Output: address as string if successful, empty string otherwise */ stringout GETADDR(stringinA) = 4; } = 1; } = 0x31240000;