|
|
1.1 ! root 1: SalaryDefs DEFINITIONS ::= ! 2: ! 3: %{ ! 4: #include <stdio.h> ! 5: ! 6: #define PEPYPARM struct salary_record * ! 7: ! 8: ! 9: static char *myname = "salary"; ! 10: ! 11: static struct salary_record { ! 12: char *name; ! 13: int salary; ! 14: } salary; ! 15: ! 16: ! 17: void adios (); ! 18: ! 19: /* */ ! 20: ! 21: /* ARGSUSED */ ! 22: ! 23: main (argc, argv, envp) ! 24: int argc; ! 25: char **argv, ! 26: **envp; ! 27: { ! 28: PE pe; ! 29: ! 30: myname = argv[0]; ! 31: ! 32: if (argc != 3) ! 33: adios (NULLCP, "usage: %s name salary", myname); ! 34: salary.name = argv[1]; ! 35: salary.salary = atoi (argv[2]); ! 36: ! 37: if (build_SalaryDefs_Salary (&pe, 1, NULL, NULLCP, &salary) == NOTOK) ! 38: adios (NULLCP, "encoder fails"); ! 39: ! 40: salary.name = NULL; ! 41: salary.salary = 0; ! 42: ! 43: if (unbuild_SalaryDefs_Salary (pe, 1, NULLIP, NULLVP, &salary) == NOTOK) ! 44: adios (NULLCP, "decoder fails"); ! 45: ! 46: exit (0); /* NOTREACHED */ ! 47: } ! 48: %} ! 49: ! 50: BEGIN ! 51: ! 52: SECTIONS build unbuild none ! 53: ! 54: Salary ::= ! 55: SEQUENCE { ! 56: name ! 57: PrintableString [[s parm -> name]] ! 58: %{ printf("name %s ", parm -> name); %}, ! 59: ! 60: salary ! 61: TheSalary [[i parm -> salary ]] ! 62: %{ printf("salary %d\n", parm -> salary); %} ! 63: } ! 64: ! 65: TheSalary ::= ! 66: INTEGER ! 67: ! 68: END ! 69: ! 70: %{ ! 71: ! 72: /* ERRORS */ ! 73: ! 74: #include <varargs.h> ! 75: ! 76: ! 77: #ifndef lint ! 78: void _advise (); ! 79: ! 80: ! 81: static void adios (va_alist) ! 82: va_dcl ! 83: { ! 84: va_list ap; ! 85: ! 86: va_start (ap); ! 87: ! 88: _advise (ap); ! 89: ! 90: va_end (ap); ! 91: ! 92: _exit (1); ! 93: } ! 94: #else ! 95: /* VARARGS */ ! 96: ! 97: static void adios (what, fmt) ! 98: char *what, ! 99: *fmt; ! 100: { ! 101: adios (what, fmt); ! 102: } ! 103: #endif ! 104: ! 105: ! 106: #ifndef lint ! 107: static void advise (va_alist) ! 108: va_dcl ! 109: { ! 110: va_list ap; ! 111: ! 112: va_start (ap); ! 113: ! 114: _advise (ap); ! 115: ! 116: va_end (ap); ! 117: } ! 118: ! 119: ! 120: static void _advise (ap) ! 121: va_list ap; ! 122: { ! 123: char buffer[BUFSIZ]; ! 124: ! 125: asprintf (buffer, ap); ! 126: ! 127: (void) fflush (stdout); ! 128: ! 129: fprintf (stderr, "%s: ", myname); ! 130: (void) fputs (buffer, stderr); ! 131: (void) fputc ('\n', stderr); ! 132: ! 133: (void) fflush (stderr); ! 134: } ! 135: #else ! 136: /* VARARGS */ ! 137: ! 138: static void advise (what, fmt) ! 139: char *what, ! 140: *fmt; ! 141: { ! 142: advise (what, fmt); ! 143: } ! 144: #endif ! 145: ! 146: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.