aboutsummaryrefslogtreecommitdiff
path: root/unix/f2c/libi77
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /unix/f2c/libi77
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/f2c/libi77')
-rw-r--r--unix/f2c/libi777453
1 files changed, 7453 insertions, 0 deletions
diff --git a/unix/f2c/libi77 b/unix/f2c/libi77
new file mode 100644
index 00000000..750ee952
--- /dev/null
+++ b/unix/f2c/libi77
@@ -0,0 +1,7453 @@
+# to unbundle, sh this file (in an empty directory)
+mkdir libI77
+echo libI77/lio.h 1>&2
+sed >libI77/lio.h <<'//GO.SYSIN DD libI77/lio.h' 's/^-//'
+-/* copy of ftypes from the compiler */
+-/* variable types
+- * numeric assumptions:
+- * int < reals < complexes
+- * TYDREAL-TYREAL = TYDCOMPLEX-TYCOMPLEX
+- */
+-
+-/* 0-10 retain their old (pre LOGICAL*1, etc.) */
+-/* values to allow mixing old and new objects. */
+-
+-#define TYUNKNOWN 0
+-#define TYADDR 1
+-#define TYSHORT 2
+-#define TYLONG 3
+-#define TYREAL 4
+-#define TYDREAL 5
+-#define TYCOMPLEX 6
+-#define TYDCOMPLEX 7
+-#define TYLOGICAL 8
+-#define TYCHAR 9
+-#define TYSUBR 10
+-#define TYINT1 11
+-#define TYLOGICAL1 12
+-#define TYLOGICAL2 13
+-#ifdef Allow_TYQUAD
+-#undef TYQUAD
+-#define TYQUAD 14
+-#endif
+-
+-#define LINTW 24
+-#define LINE 80
+-#define LLOGW 2
+-#ifdef Old_list_output
+-#define LLOW 1.0
+-#define LHIGH 1.e9
+-#define LEFMT " %# .8E"
+-#define LFFMT " %# .9g"
+-#else
+-#define LGFMT "%.9G"
+-#endif
+-/* LEFBL 20 should suffice; 24 overcomes a NeXT bug. */
+-#define LEFBL 24
+-
+-typedef union
+-{
+- char flchar;
+- short flshort;
+- ftnint flint;
+-#ifdef Allow_TYQUAD
+- longint fllongint;
+-#endif
+- real flreal;
+- doublereal fldouble;
+-} flex;
+-extern int f__scale;
+-#ifdef KR_headers
+-extern int (*f__lioproc)(), (*l_getc)(), (*l_ungetc)();
+-extern int l_read(), l_write();
+-#else
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-extern int (*f__lioproc)(ftnint*, char*, ftnlen, ftnint);
+-extern int l_write(ftnint*, char*, ftnlen, ftnint);
+-extern void x_wsne(cilist*);
+-extern int c_le(cilist*), (*l_getc)(void), (*l_ungetc)(int,FILE*);
+-extern int l_read(ftnint*,char*,ftnlen,ftnint);
+-extern integer e_rsle(void), e_wsle(void), s_wsne(cilist*);
+-extern int z_rnew(void);
+-#ifdef __cplusplus
+- }
+-#endif
+-#endif
+-extern ftnint L_len;
+//GO.SYSIN DD libI77/lio.h
+echo libI77/lread.c 1>&2
+sed >libI77/lread.c <<'//GO.SYSIN DD libI77/lread.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-
+-/* Compile with -DF8X_NML_ELIDE_QUOTES to permit eliding quotation */
+-/* marks in namelist input a la the Fortran 8X Draft published in */
+-/* the May 1989 issue of Fortran Forum. */
+-
+-
+-extern char *f__fmtbuf;
+-
+-#ifdef Allow_TYQUAD
+-static longint f__llx;
+-#endif
+-
+-#ifdef KR_headers
+-extern double atof();
+-extern char *malloc(), *realloc();
+-int (*f__lioproc)(), (*l_getc)(), (*l_ungetc)();
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#endif
+-
+-#include "fmt.h"
+-#include "lio.h"
+-#include "ctype.h"
+-#include "fp.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#ifndef KR_headers
+-int (*f__lioproc)(ftnint*, char*, ftnlen, ftnint), (*l_getc)(void),
+- (*l_ungetc)(int,FILE*);
+-#endif
+-
+-int l_eof;
+-
+-#define isblnk(x) (f__ltab[x+1]&B)
+-#define issep(x) (f__ltab[x+1]&SX)
+-#define isapos(x) (f__ltab[x+1]&AX)
+-#define isexp(x) (f__ltab[x+1]&EX)
+-#define issign(x) (f__ltab[x+1]&SG)
+-#define iswhit(x) (f__ltab[x+1]&WH)
+-#define SX 1
+-#define B 2
+-#define AX 4
+-#define EX 8
+-#define SG 16
+-#define WH 32
+-char f__ltab[128+1] = { /* offset one for EOF */
+- 0,
+- 0,0,AX,0,0,0,0,0,0,WH|B,SX|WH,0,0,0,0,0,
+- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+- SX|B|WH,0,AX,0,0,0,0,AX,0,0,0,SG,SX,SG,0,SX,
+- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+- 0,0,0,0,EX,EX,0,0,0,0,0,0,0,0,0,0,
+- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+- AX,0,0,0,EX,EX,0,0,0,0,0,0,0,0,0,0,
+- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+-};
+-
+-#ifdef ungetc
+- static int
+-#ifdef KR_headers
+-un_getc(x,f__cf) int x; FILE *f__cf;
+-#else
+-un_getc(int x, FILE *f__cf)
+-#endif
+-{ return ungetc(x,f__cf); }
+-#else
+-#define un_getc ungetc
+-#ifdef KR_headers
+- extern int ungetc();
+-#else
+-extern int ungetc(int, FILE*); /* for systems with a buggy stdio.h */
+-#endif
+-#endif
+-
+- int
+-t_getc(Void)
+-{ int ch;
+- if(f__curunit->uend) return(EOF);
+- if((ch=getc(f__cf))!=EOF) return(ch);
+- if(feof(f__cf))
+- f__curunit->uend = l_eof = 1;
+- return(EOF);
+-}
+-integer e_rsle(Void)
+-{
+- int ch;
+- if(f__curunit->uend) return(0);
+- while((ch=t_getc())!='\n')
+- if (ch == EOF) {
+- if(feof(f__cf))
+- f__curunit->uend = l_eof = 1;
+- return EOF;
+- }
+- return(0);
+-}
+-
+-flag f__lquit;
+-int f__lcount,f__ltype,nml_read;
+-char *f__lchar;
+-double f__lx,f__ly;
+-#define ERR(x) if(n=(x)) return(n)
+-#define GETC(x) (x=(*l_getc)())
+-#define Ungetc(x,y) (*l_ungetc)(x,y)
+-
+- static int
+-#ifdef KR_headers
+-l_R(poststar, reqint) int poststar, reqint;
+-#else
+-l_R(int poststar, int reqint)
+-#endif
+-{
+- char s[FMAX+EXPMAXDIGS+4];
+- register int ch;
+- register char *sp, *spe, *sp1;
+- long e, exp;
+- int havenum, havestar, se;
+-
+- if (!poststar) {
+- if (f__lcount > 0)
+- return(0);
+- f__lcount = 1;
+- }
+-#ifdef Allow_TYQUAD
+- f__llx = 0;
+-#endif
+- f__ltype = 0;
+- exp = 0;
+- havestar = 0;
+-retry:
+- sp1 = sp = s;
+- spe = sp + FMAX;
+- havenum = 0;
+-
+- switch(GETC(ch)) {
+- case '-': *sp++ = ch; sp1++; spe++;
+- case '+':
+- GETC(ch);
+- }
+- while(ch == '0') {
+- ++havenum;
+- GETC(ch);
+- }
+- while(isdigit(ch)) {
+- if (sp < spe) *sp++ = ch;
+- else ++exp;
+- GETC(ch);
+- }
+- if (ch == '*' && !poststar) {
+- if (sp == sp1 || exp || *s == '-') {
+- errfl(f__elist->cierr,112,"bad repetition count");
+- }
+- poststar = havestar = 1;
+- *sp = 0;
+- f__lcount = atoi(s);
+- goto retry;
+- }
+- if (ch == '.') {
+-#ifndef ALLOW_FLOAT_IN_INTEGER_LIST_INPUT
+- if (reqint)
+- errfl(f__elist->cierr,115,"invalid integer");
+-#endif
+- GETC(ch);
+- if (sp == sp1)
+- while(ch == '0') {
+- ++havenum;
+- --exp;
+- GETC(ch);
+- }
+- while(isdigit(ch)) {
+- if (sp < spe)
+- { *sp++ = ch; --exp; }
+- GETC(ch);
+- }
+- }
+- havenum += sp - sp1;
+- se = 0;
+- if (issign(ch))
+- goto signonly;
+- if (havenum && isexp(ch)) {
+-#ifndef ALLOW_FLOAT_IN_INTEGER_LIST_INPUT
+- if (reqint)
+- errfl(f__elist->cierr,115,"invalid integer");
+-#endif
+- GETC(ch);
+- if (issign(ch)) {
+-signonly:
+- if (ch == '-') se = 1;
+- GETC(ch);
+- }
+- if (!isdigit(ch)) {
+-bad:
+- errfl(f__elist->cierr,112,"exponent field");
+- }
+-
+- e = ch - '0';
+- while(isdigit(GETC(ch))) {
+- e = 10*e + ch - '0';
+- if (e > EXPMAX)
+- goto bad;
+- }
+- if (se)
+- exp -= e;
+- else
+- exp += e;
+- }
+- (void) Ungetc(ch, f__cf);
+- if (sp > sp1) {
+- ++havenum;
+- while(*--sp == '0')
+- ++exp;
+- if (exp)
+- sprintf(sp+1, "e%ld", exp);
+- else
+- sp[1] = 0;
+- f__lx = atof(s);
+-#ifdef Allow_TYQUAD
+- if (reqint&2 && (se = sp - sp1 + exp) > 14 && se < 20) {
+- /* Assuming 64-bit longint and 32-bit long. */
+- if (exp < 0)
+- sp += exp;
+- if (sp1 <= sp) {
+- f__llx = *sp1 - '0';
+- while(++sp1 <= sp)
+- f__llx = 10*f__llx + (*sp1 - '0');
+- }
+- while(--exp >= 0)
+- f__llx *= 10;
+- if (*s == '-')
+- f__llx = -f__llx;
+- }
+-#endif
+- }
+- else
+- f__lx = 0.;
+- if (havenum)
+- f__ltype = TYLONG;
+- else
+- switch(ch) {
+- case ',':
+- case '/':
+- break;
+- default:
+- if (havestar && ( ch == ' '
+- ||ch == '\t'
+- ||ch == '\n'))
+- break;
+- if (nml_read > 1) {
+- f__lquit = 2;
+- return 0;
+- }
+- errfl(f__elist->cierr,112,"invalid number");
+- }
+- return 0;
+- }
+-
+- static int
+-#ifdef KR_headers
+-rd_count(ch) register int ch;
+-#else
+-rd_count(register int ch)
+-#endif
+-{
+- if (ch < '0' || ch > '9')
+- return 1;
+- f__lcount = ch - '0';
+- while(GETC(ch) >= '0' && ch <= '9')
+- f__lcount = 10*f__lcount + ch - '0';
+- Ungetc(ch,f__cf);
+- return f__lcount <= 0;
+- }
+-
+- static int
+-l_C(Void)
+-{ int ch, nml_save;
+- double lz;
+- if(f__lcount>0) return(0);
+- f__ltype=0;
+- GETC(ch);
+- if(ch!='(')
+- {
+- if (nml_read > 1 && (ch < '0' || ch > '9')) {
+- Ungetc(ch,f__cf);
+- f__lquit = 2;
+- return 0;
+- }
+- if (rd_count(ch))
+- if(!f__cf || !feof(f__cf))
+- errfl(f__elist->cierr,112,"complex format");
+- else
+- err(f__elist->cierr,(EOF),"lread");
+- if(GETC(ch)!='*')
+- {
+- if(!f__cf || !feof(f__cf))
+- errfl(f__elist->cierr,112,"no star");
+- else
+- err(f__elist->cierr,(EOF),"lread");
+- }
+- if(GETC(ch)!='(')
+- { Ungetc(ch,f__cf);
+- return(0);
+- }
+- }
+- else
+- f__lcount = 1;
+- while(iswhit(GETC(ch)));
+- Ungetc(ch,f__cf);
+- nml_save = nml_read;
+- nml_read = 0;
+- if (ch = l_R(1,0))
+- return ch;
+- if (!f__ltype)
+- errfl(f__elist->cierr,112,"no real part");
+- lz = f__lx;
+- while(iswhit(GETC(ch)));
+- if(ch!=',')
+- { (void) Ungetc(ch,f__cf);
+- errfl(f__elist->cierr,112,"no comma");
+- }
+- while(iswhit(GETC(ch)));
+- (void) Ungetc(ch,f__cf);
+- if (ch = l_R(1,0))
+- return ch;
+- if (!f__ltype)
+- errfl(f__elist->cierr,112,"no imaginary part");
+- while(iswhit(GETC(ch)));
+- if(ch!=')') errfl(f__elist->cierr,112,"no )");
+- f__ly = f__lx;
+- f__lx = lz;
+-#ifdef Allow_TYQUAD
+- f__llx = 0;
+-#endif
+- nml_read = nml_save;
+- return(0);
+-}
+-
+- static char nmLbuf[256], *nmL_next;
+- static int (*nmL_getc_save)(Void);
+-#ifdef KR_headers
+- static int (*nmL_ungetc_save)(/* int, FILE* */);
+-#else
+- static int (*nmL_ungetc_save)(int, FILE*);
+-#endif
+-
+- static int
+-nmL_getc(Void)
+-{
+- int rv;
+- if (rv = *nmL_next++)
+- return rv;
+- l_getc = nmL_getc_save;
+- l_ungetc = nmL_ungetc_save;
+- return (*l_getc)();
+- }
+-
+- static int
+-#ifdef KR_headers
+-nmL_ungetc(x, f) int x; FILE *f;
+-#else
+-nmL_ungetc(int x, FILE *f)
+-#endif
+-{
+- f = f; /* banish non-use warning */
+- return *--nmL_next = x;
+- }
+-
+- static int
+-#ifdef KR_headers
+-Lfinish(ch, dot, rvp) int ch, dot, *rvp;
+-#else
+-Lfinish(int ch, int dot, int *rvp)
+-#endif
+-{
+- char *s, *se;
+- static char what[] = "namelist input";
+-
+- s = nmLbuf + 2;
+- se = nmLbuf + sizeof(nmLbuf) - 1;
+- *s++ = ch;
+- while(!issep(GETC(ch)) && ch!=EOF) {
+- if (s >= se) {
+- nmLbuf_ovfl:
+- return *rvp = err__fl(f__elist->cierr,131,what);
+- }
+- *s++ = ch;
+- if (ch != '=')
+- continue;
+- if (dot)
+- return *rvp = err__fl(f__elist->cierr,112,what);
+- got_eq:
+- *s = 0;
+- nmL_getc_save = l_getc;
+- l_getc = nmL_getc;
+- nmL_ungetc_save = l_ungetc;
+- l_ungetc = nmL_ungetc;
+- nmLbuf[1] = *(nmL_next = nmLbuf) = ',';
+- *rvp = f__lcount = 0;
+- return 1;
+- }
+- if (dot)
+- goto done;
+- for(;;) {
+- if (s >= se)
+- goto nmLbuf_ovfl;
+- *s++ = ch;
+- if (!isblnk(ch))
+- break;
+- if (GETC(ch) == EOF)
+- goto done;
+- }
+- if (ch == '=')
+- goto got_eq;
+- done:
+- Ungetc(ch, f__cf);
+- return 0;
+- }
+-
+- static int
+-l_L(Void)
+-{
+- int ch, rv, sawdot;
+-
+- if(f__lcount>0)
+- return(0);
+- f__lcount = 1;
+- f__ltype=0;
+- GETC(ch);
+- if(isdigit(ch))
+- {
+- rd_count(ch);
+- if(GETC(ch)!='*')
+- if(!f__cf || !feof(f__cf))
+- errfl(f__elist->cierr,112,"no star");
+- else
+- err(f__elist->cierr,(EOF),"lread");
+- GETC(ch);
+- }
+- sawdot = 0;
+- if(ch == '.') {
+- sawdot = 1;
+- GETC(ch);
+- }
+- switch(ch)
+- {
+- case 't':
+- case 'T':
+- if (nml_read && Lfinish(ch, sawdot, &rv))
+- return rv;
+- f__lx=1;
+- break;
+- case 'f':
+- case 'F':
+- if (nml_read && Lfinish(ch, sawdot, &rv))
+- return rv;
+- f__lx=0;
+- break;
+- default:
+- if(isblnk(ch) || issep(ch) || ch==EOF)
+- { (void) Ungetc(ch,f__cf);
+- return(0);
+- }
+- if (nml_read > 1) {
+- Ungetc(ch,f__cf);
+- f__lquit = 2;
+- return 0;
+- }
+- errfl(f__elist->cierr,112,"logical");
+- }
+- f__ltype=TYLONG;
+- while(!issep(GETC(ch)) && ch!=EOF);
+- Ungetc(ch, f__cf);
+- return(0);
+-}
+-
+-#define BUFSIZE 128
+-
+- static int
+-l_CHAR(Void)
+-{ int ch,size,i;
+- static char rafail[] = "realloc failure";
+- char quote,*p;
+- if(f__lcount>0) return(0);
+- f__ltype=0;
+- if(f__lchar!=NULL) free(f__lchar);
+- size=BUFSIZE;
+- p=f__lchar = (char *)malloc((unsigned int)size);
+- if(f__lchar == NULL)
+- errfl(f__elist->cierr,113,"no space");
+-
+- GETC(ch);
+- if(isdigit(ch)) {
+- /* allow Fortran 8x-style unquoted string... */
+- /* either find a repetition count or the string */
+- f__lcount = ch - '0';
+- *p++ = ch;
+- for(i = 1;;) {
+- switch(GETC(ch)) {
+- case '*':
+- if (f__lcount == 0) {
+- f__lcount = 1;
+-#ifndef F8X_NML_ELIDE_QUOTES
+- if (nml_read)
+- goto no_quote;
+-#endif
+- goto noquote;
+- }
+- p = f__lchar;
+- goto have_lcount;
+- case ',':
+- case ' ':
+- case '\t':
+- case '\n':
+- case '/':
+- Ungetc(ch,f__cf);
+- /* no break */
+- case EOF:
+- f__lcount = 1;
+- f__ltype = TYCHAR;
+- return *p = 0;
+- }
+- if (!isdigit(ch)) {
+- f__lcount = 1;
+-#ifndef F8X_NML_ELIDE_QUOTES
+- if (nml_read) {
+- no_quote:
+- errfl(f__elist->cierr,112,
+- "undelimited character string");
+- }
+-#endif
+- goto noquote;
+- }
+- *p++ = ch;
+- f__lcount = 10*f__lcount + ch - '0';
+- if (++i == size) {
+- f__lchar = (char *)realloc(f__lchar,
+- (unsigned int)(size += BUFSIZE));
+- if(f__lchar == NULL)
+- errfl(f__elist->cierr,113,rafail);
+- p = f__lchar + i;
+- }
+- }
+- }
+- else (void) Ungetc(ch,f__cf);
+- have_lcount:
+- if(GETC(ch)=='\'' || ch=='"') quote=ch;
+- else if(isblnk(ch) || (issep(ch) && ch != '\n') || ch==EOF) {
+- Ungetc(ch,f__cf);
+- return 0;
+- }
+-#ifndef F8X_NML_ELIDE_QUOTES
+- else if (nml_read > 1) {
+- Ungetc(ch,f__cf);
+- f__lquit = 2;
+- return 0;
+- }
+-#endif
+- else {
+- /* Fortran 8x-style unquoted string */
+- *p++ = ch;
+- for(i = 1;;) {
+- switch(GETC(ch)) {
+- case ',':
+- case ' ':
+- case '\t':
+- case '\n':
+- case '/':
+- Ungetc(ch,f__cf);
+- /* no break */
+- case EOF:
+- f__ltype = TYCHAR;
+- return *p = 0;
+- }
+- noquote:
+- *p++ = ch;
+- if (++i == size) {
+- f__lchar = (char *)realloc(f__lchar,
+- (unsigned int)(size += BUFSIZE));
+- if(f__lchar == NULL)
+- errfl(f__elist->cierr,113,rafail);
+- p = f__lchar + i;
+- }
+- }
+- }
+- f__ltype=TYCHAR;
+- for(i=0;;)
+- { while(GETC(ch)!=quote && ch!='\n'
+- && ch!=EOF && ++i<size) *p++ = ch;
+- if(i==size)
+- {
+- newone:
+- f__lchar= (char *)realloc(f__lchar,
+- (unsigned int)(size += BUFSIZE));
+- if(f__lchar == NULL)
+- errfl(f__elist->cierr,113,rafail);
+- p=f__lchar+i-1;
+- *p++ = ch;
+- }
+- else if(ch==EOF) return(EOF);
+- else if(ch=='\n')
+- { if(*(p-1) != '\\') continue;
+- i--;
+- p--;
+- if(++i<size) *p++ = ch;
+- else goto newone;
+- }
+- else if(GETC(ch)==quote)
+- { if(++i<size) *p++ = ch;
+- else goto newone;
+- }
+- else
+- { (void) Ungetc(ch,f__cf);
+- *p = 0;
+- return(0);
+- }
+- }
+-}
+-
+- int
+-#ifdef KR_headers
+-c_le(a) cilist *a;
+-#else
+-c_le(cilist *a)
+-#endif
+-{
+- if(!f__init)
+- f_init();
+- f__fmtbuf="list io";
+- f__curunit = &f__units[a->ciunit];
+- if(a->ciunit>=MXUNIT || a->ciunit<0)
+- err(a->cierr,101,"stler");
+- f__scale=f__recpos=0;
+- f__elist=a;
+- if(f__curunit->ufd==NULL && fk_open(SEQ,FMT,a->ciunit))
+- err(a->cierr,102,"lio");
+- f__cf=f__curunit->ufd;
+- if(!f__curunit->ufmt) err(a->cierr,103,"lio")
+- return(0);
+-}
+-
+- int
+-#ifdef KR_headers
+-l_read(number,ptr,len,type) ftnint *number,type; char *ptr; ftnlen len;
+-#else
+-l_read(ftnint *number, char *ptr, ftnlen len, ftnint type)
+-#endif
+-{
+-#define Ptr ((flex *)ptr)
+- int i,n,ch;
+- doublereal *yy;
+- real *xx;
+- for(i=0;i<*number;i++)
+- {
+- if(f__lquit) return(0);
+- if(l_eof)
+- err(f__elist->ciend, EOF, "list in")
+- if(f__lcount == 0) {
+- f__ltype = 0;
+- for(;;) {
+- GETC(ch);
+- switch(ch) {
+- case EOF:
+- err(f__elist->ciend,(EOF),"list in")
+- case ' ':
+- case '\t':
+- case '\n':
+- continue;
+- case '/':
+- f__lquit = 1;
+- goto loopend;
+- case ',':
+- f__lcount = 1;
+- goto loopend;
+- default:
+- (void) Ungetc(ch, f__cf);
+- goto rddata;
+- }
+- }
+- }
+- rddata:
+- switch((int)type)
+- {
+- case TYINT1:
+- case TYSHORT:
+- case TYLONG:
+-#ifndef ALLOW_FLOAT_IN_INTEGER_LIST_INPUT
+- ERR(l_R(0,1));
+- break;
+-#endif
+- case TYREAL:
+- case TYDREAL:
+- ERR(l_R(0,0));
+- break;
+-#ifdef TYQUAD
+- case TYQUAD:
+- n = l_R(0,2);
+- if (n)
+- return n;
+- break;
+-#endif
+- case TYCOMPLEX:
+- case TYDCOMPLEX:
+- ERR(l_C());
+- break;
+- case TYLOGICAL1:
+- case TYLOGICAL2:
+- case TYLOGICAL:
+- ERR(l_L());
+- break;
+- case TYCHAR:
+- ERR(l_CHAR());
+- break;
+- }
+- while (GETC(ch) == ' ' || ch == '\t');
+- if (ch != ',' || f__lcount > 1)
+- Ungetc(ch,f__cf);
+- loopend:
+- if(f__lquit) return(0);
+- if(f__cf && ferror(f__cf)) {
+- clearerr(f__cf);
+- errfl(f__elist->cierr,errno,"list in");
+- }
+- if(f__ltype==0) goto bump;
+- switch((int)type)
+- {
+- case TYINT1:
+- case TYLOGICAL1:
+- Ptr->flchar = (char)f__lx;
+- break;
+- case TYLOGICAL2:
+- case TYSHORT:
+- Ptr->flshort = (short)f__lx;
+- break;
+- case TYLOGICAL:
+- case TYLONG:
+- Ptr->flint = (ftnint)f__lx;
+- break;
+-#ifdef Allow_TYQUAD
+- case TYQUAD:
+- if (!(Ptr->fllongint = f__llx))
+- Ptr->fllongint = f__lx;
+- break;
+-#endif
+- case TYREAL:
+- Ptr->flreal=f__lx;
+- break;
+- case TYDREAL:
+- Ptr->fldouble=f__lx;
+- break;
+- case TYCOMPLEX:
+- xx=(real *)ptr;
+- *xx++ = f__lx;
+- *xx = f__ly;
+- break;
+- case TYDCOMPLEX:
+- yy=(doublereal *)ptr;
+- *yy++ = f__lx;
+- *yy = f__ly;
+- break;
+- case TYCHAR:
+- b_char(f__lchar,ptr,len);
+- break;
+- }
+- bump:
+- if(f__lcount>0) f__lcount--;
+- ptr += len;
+- if (nml_read)
+- nml_read++;
+- }
+- return(0);
+-#undef Ptr
+-}
+-#ifdef KR_headers
+-integer s_rsle(a) cilist *a;
+-#else
+-integer s_rsle(cilist *a)
+-#endif
+-{
+- int n;
+-
+- f__reading=1;
+- f__external=1;
+- f__formatted=1;
+- if(n=c_le(a)) return(n);
+- f__lioproc = l_read;
+- f__lquit = 0;
+- f__lcount = 0;
+- l_eof = 0;
+- if(f__curunit->uwrt && f__nowreading(f__curunit))
+- err(a->cierr,errno,"read start");
+- if(f__curunit->uend)
+- err(f__elist->ciend,(EOF),"read start");
+- l_getc = t_getc;
+- l_ungetc = un_getc;
+- f__doend = xrd_SL;
+- return(0);
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/lread.c
+echo libI77/lwrite.c 1>&2
+sed >libI77/lwrite.c <<'//GO.SYSIN DD libI77/lwrite.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#include "lio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-ftnint L_len;
+-int f__Aquote;
+-
+- static VOID
+-donewrec(Void)
+-{
+- if (f__recpos)
+- (*f__donewrec)();
+- }
+-
+- static VOID
+-#ifdef KR_headers
+-lwrt_I(n) longint n;
+-#else
+-lwrt_I(longint n)
+-#endif
+-{
+- char *p;
+- int ndigit, sign;
+-
+- p = f__icvt(n, &ndigit, &sign, 10);
+- if(f__recpos + ndigit >= L_len)
+- donewrec();
+- PUT(' ');
+- if (sign)
+- PUT('-');
+- while(*p)
+- PUT(*p++);
+-}
+- static VOID
+-#ifdef KR_headers
+-lwrt_L(n, len) ftnint n; ftnlen len;
+-#else
+-lwrt_L(ftnint n, ftnlen len)
+-#endif
+-{
+- if(f__recpos+LLOGW>=L_len)
+- donewrec();
+- wrt_L((Uint *)&n,LLOGW, len);
+-}
+- static VOID
+-#ifdef KR_headers
+-lwrt_A(p,len) char *p; ftnlen len;
+-#else
+-lwrt_A(char *p, ftnlen len)
+-#endif
+-{
+- int a;
+- char *p1, *pe;
+-
+- a = 0;
+- pe = p + len;
+- if (f__Aquote) {
+- a = 3;
+- if (len > 1 && p[len-1] == ' ') {
+- while(--len > 1 && p[len-1] == ' ');
+- pe = p + len;
+- }
+- p1 = p;
+- while(p1 < pe)
+- if (*p1++ == '\'')
+- a++;
+- }
+- if(f__recpos+len+a >= L_len)
+- donewrec();
+- if (a
+-#ifndef OMIT_BLANK_CC
+- || !f__recpos
+-#endif
+- )
+- PUT(' ');
+- if (a) {
+- PUT('\'');
+- while(p < pe) {
+- if (*p == '\'')
+- PUT('\'');
+- PUT(*p++);
+- }
+- PUT('\'');
+- }
+- else
+- while(p < pe)
+- PUT(*p++);
+-}
+-
+- static int
+-#ifdef KR_headers
+-l_g(buf, n) char *buf; double n;
+-#else
+-l_g(char *buf, double n)
+-#endif
+-{
+-#ifdef Old_list_output
+- doublereal absn;
+- char *fmt;
+-
+- absn = n;
+- if (absn < 0)
+- absn = -absn;
+- fmt = LLOW <= absn && absn < LHIGH ? LFFMT : LEFMT;
+-#ifdef USE_STRLEN
+- sprintf(buf, fmt, n);
+- return strlen(buf);
+-#else
+- return sprintf(buf, fmt, n);
+-#endif
+-
+-#else
+- register char *b, c, c1;
+-
+- b = buf;
+- *b++ = ' ';
+- if (n < 0) {
+- *b++ = '-';
+- n = -n;
+- }
+- else
+- *b++ = ' ';
+- if (n == 0) {
+-#ifdef SIGNED_ZEROS
+- if (signbit_f2c(&n))
+- *b++ = '-';
+-#endif
+- *b++ = '0';
+- *b++ = '.';
+- *b = 0;
+- goto f__ret;
+- }
+- sprintf(b, LGFMT, n);
+- switch(*b) {
+-#ifndef WANT_LEAD_0
+- case '0':
+- while(b[0] = b[1])
+- b++;
+- break;
+-#endif
+- case 'i':
+- case 'I':
+- /* Infinity */
+- case 'n':
+- case 'N':
+- /* NaN */
+- while(*++b);
+- break;
+-
+- default:
+- /* Fortran 77 insists on having a decimal point... */
+- for(;; b++)
+- switch(*b) {
+- case 0:
+- *b++ = '.';
+- *b = 0;
+- goto f__ret;
+- case '.':
+- while(*++b);
+- goto f__ret;
+- case 'E':
+- for(c1 = '.', c = 'E'; *b = c1;
+- c1 = c, c = *++b);
+- goto f__ret;
+- }
+- }
+- f__ret:
+- return b - buf;
+-#endif
+- }
+-
+- static VOID
+-#ifdef KR_headers
+-l_put(s) register char *s;
+-#else
+-l_put(register char *s)
+-#endif
+-{
+-#ifdef KR_headers
+- register void (*pn)() = f__putn;
+-#else
+- register void (*pn)(int) = f__putn;
+-#endif
+- register int c;
+-
+- while(c = *s++)
+- (*pn)(c);
+- }
+-
+- static VOID
+-#ifdef KR_headers
+-lwrt_F(n) double n;
+-#else
+-lwrt_F(double n)
+-#endif
+-{
+- char buf[LEFBL];
+-
+- if(f__recpos + l_g(buf,n) >= L_len)
+- donewrec();
+- l_put(buf);
+-}
+- static VOID
+-#ifdef KR_headers
+-lwrt_C(a,b) double a,b;
+-#else
+-lwrt_C(double a, double b)
+-#endif
+-{
+- char *ba, *bb, bufa[LEFBL], bufb[LEFBL];
+- int al, bl;
+-
+- al = l_g(bufa, a);
+- for(ba = bufa; *ba == ' '; ba++)
+- --al;
+- bl = l_g(bufb, b) + 1; /* intentionally high by 1 */
+- for(bb = bufb; *bb == ' '; bb++)
+- --bl;
+- if(f__recpos + al + bl + 3 >= L_len)
+- donewrec();
+-#ifdef OMIT_BLANK_CC
+- else
+-#endif
+- PUT(' ');
+- PUT('(');
+- l_put(ba);
+- PUT(',');
+- if (f__recpos + bl >= L_len) {
+- (*f__donewrec)();
+-#ifndef OMIT_BLANK_CC
+- PUT(' ');
+-#endif
+- }
+- l_put(bb);
+- PUT(')');
+-}
+-
+- int
+-#ifdef KR_headers
+-l_write(number,ptr,len,type) ftnint *number,type; char *ptr; ftnlen len;
+-#else
+-l_write(ftnint *number, char *ptr, ftnlen len, ftnint type)
+-#endif
+-{
+-#define Ptr ((flex *)ptr)
+- int i;
+- longint x;
+- double y,z;
+- real *xx;
+- doublereal *yy;
+- for(i=0;i< *number; i++)
+- {
+- switch((int)type)
+- {
+- default: f__fatal(117,"unknown type in lio");
+- case TYINT1:
+- x = Ptr->flchar;
+- goto xint;
+- case TYSHORT:
+- x=Ptr->flshort;
+- goto xint;
+-#ifdef Allow_TYQUAD
+- case TYQUAD:
+- x = Ptr->fllongint;
+- goto xint;
+-#endif
+- case TYLONG:
+- x=Ptr->flint;
+- xint: lwrt_I(x);
+- break;
+- case TYREAL:
+- y=Ptr->flreal;
+- goto xfloat;
+- case TYDREAL:
+- y=Ptr->fldouble;
+- xfloat: lwrt_F(y);
+- break;
+- case TYCOMPLEX:
+- xx= &Ptr->flreal;
+- y = *xx++;
+- z = *xx;
+- goto xcomplex;
+- case TYDCOMPLEX:
+- yy = &Ptr->fldouble;
+- y= *yy++;
+- z = *yy;
+- xcomplex:
+- lwrt_C(y,z);
+- break;
+- case TYLOGICAL1:
+- x = Ptr->flchar;
+- goto xlog;
+- case TYLOGICAL2:
+- x = Ptr->flshort;
+- goto xlog;
+- case TYLOGICAL:
+- x = Ptr->flint;
+- xlog: lwrt_L(Ptr->flint, len);
+- break;
+- case TYCHAR:
+- lwrt_A(ptr,len);
+- break;
+- }
+- ptr += len;
+- }
+- return(0);
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/lwrite.c
+echo libI77/makefile 1>&2
+sed >libI77/makefile <<'//GO.SYSIN DD libI77/makefile' 's/^-//'
+-.SUFFIXES: .c .o
+-CC = cc
+-CFLAGS = -O
+-SHELL = /bin/sh
+-
+-# compile, then strip unnecessary symbols
+-.c.o:
+- $(CC) -c -DSkip_f2c_Undefs $(CFLAGS) $*.c
+- ld -r -x -o $*.xxx $*.o
+- mv $*.xxx $*.o
+-## Under Solaris (and other systems that do not understand ld -x),
+-## omit -x in the ld line above.
+-## If your system does not have the ld command, comment out
+-## or remove both the ld and mv lines above.
+-
+-# To get signed zeros in write statements on IEEE-arithmetic systems,
+-# add -DSIGNED_ZEROS to the CFLAGS assignment above and add signbit.o
+-# to the end of the "OBJ =" assignment below. Also copy or link
+-# libF77/arith.h to this directory (after "make arith.h" if necessary
+-# in the libF77 directory). It's simpler to do things all at once
+-# with libf2c.zip and its makefile.u.
+-
+-OBJ = backspace.o close.o dfe.o dolio.o due.o endfile.o err.o fmt.o \
+- fmtlib.o ftell_.o i77vers.o iio.o ilnw.o inquire.o lread.o lwrite.o \
+- open.o rdfmt.o rewind.o rsfe.o rsli.o rsne.o sfe.o sue.o typesize.o \
+- uio.o util.o wref.o wrtfmt.o wsfe.o wsle.o wsne.o xwsne.o
+-
+-all: sysdep1.h libI77.a
+-
+-libI77.a: $(OBJ)
+- ar r libI77.a $?
+- ranlib libI77.a || true
+-
+-### If your system lacks ranlib, you don't need it; see README.
+-
+-install: libI77.a
+- cp libI77.a $(LIBDIR)/libI77.a
+- ranlib $(LIBDIR)/libI77.a || true
+-
+-# i77vers.c was "Version.c"; renamed on 20010623 to accord with libf2c.zip.
+-
+-i77vers.o: i77vers.c
+- $(CC) -c i77vers.c
+-
+-# To compile with C++, first "make f2c.h"
+-f2c.h: f2ch.add
+- cat /usr/include/f2c.h f2ch.add >f2c.h
+-
+-
+-clean:
+- rm -f $(OBJ) libI77.a
+-
+-clobber: clean
+- rm -f libI77.a
+-
+-backspace.o: fio.h
+-close.o: fio.h
+-dfe.o: fio.h
+-dfe.o: fmt.h
+-due.o: fio.h
+-endfile.o: fio.h rawio.h
+-err.o: fio.h rawio.h
+-fmt.o: fio.h
+-fmt.o: fmt.h
+-ftell_.o: fio.h
+-ftell64_.o: fio.h
+-iio.o: fio.h
+-iio.o: fmt.h
+-ilnw.o: fio.h
+-ilnw.o: lio.h
+-inquire.o: fio.h
+-lread.o: fio.h
+-lread.o: fmt.h
+-lread.o: lio.h
+-lread.o: fp.h
+-lwrite.o: fio.h
+-lwrite.o: fmt.h
+-lwrite.o: lio.h
+-open.o: fio.h rawio.h
+-rdfmt.o: fio.h
+-rdfmt.o: fmt.h
+-rdfmt.o: fp.h
+-rewind.o: fio.h
+-rsfe.o: fio.h
+-rsfe.o: fmt.h
+-rsli.o: fio.h
+-rsli.o: lio.h
+-rsne.o: fio.h
+-rsne.o: lio.h
+-sfe.o: fio.h
+-sue.o: fio.h
+-uio.o: fio.h
+-util.o: fio.h
+-wref.o: fio.h
+-wref.o: fmt.h
+-wref.o: fp.h
+-wrtfmt.o: fio.h
+-wrtfmt.o: fmt.h
+-wsfe.o: fio.h
+-wsfe.o: fmt.h
+-wsle.o: fio.h
+-wsle.o: fmt.h
+-wsle.o: lio.h
+-wsne.o: fio.h
+-wsne.o: lio.h
+-xwsne.o: fio.h
+-xwsne.o: lio.h
+-xwsne.o: fmt.h
+-
+-sysdep1.h: sysdep1.h0
+- cp sysdep1.h0 sysdep1.h
+-
+-check:
+- xsum Notice README backspace.c close.c dfe.c dolio.c due.c \
+- endfile.c err.c f2ch.add fio.h fmt.c fmt.h fmtlib.c fp.h ftell_.c \
+- ftell64_.c i77vers.c iio.c ilnw.c inquire.c lio.h lread.c lwrite.c \
+- makefile open.c rawio.h rdfmt.c rewind.c rsfe.c rsli.c rsne.c sfe.c \
+- sue.c typesize.c uio.c util.c wref.c wrtfmt.c wsfe.c wsle.c wsne.c \
+- xwsne.c >zap
+- cmp zap libI77.xsum && rm zap || diff libI77.xsum zap
+//GO.SYSIN DD libI77/makefile
+echo libI77/open.c 1>&2
+sed >libI77/open.c <<'//GO.SYSIN DD libI77/open.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "string.h"
+-#ifndef NON_POSIX_STDIO
+-#ifdef MSDOS
+-#include "io.h"
+-#else
+-#include "unistd.h" /* for access */
+-#endif
+-#endif
+-
+-#ifdef KR_headers
+-extern char *malloc();
+-#ifdef NON_ANSI_STDIO
+-extern char *mktemp();
+-#endif
+-extern integer f_clos();
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-extern int f__canseek(FILE*);
+-extern integer f_clos(cllist*);
+-#endif
+-
+-#ifdef NON_ANSI_RW_MODES
+-char *f__r_mode[2] = {"r", "r"};
+-char *f__w_mode[4] = {"w", "w", "r+w", "r+w"};
+-#else
+-char *f__r_mode[2] = {"rb", "r"};
+-char *f__w_mode[4] = {"wb", "w", "r+b", "r+"};
+-#endif
+-
+- static char f__buf0[400], *f__buf = f__buf0;
+- int f__buflen = (int)sizeof(f__buf0);
+-
+- static void
+-#ifdef KR_headers
+-f__bufadj(n, c) int n, c;
+-#else
+-f__bufadj(int n, int c)
+-#endif
+-{
+- unsigned int len;
+- char *nbuf, *s, *t, *te;
+-
+- if (f__buf == f__buf0)
+- f__buflen = 1024;
+- while(f__buflen <= n)
+- f__buflen <<= 1;
+- len = (unsigned int)f__buflen;
+- if (len != f__buflen || !(nbuf = (char*)malloc(len)))
+- f__fatal(113, "malloc failure");
+- s = nbuf;
+- t = f__buf;
+- te = t + c;
+- while(t < te)
+- *s++ = *t++;
+- if (f__buf != f__buf0)
+- free(f__buf);
+- f__buf = nbuf;
+- }
+-
+- int
+-#ifdef KR_headers
+-f__putbuf(c) int c;
+-#else
+-f__putbuf(int c)
+-#endif
+-{
+- char *s, *se;
+- int n;
+-
+- if (f__hiwater > f__recpos)
+- f__recpos = f__hiwater;
+- n = f__recpos + 1;
+- if (n >= f__buflen)
+- f__bufadj(n, f__recpos);
+- s = f__buf;
+- se = s + f__recpos;
+- if (c)
+- *se++ = c;
+- *se = 0;
+- for(;;) {
+- fputs(s, f__cf);
+- s += strlen(s);
+- if (s >= se)
+- break; /* normally happens the first time */
+- putc(*s++, f__cf);
+- }
+- return 0;
+- }
+-
+- void
+-#ifdef KR_headers
+-x_putc(c)
+-#else
+-x_putc(int c)
+-#endif
+-{
+- if (f__recpos >= f__buflen)
+- f__bufadj(f__recpos, f__buflen);
+- f__buf[f__recpos++] = c;
+- }
+-
+-#define opnerr(f,m,s) {if(f) errno= m; else opn_err(m,s,a); return(m);}
+-
+- static void
+-#ifdef KR_headers
+-opn_err(m, s, a) int m; char *s; olist *a;
+-#else
+-opn_err(int m, char *s, olist *a)
+-#endif
+-{
+- if (a->ofnm) {
+- /* supply file name to error message */
+- if (a->ofnmlen >= f__buflen)
+- f__bufadj((int)a->ofnmlen, 0);
+- g_char(a->ofnm, a->ofnmlen, f__curunit->ufnm = f__buf);
+- }
+- f__fatal(m, s);
+- }
+-
+-#ifdef KR_headers
+-integer f_open(a) olist *a;
+-#else
+-integer f_open(olist *a)
+-#endif
+-{ unit *b;
+- integer rv;
+- char buf[256], *s;
+- cllist x;
+- int ufmt;
+- FILE *tf;
+-#ifndef NON_UNIX_STDIO
+- int n;
+-#endif
+- f__external = 1;
+- if(a->ounit>=MXUNIT || a->ounit<0)
+- err(a->oerr,101,"open")
+- if (!f__init)
+- f_init();
+- f__curunit = b = &f__units[a->ounit];
+- if(b->ufd) {
+- if(a->ofnm==0)
+- {
+- same: if (a->oblnk)
+- b->ublnk = *a->oblnk == 'z' || *a->oblnk == 'Z';
+- return(0);
+- }
+-#ifdef NON_UNIX_STDIO
+- if (b->ufnm
+- && strlen(b->ufnm) == a->ofnmlen
+- && !strncmp(b->ufnm, a->ofnm, (unsigned)a->ofnmlen))
+- goto same;
+-#else
+- g_char(a->ofnm,a->ofnmlen,buf);
+- if (f__inode(buf,&n) == b->uinode && n == b->udev)
+- goto same;
+-#endif
+- x.cunit=a->ounit;
+- x.csta=0;
+- x.cerr=a->oerr;
+- if ((rv = f_clos(&x)) != 0)
+- return rv;
+- }
+- b->url = (int)a->orl;
+- b->ublnk = a->oblnk && (*a->oblnk == 'z' || *a->oblnk == 'Z');
+- if(a->ofm==0)
+- { if(b->url>0) b->ufmt=0;
+- else b->ufmt=1;
+- }
+- else if(*a->ofm=='f' || *a->ofm == 'F') b->ufmt=1;
+- else b->ufmt=0;
+- ufmt = b->ufmt;
+-#ifdef url_Adjust
+- if (b->url && !ufmt)
+- url_Adjust(b->url);
+-#endif
+- if (a->ofnm) {
+- g_char(a->ofnm,a->ofnmlen,buf);
+- if (!buf[0])
+- opnerr(a->oerr,107,"open")
+- }
+- else
+- sprintf(buf, "fort.%ld", (long)a->ounit);
+- b->uscrtch = 0;
+- b->uend=0;
+- b->uwrt = 0;
+- b->ufd = 0;
+- b->urw = 3;
+- switch(a->osta ? *a->osta : 'u')
+- {
+- case 'o':
+- case 'O':
+-#ifdef NON_POSIX_STDIO
+- if (!(tf = FOPEN(buf,"r")))
+- opnerr(a->oerr,errno,"open")
+- fclose(tf);
+-#else
+- if (access(buf,0))
+- opnerr(a->oerr,errno,"open")
+-#endif
+- break;
+- case 's':
+- case 'S':
+- b->uscrtch=1;
+-#ifdef NON_ANSI_STDIO
+- (void) strcpy(buf,"tmp.FXXXXXX");
+- (void) mktemp(buf);
+- goto replace;
+-#else
+- if (!(b->ufd = tmpfile()))
+- opnerr(a->oerr,errno,"open")
+- b->ufnm = 0;
+-#ifndef NON_UNIX_STDIO
+- b->uinode = b->udev = -1;
+-#endif
+- b->useek = 1;
+- return 0;
+-#endif
+-
+- case 'n':
+- case 'N':
+-#ifdef NON_POSIX_STDIO
+- if ((tf = FOPEN(buf,"r")) || (tf = FOPEN(buf,"a"))) {
+- fclose(tf);
+- opnerr(a->oerr,128,"open")
+- }
+-#else
+- if (!access(buf,0))
+- opnerr(a->oerr,128,"open")
+-#endif
+- /* no break */
+- case 'r': /* Fortran 90 replace option */
+- case 'R':
+-#ifdef NON_ANSI_STDIO
+- replace:
+-#endif
+- if (tf = FOPEN(buf,f__w_mode[0]))
+- fclose(tf);
+- }
+-
+- b->ufnm=(char *) malloc((unsigned int)(strlen(buf)+1));
+- if(b->ufnm==NULL) opnerr(a->oerr,113,"no space");
+- (void) strcpy(b->ufnm,buf);
+- if ((s = a->oacc) && b->url)
+- ufmt = 0;
+- if(!(tf = FOPEN(buf, f__w_mode[ufmt|2]))) {
+- if (tf = FOPEN(buf, f__r_mode[ufmt]))
+- b->urw = 1;
+- else if (tf = FOPEN(buf, f__w_mode[ufmt])) {
+- b->uwrt = 1;
+- b->urw = 2;
+- }
+- else
+- err(a->oerr, errno, "open");
+- }
+- b->useek = f__canseek(b->ufd = tf);
+-#ifndef NON_UNIX_STDIO
+- if((b->uinode = f__inode(buf,&b->udev)) == -1)
+- opnerr(a->oerr,108,"open")
+-#endif
+- if(b->useek)
+- if (a->orl)
+- rewind(b->ufd);
+- else if ((s = a->oacc) && (*s == 'a' || *s == 'A')
+- && FSEEK(b->ufd, 0L, SEEK_END))
+- opnerr(a->oerr,129,"open");
+- return(0);
+-}
+-
+- int
+-#ifdef KR_headers
+-fk_open(seq,fmt,n) ftnint n;
+-#else
+-fk_open(int seq, int fmt, ftnint n)
+-#endif
+-{ char nbuf[10];
+- olist a;
+- (void) sprintf(nbuf,"fort.%ld",(long)n);
+- a.oerr=1;
+- a.ounit=n;
+- a.ofnm=nbuf;
+- a.ofnmlen=strlen(nbuf);
+- a.osta=NULL;
+- a.oacc= (char*)(seq==SEQ?"s":"d");
+- a.ofm = (char*)(fmt==FMT?"f":"u");
+- a.orl = seq==DIR?1:0;
+- a.oblnk=NULL;
+- return(f_open(&a));
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/open.c
+echo libI77/rawio.h 1>&2
+sed >libI77/rawio.h <<'//GO.SYSIN DD libI77/rawio.h' 's/^-//'
+-#ifndef KR_headers
+-#ifdef MSDOS
+-#include "io.h"
+-#ifndef WATCOM
+-#define close _close
+-#define creat _creat
+-#define open _open
+-#define read _read
+-#define write _write
+-#endif /*WATCOM*/
+-#endif /*MSDOS*/
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#ifndef MSDOS
+-#ifdef OPEN_DECL
+-extern int creat(const char*,int), open(const char*,int);
+-#endif
+-extern int close(int);
+-extern int read(int,void*,size_t), write(int,void*,size_t);
+-extern int unlink(const char*);
+-#ifndef _POSIX_SOURCE
+-#ifndef NON_UNIX_STDIO
+-extern FILE *fdopen(int, const char*);
+-#endif
+-#endif
+-#endif /*KR_HEADERS*/
+-
+-extern char *mktemp(char*);
+-
+-#ifdef __cplusplus
+- }
+-#endif
+-#endif
+-
+-#include "fcntl.h"
+-
+-#ifndef O_WRONLY
+-#define O_RDONLY 0
+-#define O_WRONLY 1
+-#endif
+//GO.SYSIN DD libI77/rawio.h
+echo libI77/rdfmt.c 1>&2
+sed >libI77/rdfmt.c <<'//GO.SYSIN DD libI77/rdfmt.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-
+-#ifdef KR_headers
+-extern double atof();
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#endif
+-
+-#include "fmt.h"
+-#include "fp.h"
+-#include "ctype.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- static int
+-#ifdef KR_headers
+-rd_Z(n,w,len) Uint *n; ftnlen len;
+-#else
+-rd_Z(Uint *n, int w, ftnlen len)
+-#endif
+-{
+- long x[9];
+- char *s, *s0, *s1, *se, *t;
+- int ch, i, w1, w2;
+- static char hex[256];
+- static int one = 1;
+- int bad = 0;
+-
+- if (!hex['0']) {
+- s = "0123456789";
+- while(ch = *s++)
+- hex[ch] = ch - '0' + 1;
+- s = "ABCDEF";
+- while(ch = *s++)
+- hex[ch] = hex[ch + 'a' - 'A'] = ch - 'A' + 11;
+- }
+- s = s0 = (char *)x;
+- s1 = (char *)&x[4];
+- se = (char *)&x[8];
+- if (len > 4*sizeof(long))
+- return errno = 117;
+- while (w) {
+- GET(ch);
+- if (ch==',' || ch=='\n')
+- break;
+- w--;
+- if (ch > ' ') {
+- if (!hex[ch & 0xff])
+- bad++;
+- *s++ = ch;
+- if (s == se) {
+- /* discard excess characters */
+- for(t = s0, s = s1; t < s1;)
+- *t++ = *s++;
+- s = s1;
+- }
+- }
+- }
+- if (bad)
+- return errno = 115;
+- w = (int)len;
+- w1 = s - s0;
+- w2 = w1+1 >> 1;
+- t = (char *)n;
+- if (*(char *)&one) {
+- /* little endian */
+- t += w - 1;
+- i = -1;
+- }
+- else
+- i = 1;
+- for(; w > w2; t += i, --w)
+- *t = 0;
+- if (!w)
+- return 0;
+- if (w < w2)
+- s0 = s - (w << 1);
+- else if (w1 & 1) {
+- *t = hex[*s0++ & 0xff] - 1;
+- if (!--w)
+- return 0;
+- t += i;
+- }
+- do {
+- *t = hex[*s0 & 0xff]-1 << 4 | hex[s0[1] & 0xff]-1;
+- t += i;
+- s0 += 2;
+- }
+- while(--w);
+- return 0;
+- }
+-
+- static int
+-#ifdef KR_headers
+-rd_I(n,w,len, base) Uint *n; int w; ftnlen len; register int base;
+-#else
+-rd_I(Uint *n, int w, ftnlen len, register int base)
+-#endif
+-{
+- int ch, sign;
+- longint x = 0;
+-
+- if (w <= 0)
+- goto have_x;
+- for(;;) {
+- GET(ch);
+- if (ch != ' ')
+- break;
+- if (!--w)
+- goto have_x;
+- }
+- sign = 0;
+- switch(ch) {
+- case ',':
+- case '\n':
+- w = 0;
+- goto have_x;
+- case '-':
+- sign = 1;
+- case '+':
+- break;
+- default:
+- if (ch >= '0' && ch <= '9') {
+- x = ch - '0';
+- break;
+- }
+- goto have_x;
+- }
+- while(--w) {
+- GET(ch);
+- if (ch >= '0' && ch <= '9') {
+- x = x*base + ch - '0';
+- continue;
+- }
+- if (ch != ' ') {
+- if (ch == '\n' || ch == ',')
+- w = 0;
+- break;
+- }
+- if (f__cblank)
+- x *= base;
+- }
+- if (sign)
+- x = -x;
+- have_x:
+- if(len == sizeof(integer))
+- n->il=x;
+- else if(len == sizeof(char))
+- n->ic = (char)x;
+-#ifdef Allow_TYQUAD
+- else if (len == sizeof(longint))
+- n->ili = x;
+-#endif
+- else
+- n->is = (short)x;
+- if (w) {
+- while(--w)
+- GET(ch);
+- return errno = 115;
+- }
+- return 0;
+-}
+-
+- static int
+-#ifdef KR_headers
+-rd_L(n,w,len) ftnint *n; ftnlen len;
+-#else
+-rd_L(ftnint *n, int w, ftnlen len)
+-#endif
+-{ int ch, dot, lv;
+-
+- if (w <= 0)
+- goto bad;
+- for(;;) {
+- GET(ch);
+- --w;
+- if (ch != ' ')
+- break;
+- if (!w)
+- goto bad;
+- }
+- dot = 0;
+- retry:
+- switch(ch) {
+- case '.':
+- if (dot++ || !w)
+- goto bad;
+- GET(ch);
+- --w;
+- goto retry;
+- case 't':
+- case 'T':
+- lv = 1;
+- break;
+- case 'f':
+- case 'F':
+- lv = 0;
+- break;
+- default:
+- bad:
+- for(; w > 0; --w)
+- GET(ch);
+- /* no break */
+- case ',':
+- case '\n':
+- return errno = 116;
+- }
+- switch(len) {
+- case sizeof(char): *(char *)n = (char)lv; break;
+- case sizeof(short): *(short *)n = (short)lv; break;
+- default: *n = lv;
+- }
+- while(w-- > 0) {
+- GET(ch);
+- if (ch == ',' || ch == '\n')
+- break;
+- }
+- return 0;
+-}
+-
+- static int
+-#ifdef KR_headers
+-rd_F(p, w, d, len) ufloat *p; ftnlen len;
+-#else
+-rd_F(ufloat *p, int w, int d, ftnlen len)
+-#endif
+-{
+- char s[FMAX+EXPMAXDIGS+4];
+- register int ch;
+- register char *sp, *spe, *sp1;
+- double x;
+- int scale1, se;
+- long e, exp;
+-
+- sp1 = sp = s;
+- spe = sp + FMAX;
+- exp = -d;
+- x = 0.;
+-
+- do {
+- GET(ch);
+- w--;
+- } while (ch == ' ' && w);
+- switch(ch) {
+- case '-': *sp++ = ch; sp1++; spe++;
+- case '+':
+- if (!w) goto zero;
+- --w;
+- GET(ch);
+- }
+- while(ch == ' ') {
+-blankdrop:
+- if (!w--) goto zero; GET(ch); }
+- while(ch == '0')
+- { if (!w--) goto zero; GET(ch); }
+- if (ch == ' ' && f__cblank)
+- goto blankdrop;
+- scale1 = f__scale;
+- while(isdigit(ch)) {
+-digloop1:
+- if (sp < spe) *sp++ = ch;
+- else ++exp;
+-digloop1e:
+- if (!w--) goto done;
+- GET(ch);
+- }
+- if (ch == ' ') {
+- if (f__cblank)
+- { ch = '0'; goto digloop1; }
+- goto digloop1e;
+- }
+- if (ch == '.') {
+- exp += d;
+- if (!w--) goto done;
+- GET(ch);
+- if (sp == sp1) { /* no digits yet */
+- while(ch == '0') {
+-skip01:
+- --exp;
+-skip0:
+- if (!w--) goto done;
+- GET(ch);
+- }
+- if (ch == ' ') {
+- if (f__cblank) goto skip01;
+- goto skip0;
+- }
+- }
+- while(isdigit(ch)) {
+-digloop2:
+- if (sp < spe)
+- { *sp++ = ch; --exp; }
+-digloop2e:
+- if (!w--) goto done;
+- GET(ch);
+- }
+- if (ch == ' ') {
+- if (f__cblank)
+- { ch = '0'; goto digloop2; }
+- goto digloop2e;
+- }
+- }
+- switch(ch) {
+- default:
+- break;
+- case '-': se = 1; goto signonly;
+- case '+': se = 0; goto signonly;
+- case 'e':
+- case 'E':
+- case 'd':
+- case 'D':
+- if (!w--)
+- goto bad;
+- GET(ch);
+- while(ch == ' ') {
+- if (!w--)
+- goto bad;
+- GET(ch);
+- }
+- se = 0;
+- switch(ch) {
+- case '-': se = 1;
+- case '+':
+-signonly:
+- if (!w--)
+- goto bad;
+- GET(ch);
+- }
+- while(ch == ' ') {
+- if (!w--)
+- goto bad;
+- GET(ch);
+- }
+- if (!isdigit(ch))
+- goto bad;
+-
+- e = ch - '0';
+- for(;;) {
+- if (!w--)
+- { ch = '\n'; break; }
+- GET(ch);
+- if (!isdigit(ch)) {
+- if (ch == ' ') {
+- if (f__cblank)
+- ch = '0';
+- else continue;
+- }
+- else
+- break;
+- }
+- e = 10*e + ch - '0';
+- if (e > EXPMAX && sp > sp1)
+- goto bad;
+- }
+- if (se)
+- exp -= e;
+- else
+- exp += e;
+- scale1 = 0;
+- }
+- switch(ch) {
+- case '\n':
+- case ',':
+- break;
+- default:
+-bad:
+- return (errno = 115);
+- }
+-done:
+- if (sp > sp1) {
+- while(*--sp == '0')
+- ++exp;
+- if (exp -= scale1)
+- sprintf(sp+1, "e%ld", exp);
+- else
+- sp[1] = 0;
+- x = atof(s);
+- }
+-zero:
+- if (len == sizeof(real))
+- p->pf = x;
+- else
+- p->pd = x;
+- return(0);
+- }
+-
+-
+- static int
+-#ifdef KR_headers
+-rd_A(p,len) char *p; ftnlen len;
+-#else
+-rd_A(char *p, ftnlen len)
+-#endif
+-{ int i,ch;
+- for(i=0;i<len;i++)
+- { GET(ch);
+- *p++=VAL(ch);
+- }
+- return(0);
+-}
+- static int
+-#ifdef KR_headers
+-rd_AW(p,w,len) char *p; ftnlen len;
+-#else
+-rd_AW(char *p, int w, ftnlen len)
+-#endif
+-{ int i,ch;
+- if(w>=len)
+- { for(i=0;i<w-len;i++)
+- GET(ch);
+- for(i=0;i<len;i++)
+- { GET(ch);
+- *p++=VAL(ch);
+- }
+- return(0);
+- }
+- for(i=0;i<w;i++)
+- { GET(ch);
+- *p++=VAL(ch);
+- }
+- for(i=0;i<len-w;i++) *p++=' ';
+- return(0);
+-}
+- static int
+-#ifdef KR_headers
+-rd_H(n,s) char *s;
+-#else
+-rd_H(int n, char *s)
+-#endif
+-{ int i,ch;
+- for(i=0;i<n;i++)
+- if((ch=(*f__getn)())<0) return(ch);
+- else *s++ = ch=='\n'?' ':ch;
+- return(1);
+-}
+- static int
+-#ifdef KR_headers
+-rd_POS(s) char *s;
+-#else
+-rd_POS(char *s)
+-#endif
+-{ char quote;
+- int ch;
+- quote= *s++;
+- for(;*s;s++)
+- if(*s==quote && *(s+1)!=quote) break;
+- else if((ch=(*f__getn)())<0) return(ch);
+- else *s = ch=='\n'?' ':ch;
+- return(1);
+-}
+-
+- int
+-#ifdef KR_headers
+-rd_ed(p,ptr,len) struct syl *p; char *ptr; ftnlen len;
+-#else
+-rd_ed(struct syl *p, char *ptr, ftnlen len)
+-#endif
+-{ int ch;
+- for(;f__cursor>0;f__cursor--) if((ch=(*f__getn)())<0) return(ch);
+- if(f__cursor<0)
+- { if(f__recpos+f__cursor < 0) /*err(elist->cierr,110,"fmt")*/
+- f__cursor = -f__recpos; /* is this in the standard? */
+- if(f__external == 0) {
+- extern char *f__icptr;
+- f__icptr += f__cursor;
+- }
+- else if(f__curunit && f__curunit->useek)
+- (void) FSEEK(f__cf, f__cursor,SEEK_CUR);
+- else
+- err(f__elist->cierr,106,"fmt");
+- f__recpos += f__cursor;
+- f__cursor=0;
+- }
+- switch(p->op)
+- {
+- default: fprintf(stderr,"rd_ed, unexpected code: %d\n", p->op);
+- sig_die(f__fmtbuf, 1);
+- case IM:
+- case I: ch = rd_I((Uint *)ptr,p->p1,len, 10);
+- break;
+-
+- /* O and OM don't work right for character, double, complex, */
+- /* or doublecomplex, and they differ from Fortran 90 in */
+- /* showing a minus sign for negative values. */
+-
+- case OM:
+- case O: ch = rd_I((Uint *)ptr, p->p1, len, 8);
+- break;
+- case L: ch = rd_L((ftnint *)ptr,p->p1,len);
+- break;
+- case A: ch = rd_A(ptr,len);
+- break;
+- case AW:
+- ch = rd_AW(ptr,p->p1,len);
+- break;
+- case E: case EE:
+- case D:
+- case G:
+- case GE:
+- case F: ch = rd_F((ufloat *)ptr,p->p1,p->p2.i[0],len);
+- break;
+-
+- /* Z and ZM assume 8-bit bytes. */
+-
+- case ZM:
+- case Z:
+- ch = rd_Z((Uint *)ptr, p->p1, len);
+- break;
+- }
+- if(ch == 0) return(ch);
+- else if(ch == EOF) return(EOF);
+- if (f__cf)
+- clearerr(f__cf);
+- return(errno);
+-}
+-
+- int
+-#ifdef KR_headers
+-rd_ned(p) struct syl *p;
+-#else
+-rd_ned(struct syl *p)
+-#endif
+-{
+- switch(p->op)
+- {
+- default: fprintf(stderr,"rd_ned, unexpected code: %d\n", p->op);
+- sig_die(f__fmtbuf, 1);
+- case APOS:
+- return(rd_POS(p->p2.s));
+- case H: return(rd_H(p->p1,p->p2.s));
+- case SLASH: return((*f__donewrec)());
+- case TR:
+- case X: f__cursor += p->p1;
+- return(1);
+- case T: f__cursor=p->p1-f__recpos - 1;
+- return(1);
+- case TL: f__cursor -= p->p1;
+- if(f__cursor < -f__recpos) /* TL1000, 1X */
+- f__cursor = -f__recpos;
+- return(1);
+- }
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/rdfmt.c
+echo libI77/rewind.c 1>&2
+sed >libI77/rewind.c <<'//GO.SYSIN DD libI77/rewind.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#ifdef KR_headers
+-integer f_rew(a) alist *a;
+-#else
+-integer f_rew(alist *a)
+-#endif
+-{
+- unit *b;
+- if(a->aunit>=MXUNIT || a->aunit<0)
+- err(a->aerr,101,"rewind");
+- b = &f__units[a->aunit];
+- if(b->ufd == NULL || b->uwrt == 3)
+- return(0);
+- if(!b->useek)
+- err(a->aerr,106,"rewind")
+- if(b->uwrt) {
+- (void) t_runc(a);
+- b->uwrt = 3;
+- }
+- rewind(b->ufd);
+- b->uend=0;
+- return(0);
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/rewind.c
+echo libI77/rsfe.c 1>&2
+sed >libI77/rsfe.c <<'//GO.SYSIN DD libI77/rsfe.c' 's/^-//'
+-/* read sequential formatted external */
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- int
+-xrd_SL(Void)
+-{ int ch;
+- if(!f__curunit->uend)
+- while((ch=getc(f__cf))!='\n')
+- if (ch == EOF) {
+- f__curunit->uend = 1;
+- break;
+- }
+- f__cursor=f__recpos=0;
+- return(1);
+-}
+-
+- int
+-x_getc(Void)
+-{ int ch;
+- if(f__curunit->uend) return(EOF);
+- ch = getc(f__cf);
+- if(ch!=EOF && ch!='\n')
+- { f__recpos++;
+- return(ch);
+- }
+- if(ch=='\n')
+- { (void) ungetc(ch,f__cf);
+- return(ch);
+- }
+- if(f__curunit->uend || feof(f__cf))
+- { errno=0;
+- f__curunit->uend=1;
+- return(-1);
+- }
+- return(-1);
+-}
+-
+- int
+-x_endp(Void)
+-{
+- xrd_SL();
+- return f__curunit->uend == 1 ? EOF : 0;
+-}
+-
+- int
+-x_rev(Void)
+-{
+- (void) xrd_SL();
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_rsfe(a) cilist *a; /* start */
+-#else
+-integer s_rsfe(cilist *a) /* start */
+-#endif
+-{ int n;
+- if(!f__init) f_init();
+- f__reading=1;
+- f__sequential=1;
+- f__formatted=1;
+- f__external=1;
+- if(n=c_sfe(a)) return(n);
+- f__elist=a;
+- f__cursor=f__recpos=0;
+- f__scale=0;
+- f__fmtbuf=a->cifmt;
+- f__cf=f__curunit->ufd;
+- if(pars_f(f__fmtbuf)<0) err(a->cierr,100,"startio");
+- f__getn= x_getc;
+- f__doed= rd_ed;
+- f__doned= rd_ned;
+- fmt_bg();
+- f__doend=x_endp;
+- f__donewrec=xrd_SL;
+- f__dorevert=x_rev;
+- f__cblank=f__curunit->ublnk;
+- f__cplus=0;
+- if(f__curunit->uwrt && f__nowreading(f__curunit))
+- err(a->cierr,errno,"read start");
+- if(f__curunit->uend)
+- err(f__elist->ciend,(EOF),"read start");
+- return(0);
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/rsfe.c
+echo libI77/rsli.c 1>&2
+sed >libI77/rsli.c <<'//GO.SYSIN DD libI77/rsli.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "lio.h"
+-#include "fmt.h" /* for f__doend */
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-extern flag f__lquit;
+-extern int f__lcount;
+-extern char *f__icptr;
+-extern char *f__icend;
+-extern icilist *f__svic;
+-extern int f__icnum, f__recpos;
+-
+-static int i_getc(Void)
+-{
+- if(f__recpos >= f__svic->icirlen) {
+- if (f__recpos++ == f__svic->icirlen)
+- return '\n';
+- z_rnew();
+- }
+- f__recpos++;
+- if(f__icptr >= f__icend)
+- return EOF;
+- return(*f__icptr++);
+- }
+-
+- static
+-#ifdef KR_headers
+-int i_ungetc(ch, f) int ch; FILE *f;
+-#else
+-int i_ungetc(int ch, FILE *f)
+-#endif
+-{
+- if (--f__recpos == f__svic->icirlen)
+- return '\n';
+- if (f__recpos < -1)
+- err(f__svic->icierr,110,"recend");
+- /* *--icptr == ch, and icptr may point to read-only memory */
+- return *--f__icptr /* = ch */;
+- }
+-
+- static void
+-#ifdef KR_headers
+-c_lir(a) icilist *a;
+-#else
+-c_lir(icilist *a)
+-#endif
+-{
+- extern int l_eof;
+- f__reading = 1;
+- f__external = 0;
+- f__formatted = 1;
+- f__svic = a;
+- L_len = a->icirlen;
+- f__recpos = -1;
+- f__icnum = f__recpos = 0;
+- f__cursor = 0;
+- l_getc = i_getc;
+- l_ungetc = i_ungetc;
+- l_eof = 0;
+- f__icptr = a->iciunit;
+- f__icend = f__icptr + a->icirlen*a->icirnum;
+- f__cf = 0;
+- f__curunit = 0;
+- f__elist = (cilist *)a;
+- }
+-
+-
+-#ifdef KR_headers
+-integer s_rsli(a) icilist *a;
+-#else
+-integer s_rsli(icilist *a)
+-#endif
+-{
+- f__lioproc = l_read;
+- f__lquit = 0;
+- f__lcount = 0;
+- c_lir(a);
+- f__doend = 0;
+- return(0);
+- }
+-
+-integer e_rsli(Void)
+-{ return 0; }
+-
+-#ifdef KR_headers
+-integer s_rsni(a) icilist *a;
+-#else
+-extern int x_rsne(cilist*);
+-
+-integer s_rsni(icilist *a)
+-#endif
+-{
+- extern int nml_read;
+- integer rv;
+- cilist ca;
+- ca.ciend = a->iciend;
+- ca.cierr = a->icierr;
+- ca.cifmt = a->icifmt;
+- c_lir(a);
+- rv = x_rsne(&ca);
+- nml_read = 0;
+- return rv;
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/rsli.c
+echo libI77/rsne.c 1>&2
+sed >libI77/rsne.c <<'//GO.SYSIN DD libI77/rsne.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "lio.h"
+-
+-#define MAX_NL_CACHE 3 /* maximum number of namelist hash tables to cache */
+-#define MAXDIM 20 /* maximum number of subscripts */
+-
+- struct dimen {
+- ftnlen extent;
+- ftnlen curval;
+- ftnlen delta;
+- ftnlen stride;
+- };
+- typedef struct dimen dimen;
+-
+- struct hashentry {
+- struct hashentry *next;
+- char *name;
+- Vardesc *vd;
+- };
+- typedef struct hashentry hashentry;
+-
+- struct hashtab {
+- struct hashtab *next;
+- Namelist *nl;
+- int htsize;
+- hashentry *tab[1];
+- };
+- typedef struct hashtab hashtab;
+-
+- static hashtab *nl_cache;
+- static int n_nlcache;
+- static hashentry **zot;
+- static int colonseen;
+- extern ftnlen f__typesize[];
+-
+- extern flag f__lquit;
+- extern int f__lcount, nml_read;
+- extern int t_getc(Void);
+-
+-#ifdef KR_headers
+- extern char *malloc(), *memset();
+-
+-#ifdef ungetc
+- static int
+-un_getc(x,f__cf) int x; FILE *f__cf;
+-{ return ungetc(x,f__cf); }
+-#else
+-#define un_getc ungetc
+- extern int ungetc();
+-#endif
+-
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#include "string.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#ifdef ungetc
+- static int
+-un_getc(int x, FILE *f__cf)
+-{ return ungetc(x,f__cf); }
+-#else
+-#define un_getc ungetc
+-extern int ungetc(int, FILE*); /* for systems with a buggy stdio.h */
+-#endif
+-#endif
+-
+- static Vardesc *
+-#ifdef KR_headers
+-hash(ht, s) hashtab *ht; register char *s;
+-#else
+-hash(hashtab *ht, register char *s)
+-#endif
+-{
+- register int c, x;
+- register hashentry *h;
+- char *s0 = s;
+-
+- for(x = 0; c = *s++; x = x & 0x4000 ? ((x << 1) & 0x7fff) + 1 : x << 1)
+- x += c;
+- for(h = *(zot = ht->tab + x % ht->htsize); h; h = h->next)
+- if (!strcmp(s0, h->name))
+- return h->vd;
+- return 0;
+- }
+-
+- hashtab *
+-#ifdef KR_headers
+-mk_hashtab(nl) Namelist *nl;
+-#else
+-mk_hashtab(Namelist *nl)
+-#endif
+-{
+- int nht, nv;
+- hashtab *ht;
+- Vardesc *v, **vd, **vde;
+- hashentry *he;
+-
+- hashtab **x, **x0, *y;
+- for(x = &nl_cache; y = *x; x0 = x, x = &y->next)
+- if (nl == y->nl)
+- return y;
+- if (n_nlcache >= MAX_NL_CACHE) {
+- /* discard least recently used namelist hash table */
+- y = *x0;
+- free((char *)y->next);
+- y->next = 0;
+- }
+- else
+- n_nlcache++;
+- nv = nl->nvars;
+- if (nv >= 0x4000)
+- nht = 0x7fff;
+- else {
+- for(nht = 1; nht < nv; nht <<= 1);
+- nht += nht - 1;
+- }
+- ht = (hashtab *)malloc(sizeof(hashtab) + (nht-1)*sizeof(hashentry *)
+- + nv*sizeof(hashentry));
+- if (!ht)
+- return 0;
+- he = (hashentry *)&ht->tab[nht];
+- ht->nl = nl;
+- ht->htsize = nht;
+- ht->next = nl_cache;
+- nl_cache = ht;
+- memset((char *)ht->tab, 0, nht*sizeof(hashentry *));
+- vd = nl->vars;
+- vde = vd + nv;
+- while(vd < vde) {
+- v = *vd++;
+- if (!hash(ht, v->name)) {
+- he->next = *zot;
+- *zot = he;
+- he->name = v->name;
+- he->vd = v;
+- he++;
+- }
+- }
+- return ht;
+- }
+-
+-static char Alpha[256], Alphanum[256];
+-
+- static VOID
+-nl_init(Void) {
+- register char *s;
+- register int c;
+-
+- if(!f__init)
+- f_init();
+- for(s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; c = *s++; )
+- Alpha[c]
+- = Alphanum[c]
+- = Alpha[c + 'a' - 'A']
+- = Alphanum[c + 'a' - 'A']
+- = c;
+- for(s = "0123456789_"; c = *s++; )
+- Alphanum[c] = c;
+- }
+-
+-#define GETC(x) (x=(*l_getc)())
+-#define Ungetc(x,y) (*l_ungetc)(x,y)
+-
+- static int
+-#ifdef KR_headers
+-getname(s, slen) register char *s; int slen;
+-#else
+-getname(register char *s, int slen)
+-#endif
+-{
+- register char *se = s + slen - 1;
+- register int ch;
+-
+- GETC(ch);
+- if (!(*s++ = Alpha[ch & 0xff])) {
+- if (ch != EOF)
+- ch = 115;
+- errfl(f__elist->cierr, ch, "namelist read");
+- }
+- while(*s = Alphanum[GETC(ch) & 0xff])
+- if (s < se)
+- s++;
+- if (ch == EOF)
+- err(f__elist->cierr, EOF, "namelist read");
+- if (ch > ' ')
+- Ungetc(ch,f__cf);
+- return *s = 0;
+- }
+-
+- static int
+-#ifdef KR_headers
+-getnum(chp, val) int *chp; ftnlen *val;
+-#else
+-getnum(int *chp, ftnlen *val)
+-#endif
+-{
+- register int ch, sign;
+- register ftnlen x;
+-
+- while(GETC(ch) <= ' ' && ch >= 0);
+- if (ch == '-') {
+- sign = 1;
+- GETC(ch);
+- }
+- else {
+- sign = 0;
+- if (ch == '+')
+- GETC(ch);
+- }
+- x = ch - '0';
+- if (x < 0 || x > 9)
+- return 115;
+- while(GETC(ch) >= '0' && ch <= '9')
+- x = 10*x + ch - '0';
+- while(ch <= ' ' && ch >= 0)
+- GETC(ch);
+- if (ch == EOF)
+- return EOF;
+- *val = sign ? -x : x;
+- *chp = ch;
+- return 0;
+- }
+-
+- static int
+-#ifdef KR_headers
+-getdimen(chp, d, delta, extent, x1)
+- int *chp; dimen *d; ftnlen delta, extent, *x1;
+-#else
+-getdimen(int *chp, dimen *d, ftnlen delta, ftnlen extent, ftnlen *x1)
+-#endif
+-{
+- register int k;
+- ftnlen x2, x3;
+-
+- if (k = getnum(chp, x1))
+- return k;
+- x3 = 1;
+- if (*chp == ':') {
+- if (k = getnum(chp, &x2))
+- return k;
+- x2 -= *x1;
+- if (*chp == ':') {
+- if (k = getnum(chp, &x3))
+- return k;
+- if (!x3)
+- return 123;
+- x2 /= x3;
+- colonseen = 1;
+- }
+- if (x2 < 0 || x2 >= extent)
+- return 123;
+- d->extent = x2 + 1;
+- }
+- else
+- d->extent = 1;
+- d->curval = 0;
+- d->delta = delta;
+- d->stride = x3;
+- return 0;
+- }
+-
+-#ifndef No_Namelist_Questions
+- static Void
+-#ifdef KR_headers
+-print_ne(a) cilist *a;
+-#else
+-print_ne(cilist *a)
+-#endif
+-{
+- flag intext = f__external;
+- int rpsave = f__recpos;
+- FILE *cfsave = f__cf;
+- unit *usave = f__curunit;
+- cilist t;
+- t = *a;
+- t.ciunit = 6;
+- s_wsne(&t);
+- fflush(f__cf);
+- f__external = intext;
+- f__reading = 1;
+- f__recpos = rpsave;
+- f__cf = cfsave;
+- f__curunit = usave;
+- f__elist = a;
+- }
+-#endif
+-
+- static char where0[] = "namelist read start ";
+-
+- int
+-#ifdef KR_headers
+-x_rsne(a) cilist *a;
+-#else
+-x_rsne(cilist *a)
+-#endif
+-{
+- int ch, got1, k, n, nd, quote, readall;
+- Namelist *nl;
+- static char where[] = "namelist read";
+- char buf[64];
+- hashtab *ht;
+- Vardesc *v;
+- dimen *dn, *dn0, *dn1;
+- ftnlen *dims, *dims1;
+- ftnlen b, b0, b1, ex, no, nomax, size, span;
+- ftnint no1, no2, type;
+- char *vaddr;
+- long iva, ivae;
+- dimen dimens[MAXDIM], substr;
+-
+- if (!Alpha['a'])
+- nl_init();
+- f__reading=1;
+- f__formatted=1;
+- got1 = 0;
+- top:
+- for(;;) switch(GETC(ch)) {
+- case EOF:
+- eof:
+- err(a->ciend,(EOF),where0);
+- case '&':
+- case '$':
+- goto have_amp;
+-#ifndef No_Namelist_Questions
+- case '?':
+- print_ne(a);
+- continue;
+-#endif
+- default:
+- if (ch <= ' ' && ch >= 0)
+- continue;
+-#ifndef No_Namelist_Comments
+- while(GETC(ch) != '\n')
+- if (ch == EOF)
+- goto eof;
+-#else
+- errfl(a->cierr, 115, where0);
+-#endif
+- }
+- have_amp:
+- if (ch = getname(buf,sizeof(buf)))
+- return ch;
+- nl = (Namelist *)a->cifmt;
+- if (strcmp(buf, nl->name))
+-#ifdef No_Bad_Namelist_Skip
+- errfl(a->cierr, 118, where0);
+-#else
+- {
+- fprintf(stderr,
+- "Skipping namelist \"%s\": seeking namelist \"%s\".\n",
+- buf, nl->name);
+- fflush(stderr);
+- for(;;) switch(GETC(ch)) {
+- case EOF:
+- err(a->ciend, EOF, where0);
+- case '/':
+- case '&':
+- case '$':
+- if (f__external)
+- e_rsle();
+- else
+- z_rnew();
+- goto top;
+- case '"':
+- case '\'':
+- quote = ch;
+- more_quoted:
+- while(GETC(ch) != quote)
+- if (ch == EOF)
+- err(a->ciend, EOF, where0);
+- if (GETC(ch) == quote)
+- goto more_quoted;
+- Ungetc(ch,f__cf);
+- default:
+- continue;
+- }
+- }
+-#endif
+- ht = mk_hashtab(nl);
+- if (!ht)
+- errfl(f__elist->cierr, 113, where0);
+- for(;;) {
+- for(;;) switch(GETC(ch)) {
+- case EOF:
+- if (got1)
+- return 0;
+- err(a->ciend, EOF, where0);
+- case '/':
+- case '$':
+- case '&':
+- return 0;
+- default:
+- if (ch <= ' ' && ch >= 0 || ch == ',')
+- continue;
+- Ungetc(ch,f__cf);
+- if (ch = getname(buf,sizeof(buf)))
+- return ch;
+- goto havename;
+- }
+- havename:
+- v = hash(ht,buf);
+- if (!v)
+- errfl(a->cierr, 119, where);
+- while(GETC(ch) <= ' ' && ch >= 0);
+- vaddr = v->addr;
+- type = v->type;
+- if (type < 0) {
+- size = -type;
+- type = TYCHAR;
+- }
+- else
+- size = f__typesize[type];
+- ivae = size;
+- iva = readall = 0;
+- if (ch == '(' /*)*/ ) {
+- dn = dimens;
+- if (!(dims = v->dims)) {
+- if (type != TYCHAR)
+- errfl(a->cierr, 122, where);
+- if (k = getdimen(&ch, dn, (ftnlen)size,
+- (ftnlen)size, &b))
+- errfl(a->cierr, k, where);
+- if (ch != ')')
+- errfl(a->cierr, 115, where);
+- b1 = dn->extent;
+- if (--b < 0 || b + b1 > size)
+- return 124;
+- iva += b;
+- size = b1;
+- while(GETC(ch) <= ' ' && ch >= 0);
+- goto scalar;
+- }
+- nd = (int)dims[0];
+- nomax = span = dims[1];
+- ivae = iva + size*nomax;
+- colonseen = 0;
+- if (k = getdimen(&ch, dn, size, nomax, &b))
+- errfl(a->cierr, k, where);
+- no = dn->extent;
+- b0 = dims[2];
+- dims1 = dims += 3;
+- ex = 1;
+- for(n = 1; n++ < nd; dims++) {
+- if (ch != ',')
+- errfl(a->cierr, 115, where);
+- dn1 = dn + 1;
+- span /= *dims;
+- if (k = getdimen(&ch, dn1, dn->delta**dims,
+- span, &b1))
+- errfl(a->cierr, k, where);
+- ex *= *dims;
+- b += b1*ex;
+- no *= dn1->extent;
+- dn = dn1;
+- }
+- if (ch != ')')
+- errfl(a->cierr, 115, where);
+- readall = 1 - colonseen;
+- b -= b0;
+- if (b < 0 || b >= nomax)
+- errfl(a->cierr, 125, where);
+- iva += size * b;
+- dims = dims1;
+- while(GETC(ch) <= ' ' && ch >= 0);
+- no1 = 1;
+- dn0 = dimens;
+- if (type == TYCHAR && ch == '(' /*)*/) {
+- if (k = getdimen(&ch, &substr, size, size, &b))
+- errfl(a->cierr, k, where);
+- if (ch != ')')
+- errfl(a->cierr, 115, where);
+- b1 = substr.extent;
+- if (--b < 0 || b + b1 > size)
+- return 124;
+- iva += b;
+- b0 = size;
+- size = b1;
+- while(GETC(ch) <= ' ' && ch >= 0);
+- if (b1 < b0)
+- goto delta_adj;
+- }
+- if (readall)
+- goto delta_adj;
+- for(; dn0 < dn; dn0++) {
+- if (dn0->extent != *dims++ || dn0->stride != 1)
+- break;
+- no1 *= dn0->extent;
+- }
+- if (dn0 == dimens && dimens[0].stride == 1) {
+- no1 = dimens[0].extent;
+- dn0++;
+- }
+- delta_adj:
+- ex = 0;
+- for(dn1 = dn0; dn1 <= dn; dn1++)
+- ex += (dn1->extent-1)
+- * (dn1->delta *= dn1->stride);
+- for(dn1 = dn; dn1 > dn0; dn1--) {
+- ex -= (dn1->extent - 1) * dn1->delta;
+- dn1->delta -= ex;
+- }
+- }
+- else if (dims = v->dims) {
+- no = no1 = dims[1];
+- ivae = iva + no*size;
+- }
+- else
+- scalar:
+- no = no1 = 1;
+- if (ch != '=')
+- errfl(a->cierr, 115, where);
+- got1 = nml_read = 1;
+- f__lcount = 0;
+- readloop:
+- for(;;) {
+- if (iva >= ivae || iva < 0) {
+- f__lquit = 1;
+- goto mustend;
+- }
+- else if (iva + no1*size > ivae)
+- no1 = (ivae - iva)/size;
+- f__lquit = 0;
+- if (k = l_read(&no1, vaddr + iva, size, type))
+- return k;
+- if (f__lquit == 1)
+- return 0;
+- if (readall) {
+- iva += dn0->delta;
+- if (f__lcount > 0) {
+- no2 = (ivae - iva)/size;
+- if (no2 > f__lcount)
+- no2 = f__lcount;
+- if (k = l_read(&no2, vaddr + iva,
+- size, type))
+- return k;
+- iva += no2 * dn0->delta;
+- }
+- }
+- mustend:
+- GETC(ch);
+- if (readall)
+- if (iva >= ivae)
+- readall = 0;
+- else for(;;) {
+- switch(ch) {
+- case ' ':
+- case '\t':
+- case '\n':
+- GETC(ch);
+- continue;
+- }
+- break;
+- }
+- if (ch == '/' || ch == '$' || ch == '&') {
+- f__lquit = 1;
+- return 0;
+- }
+- else if (f__lquit) {
+- while(ch <= ' ' && ch >= 0)
+- GETC(ch);
+- Ungetc(ch,f__cf);
+- if (!Alpha[ch & 0xff] && ch >= 0)
+- errfl(a->cierr, 125, where);
+- break;
+- }
+- Ungetc(ch,f__cf);
+- if (readall && !Alpha[ch & 0xff])
+- goto readloop;
+- if ((no -= no1) <= 0)
+- break;
+- for(dn1 = dn0; dn1 <= dn; dn1++) {
+- if (++dn1->curval < dn1->extent) {
+- iva += dn1->delta;
+- goto readloop;
+- }
+- dn1->curval = 0;
+- }
+- break;
+- }
+- }
+- }
+-
+- integer
+-#ifdef KR_headers
+-s_rsne(a) cilist *a;
+-#else
+-s_rsne(cilist *a)
+-#endif
+-{
+- extern int l_eof;
+- int n;
+-
+- f__external=1;
+- l_eof = 0;
+- if(n = c_le(a))
+- return n;
+- if(f__curunit->uwrt && f__nowreading(f__curunit))
+- err(a->cierr,errno,where0);
+- l_getc = t_getc;
+- l_ungetc = un_getc;
+- f__doend = xrd_SL;
+- n = x_rsne(a);
+- nml_read = 0;
+- if (n)
+- return n;
+- return e_rsle();
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/rsne.c
+echo libI77/sfe.c 1>&2
+sed >libI77/sfe.c <<'//GO.SYSIN DD libI77/sfe.c' 's/^-//'
+-/* sequential formatted external common routines*/
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-extern char *f__fmtbuf;
+-
+-integer e_rsfe(Void)
+-{ int n;
+- n=en_fio();
+- f__fmtbuf=NULL;
+- return(n);
+-}
+-
+- int
+-#ifdef KR_headers
+-c_sfe(a) cilist *a; /* check */
+-#else
+-c_sfe(cilist *a) /* check */
+-#endif
+-{ unit *p;
+- f__curunit = p = &f__units[a->ciunit];
+- if(a->ciunit >= MXUNIT || a->ciunit<0)
+- err(a->cierr,101,"startio");
+- if(p->ufd==NULL && fk_open(SEQ,FMT,a->ciunit)) err(a->cierr,114,"sfe")
+- if(!p->ufmt) err(a->cierr,102,"sfe")
+- return(0);
+-}
+-integer e_wsfe(Void)
+-{
+- int n = en_fio();
+- f__fmtbuf = NULL;
+-#ifdef ALWAYS_FLUSH
+- if (!n && fflush(f__cf))
+- err(f__elist->cierr, errno, "write end");
+-#endif
+- return n;
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/sfe.c
+echo libI77/sue.c 1>&2
+sed >libI77/sue.c <<'//GO.SYSIN DD libI77/sue.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-extern uiolen f__reclen;
+-OFF_T f__recloc;
+-
+- int
+-#ifdef KR_headers
+-c_sue(a) cilist *a;
+-#else
+-c_sue(cilist *a)
+-#endif
+-{
+- f__external=f__sequential=1;
+- f__formatted=0;
+- f__curunit = &f__units[a->ciunit];
+- if(a->ciunit >= MXUNIT || a->ciunit < 0)
+- err(a->cierr,101,"startio");
+- f__elist=a;
+- if(f__curunit->ufd==NULL && fk_open(SEQ,UNF,a->ciunit))
+- err(a->cierr,114,"sue");
+- f__cf=f__curunit->ufd;
+- if(f__curunit->ufmt) err(a->cierr,103,"sue")
+- if(!f__curunit->useek) err(a->cierr,103,"sue")
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_rsue(a) cilist *a;
+-#else
+-integer s_rsue(cilist *a)
+-#endif
+-{
+- int n;
+- if(!f__init) f_init();
+- f__reading=1;
+- if(n=c_sue(a)) return(n);
+- f__recpos=0;
+- if(f__curunit->uwrt && f__nowreading(f__curunit))
+- err(a->cierr, errno, "read start");
+- if(fread((char *)&f__reclen,sizeof(uiolen),1,f__cf)
+- != 1)
+- { if(feof(f__cf))
+- { f__curunit->uend = 1;
+- err(a->ciend, EOF, "start");
+- }
+- clearerr(f__cf);
+- err(a->cierr, errno, "start");
+- }
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_wsue(a) cilist *a;
+-#else
+-integer s_wsue(cilist *a)
+-#endif
+-{
+- int n;
+- if(!f__init) f_init();
+- if(n=c_sue(a)) return(n);
+- f__reading=0;
+- f__reclen=0;
+- if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
+- err(a->cierr, errno, "write start");
+- f__recloc=FTELL(f__cf);
+- FSEEK(f__cf,(OFF_T)sizeof(uiolen),SEEK_CUR);
+- return(0);
+-}
+-integer e_wsue(Void)
+-{ OFF_T loc;
+- fwrite((char *)&f__reclen,sizeof(uiolen),1,f__cf);
+-#ifdef ALWAYS_FLUSH
+- if (fflush(f__cf))
+- err(f__elist->cierr, errno, "write end");
+-#endif
+- loc=FTELL(f__cf);
+- FSEEK(f__cf,f__recloc,SEEK_SET);
+- fwrite((char *)&f__reclen,sizeof(uiolen),1,f__cf);
+- FSEEK(f__cf,loc,SEEK_SET);
+- return(0);
+-}
+-integer e_rsue(Void)
+-{
+- FSEEK(f__cf,(OFF_T)(f__reclen-f__recpos+sizeof(uiolen)),SEEK_CUR);
+- return(0);
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/sue.c
+echo libI77/typesize.c 1>&2
+sed >libI77/typesize.c <<'//GO.SYSIN DD libI77/typesize.c' 's/^-//'
+-#include "f2c.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-ftnlen f__typesize[] = { 0, 0, sizeof(shortint), sizeof(integer),
+- sizeof(real), sizeof(doublereal),
+- sizeof(complex), sizeof(doublecomplex),
+- sizeof(logical), sizeof(char),
+- 0, sizeof(integer1),
+- sizeof(logical1), sizeof(shortlogical),
+-#ifdef Allow_TYQUAD
+- sizeof(longint),
+-#endif
+- 0};
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/typesize.c
+echo libI77/uio.c 1>&2
+sed >libI77/uio.c <<'//GO.SYSIN DD libI77/uio.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-uiolen f__reclen;
+-
+- int
+-#ifdef KR_headers
+-do_us(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
+-#else
+-do_us(ftnint *number, char *ptr, ftnlen len)
+-#endif
+-{
+- if(f__reading)
+- {
+- f__recpos += (int)(*number * len);
+- if(f__recpos>f__reclen)
+- err(f__elist->cierr, 110, "do_us");
+- if (fread(ptr,(int)len,(int)(*number),f__cf) != *number)
+- err(f__elist->ciend, EOF, "do_us");
+- return(0);
+- }
+- else
+- {
+- f__reclen += *number * len;
+- (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
+- return(0);
+- }
+-}
+-#ifdef KR_headers
+-integer do_ud(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
+-#else
+-integer do_ud(ftnint *number, char *ptr, ftnlen len)
+-#endif
+-{
+- f__recpos += (int)(*number * len);
+- if(f__recpos > f__curunit->url && f__curunit->url!=1)
+- err(f__elist->cierr,110,"do_ud");
+- if(f__reading)
+- {
+-#ifdef Pad_UDread
+-#ifdef KR_headers
+- int i;
+-#else
+- size_t i;
+-#endif
+- if (!(i = fread(ptr,(int)len,(int)(*number),f__cf))
+- && !(f__recpos - *number*len))
+- err(f__elist->cierr,EOF,"do_ud")
+- if (i < *number)
+- memset(ptr + i*len, 0, (*number - i)*len);
+- return 0;
+-#else
+- if(fread(ptr,(int)len,(int)(*number),f__cf) != *number)
+- err(f__elist->cierr,EOF,"do_ud")
+- else return(0);
+-#endif
+- }
+- (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
+- return(0);
+-}
+-#ifdef KR_headers
+-integer do_uio(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
+-#else
+-integer do_uio(ftnint *number, char *ptr, ftnlen len)
+-#endif
+-{
+- if(f__sequential)
+- return(do_us(number,ptr,len));
+- else return(do_ud(number,ptr,len));
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/uio.c
+echo libI77/util.c 1>&2
+sed >libI77/util.c <<'//GO.SYSIN DD libI77/util.c' 's/^-//'
+-#include "sysdep1.h" /* here to get stat64 on some badly designed Linux systems */
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- VOID
+-#ifdef KR_headers
+-g_char(a,alen,b) char *a,*b; ftnlen alen;
+-#else
+-g_char(char *a, ftnlen alen, char *b)
+-#endif
+-{
+- char *x = a + alen, *y = b + alen;
+-
+- for(;; y--) {
+- if (x <= a) {
+- *b = 0;
+- return;
+- }
+- if (*--x != ' ')
+- break;
+- }
+- *y-- = 0;
+- do *y-- = *x;
+- while(x-- > a);
+- }
+-
+- VOID
+-#ifdef KR_headers
+-b_char(a,b,blen) char *a,*b; ftnlen blen;
+-#else
+-b_char(char *a, char *b, ftnlen blen)
+-#endif
+-{ int i;
+- for(i=0;i<blen && *a!=0;i++) *b++= *a++;
+- for(;i<blen;i++) *b++=' ';
+-}
+-#ifndef NON_UNIX_STDIO
+-#ifdef KR_headers
+-long f__inode(a, dev) char *a; int *dev;
+-#else
+-long f__inode(char *a, int *dev)
+-#endif
+-{ struct STAT_ST x;
+- if(STAT(a,&x)<0) return(-1);
+- *dev = x.st_dev;
+- return(x.st_ino);
+-}
+-#endif
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/util.c
+echo libI77/wref.c 1>&2
+sed >libI77/wref.c <<'//GO.SYSIN DD libI77/wref.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-
+-#ifndef KR_headers
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#include "string.h"
+-#endif
+-
+-#include "fmt.h"
+-#include "fp.h"
+-#ifndef VAX
+-#include "ctype.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#endif
+-
+- int
+-#ifdef KR_headers
+-wrt_E(p,w,d,e,len) ufloat *p; ftnlen len;
+-#else
+-wrt_E(ufloat *p, int w, int d, int e, ftnlen len)
+-#endif
+-{
+- char buf[FMAX+EXPMAXDIGS+4], *s, *se;
+- int d1, delta, e1, i, sign, signspace;
+- double dd;
+-#ifdef WANT_LEAD_0
+- int insert0 = 0;
+-#endif
+-#ifndef VAX
+- int e0 = e;
+-#endif
+-
+- if(e <= 0)
+- e = 2;
+- if(f__scale) {
+- if(f__scale >= d + 2 || f__scale <= -d)
+- goto nogood;
+- }
+- if(f__scale <= 0)
+- --d;
+- if (len == sizeof(real))
+- dd = p->pf;
+- else
+- dd = p->pd;
+- if (dd < 0.) {
+- signspace = sign = 1;
+- dd = -dd;
+- }
+- else {
+- sign = 0;
+- signspace = (int)f__cplus;
+-#ifndef VAX
+- if (!dd) {
+-#ifdef SIGNED_ZEROS
+- if (signbit_f2c(&dd))
+- signspace = sign = 1;
+-#endif
+- dd = 0.; /* avoid -0 */
+- }
+-#endif
+- }
+- delta = w - (2 /* for the . and the d adjustment above */
+- + 2 /* for the E+ */ + signspace + d + e);
+-#ifdef WANT_LEAD_0
+- if (f__scale <= 0 && delta > 0) {
+- delta--;
+- insert0 = 1;
+- }
+- else
+-#endif
+- if (delta < 0) {
+-nogood:
+- while(--w >= 0)
+- PUT('*');
+- return(0);
+- }
+- if (f__scale < 0)
+- d += f__scale;
+- if (d > FMAX) {
+- d1 = d - FMAX;
+- d = FMAX;
+- }
+- else
+- d1 = 0;
+- sprintf(buf,"%#.*E", d, dd);
+-#ifndef VAX
+- /* check for NaN, Infinity */
+- if (!isdigit(buf[0])) {
+- switch(buf[0]) {
+- case 'n':
+- case 'N':
+- signspace = 0; /* no sign for NaNs */
+- }
+- delta = w - strlen(buf) - signspace;
+- if (delta < 0)
+- goto nogood;
+- while(--delta >= 0)
+- PUT(' ');
+- if (signspace)
+- PUT(sign ? '-' : '+');
+- for(s = buf; *s; s++)
+- PUT(*s);
+- return 0;
+- }
+-#endif
+- se = buf + d + 3;
+-#ifdef GOOD_SPRINTF_EXPONENT /* When possible, exponent has 2 digits. */
+- if (f__scale != 1 && dd)
+- sprintf(se, "%+.2d", atoi(se) + 1 - f__scale);
+-#else
+- if (dd)
+- sprintf(se, "%+.2d", atoi(se) + 1 - f__scale);
+- else
+- strcpy(se, "+00");
+-#endif
+- s = ++se;
+- if (e < 2) {
+- if (*s != '0')
+- goto nogood;
+- }
+-#ifndef VAX
+- /* accommodate 3 significant digits in exponent */
+- if (s[2]) {
+-#ifdef Pedantic
+- if (!e0 && !s[3])
+- for(s -= 2, e1 = 2; s[0] = s[1]; s++);
+-
+- /* Pedantic gives the behavior that Fortran 77 specifies, */
+- /* i.e., requires that E be specified for exponent fields */
+- /* of more than 3 digits. With Pedantic undefined, we get */
+- /* the behavior that Cray displays -- you get a bigger */
+- /* exponent field if it fits. */
+-#else
+- if (!e0) {
+- for(s -= 2, e1 = 2; s[0] = s[1]; s++)
+-#ifdef CRAY
+- delta--;
+- if ((delta += 4) < 0)
+- goto nogood
+-#endif
+- ;
+- }
+-#endif
+- else if (e0 >= 0)
+- goto shift;
+- else
+- e1 = e;
+- }
+- else
+- shift:
+-#endif
+- for(s += 2, e1 = 2; *s; ++e1, ++s)
+- if (e1 >= e)
+- goto nogood;
+- while(--delta >= 0)
+- PUT(' ');
+- if (signspace)
+- PUT(sign ? '-' : '+');
+- s = buf;
+- i = f__scale;
+- if (f__scale <= 0) {
+-#ifdef WANT_LEAD_0
+- if (insert0)
+- PUT('0');
+-#endif
+- PUT('.');
+- for(; i < 0; ++i)
+- PUT('0');
+- PUT(*s);
+- s += 2;
+- }
+- else if (f__scale > 1) {
+- PUT(*s);
+- s += 2;
+- while(--i > 0)
+- PUT(*s++);
+- PUT('.');
+- }
+- if (d1) {
+- se -= 2;
+- while(s < se) PUT(*s++);
+- se += 2;
+- do PUT('0'); while(--d1 > 0);
+- }
+- while(s < se)
+- PUT(*s++);
+- if (e < 2)
+- PUT(s[1]);
+- else {
+- while(++e1 <= e)
+- PUT('0');
+- while(*s)
+- PUT(*s++);
+- }
+- return 0;
+- }
+-
+- int
+-#ifdef KR_headers
+-wrt_F(p,w,d,len) ufloat *p; ftnlen len;
+-#else
+-wrt_F(ufloat *p, int w, int d, ftnlen len)
+-#endif
+-{
+- int d1, sign, n;
+- double x;
+- char *b, buf[MAXINTDIGS+MAXFRACDIGS+4], *s;
+-
+- x= (len==sizeof(real)?p->pf:p->pd);
+- if (d < MAXFRACDIGS)
+- d1 = 0;
+- else {
+- d1 = d - MAXFRACDIGS;
+- d = MAXFRACDIGS;
+- }
+- if (x < 0.)
+- { x = -x; sign = 1; }
+- else {
+- sign = 0;
+-#ifndef VAX
+- if (!x) {
+-#ifdef SIGNED_ZEROS
+- if (signbit_f2c(&x))
+- sign = 2;
+-#endif
+- x = 0.;
+- }
+-#endif
+- }
+-
+- if (n = f__scale)
+- if (n > 0)
+- do x *= 10.; while(--n > 0);
+- else
+- do x *= 0.1; while(++n < 0);
+-
+-#ifdef USE_STRLEN
+- sprintf(b = buf, "%#.*f", d, x);
+- n = strlen(b) + d1;
+-#else
+- n = sprintf(b = buf, "%#.*f", d, x) + d1;
+-#endif
+-
+-#ifndef WANT_LEAD_0
+- if (buf[0] == '0' && d)
+- { ++b; --n; }
+-#endif
+- if (sign == 1) {
+- /* check for all zeros */
+- for(s = b;;) {
+- while(*s == '0') s++;
+- switch(*s) {
+- case '.':
+- s++; continue;
+- case 0:
+- sign = 0;
+- }
+- break;
+- }
+- }
+- if (sign || f__cplus)
+- ++n;
+- if (n > w) {
+-#ifdef WANT_LEAD_0
+- if (buf[0] == '0' && --n == w)
+- ++b;
+- else
+-#endif
+- {
+- while(--w >= 0)
+- PUT('*');
+- return 0;
+- }
+- }
+- for(w -= n; --w >= 0; )
+- PUT(' ');
+- if (sign)
+- PUT('-');
+- else if (f__cplus)
+- PUT('+');
+- while(n = *b++)
+- PUT(n);
+- while(--d1 >= 0)
+- PUT('0');
+- return 0;
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/wref.c
+echo libI77/wrtfmt.c 1>&2
+sed >libI77/wrtfmt.c <<'//GO.SYSIN DD libI77/wrtfmt.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-extern icilist *f__svic;
+-extern char *f__icptr;
+-
+- static int
+-mv_cur(Void) /* shouldn't use fseek because it insists on calling fflush */
+- /* instead we know too much about stdio */
+-{
+- int cursor = f__cursor;
+- f__cursor = 0;
+- if(f__external == 0) {
+- if(cursor < 0) {
+- if(f__hiwater < f__recpos)
+- f__hiwater = f__recpos;
+- f__recpos += cursor;
+- f__icptr += cursor;
+- if(f__recpos < 0)
+- err(f__elist->cierr, 110, "left off");
+- }
+- else if(cursor > 0) {
+- if(f__recpos + cursor >= f__svic->icirlen)
+- err(f__elist->cierr, 110, "recend");
+- if(f__hiwater <= f__recpos)
+- for(; cursor > 0; cursor--)
+- (*f__putn)(' ');
+- else if(f__hiwater <= f__recpos + cursor) {
+- cursor -= f__hiwater - f__recpos;
+- f__icptr += f__hiwater - f__recpos;
+- f__recpos = f__hiwater;
+- for(; cursor > 0; cursor--)
+- (*f__putn)(' ');
+- }
+- else {
+- f__icptr += cursor;
+- f__recpos += cursor;
+- }
+- }
+- return(0);
+- }
+- if (cursor > 0) {
+- if(f__hiwater <= f__recpos)
+- for(;cursor>0;cursor--) (*f__putn)(' ');
+- else if(f__hiwater <= f__recpos + cursor) {
+- cursor -= f__hiwater - f__recpos;
+- f__recpos = f__hiwater;
+- for(; cursor > 0; cursor--)
+- (*f__putn)(' ');
+- }
+- else {
+- f__recpos += cursor;
+- }
+- }
+- else if (cursor < 0)
+- {
+- if(cursor + f__recpos < 0)
+- err(f__elist->cierr,110,"left off");
+- if(f__hiwater < f__recpos)
+- f__hiwater = f__recpos;
+- f__recpos += cursor;
+- }
+- return(0);
+-}
+-
+- static int
+-#ifdef KR_headers
+-wrt_Z(n,w,minlen,len) Uint *n; int w, minlen; ftnlen len;
+-#else
+-wrt_Z(Uint *n, int w, int minlen, ftnlen len)
+-#endif
+-{
+- register char *s, *se;
+- register int i, w1;
+- static int one = 1;
+- static char hex[] = "0123456789ABCDEF";
+- s = (char *)n;
+- --len;
+- if (*(char *)&one) {
+- /* little endian */
+- se = s;
+- s += len;
+- i = -1;
+- }
+- else {
+- se = s + len;
+- i = 1;
+- }
+- for(;; s += i)
+- if (s == se || *s)
+- break;
+- w1 = (i*(se-s) << 1) + 1;
+- if (*s & 0xf0)
+- w1++;
+- if (w1 > w)
+- for(i = 0; i < w; i++)
+- (*f__putn)('*');
+- else {
+- if ((minlen -= w1) > 0)
+- w1 += minlen;
+- while(--w >= w1)
+- (*f__putn)(' ');
+- while(--minlen >= 0)
+- (*f__putn)('0');
+- if (!(*s & 0xf0)) {
+- (*f__putn)(hex[*s & 0xf]);
+- if (s == se)
+- return 0;
+- s += i;
+- }
+- for(;; s += i) {
+- (*f__putn)(hex[*s >> 4 & 0xf]);
+- (*f__putn)(hex[*s & 0xf]);
+- if (s == se)
+- break;
+- }
+- }
+- return 0;
+- }
+-
+- static int
+-#ifdef KR_headers
+-wrt_I(n,w,len, base) Uint *n; ftnlen len; register int base;
+-#else
+-wrt_I(Uint *n, int w, ftnlen len, register int base)
+-#endif
+-{ int ndigit,sign,spare,i;
+- longint x;
+- char *ans;
+- if(len==sizeof(integer)) x=n->il;
+- else if(len == sizeof(char)) x = n->ic;
+-#ifdef Allow_TYQUAD
+- else if (len == sizeof(longint)) x = n->ili;
+-#endif
+- else x=n->is;
+- ans=f__icvt(x,&ndigit,&sign, base);
+- spare=w-ndigit;
+- if(sign || f__cplus) spare--;
+- if(spare<0)
+- for(i=0;i<w;i++) (*f__putn)('*');
+- else
+- { for(i=0;i<spare;i++) (*f__putn)(' ');
+- if(sign) (*f__putn)('-');
+- else if(f__cplus) (*f__putn)('+');
+- for(i=0;i<ndigit;i++) (*f__putn)(*ans++);
+- }
+- return(0);
+-}
+- static int
+-#ifdef KR_headers
+-wrt_IM(n,w,m,len,base) Uint *n; ftnlen len; int base;
+-#else
+-wrt_IM(Uint *n, int w, int m, ftnlen len, int base)
+-#endif
+-{ int ndigit,sign,spare,i,xsign;
+- longint x;
+- char *ans;
+- if(sizeof(integer)==len) x=n->il;
+- else if(len == sizeof(char)) x = n->ic;
+-#ifdef Allow_TYQUAD
+- else if (len == sizeof(longint)) x = n->ili;
+-#endif
+- else x=n->is;
+- ans=f__icvt(x,&ndigit,&sign, base);
+- if(sign || f__cplus) xsign=1;
+- else xsign=0;
+- if(ndigit+xsign>w || m+xsign>w)
+- { for(i=0;i<w;i++) (*f__putn)('*');
+- return(0);
+- }
+- if(x==0 && m==0)
+- { for(i=0;i<w;i++) (*f__putn)(' ');
+- return(0);
+- }
+- if(ndigit>=m)
+- spare=w-ndigit-xsign;
+- else
+- spare=w-m-xsign;
+- for(i=0;i<spare;i++) (*f__putn)(' ');
+- if(sign) (*f__putn)('-');
+- else if(f__cplus) (*f__putn)('+');
+- for(i=0;i<m-ndigit;i++) (*f__putn)('0');
+- for(i=0;i<ndigit;i++) (*f__putn)(*ans++);
+- return(0);
+-}
+- static int
+-#ifdef KR_headers
+-wrt_AP(s) char *s;
+-#else
+-wrt_AP(char *s)
+-#endif
+-{ char quote;
+- int i;
+-
+- if(f__cursor && (i = mv_cur()))
+- return i;
+- quote = *s++;
+- for(;*s;s++)
+- { if(*s!=quote) (*f__putn)(*s);
+- else if(*++s==quote) (*f__putn)(*s);
+- else return(1);
+- }
+- return(1);
+-}
+- static int
+-#ifdef KR_headers
+-wrt_H(a,s) char *s;
+-#else
+-wrt_H(int a, char *s)
+-#endif
+-{
+- int i;
+-
+- if(f__cursor && (i = mv_cur()))
+- return i;
+- while(a--) (*f__putn)(*s++);
+- return(1);
+-}
+-
+- int
+-#ifdef KR_headers
+-wrt_L(n,len, sz) Uint *n; ftnlen sz;
+-#else
+-wrt_L(Uint *n, int len, ftnlen sz)
+-#endif
+-{ int i;
+- long x;
+- if(sizeof(long)==sz) x=n->il;
+- else if(sz == sizeof(char)) x = n->ic;
+- else x=n->is;
+- for(i=0;i<len-1;i++)
+- (*f__putn)(' ');
+- if(x) (*f__putn)('T');
+- else (*f__putn)('F');
+- return(0);
+-}
+- static int
+-#ifdef KR_headers
+-wrt_A(p,len) char *p; ftnlen len;
+-#else
+-wrt_A(char *p, ftnlen len)
+-#endif
+-{
+- while(len-- > 0) (*f__putn)(*p++);
+- return(0);
+-}
+- static int
+-#ifdef KR_headers
+-wrt_AW(p,w,len) char * p; ftnlen len;
+-#else
+-wrt_AW(char * p, int w, ftnlen len)
+-#endif
+-{
+- while(w>len)
+- { w--;
+- (*f__putn)(' ');
+- }
+- while(w-- > 0)
+- (*f__putn)(*p++);
+- return(0);
+-}
+-
+- static int
+-#ifdef KR_headers
+-wrt_G(p,w,d,e,len) ufloat *p; ftnlen len;
+-#else
+-wrt_G(ufloat *p, int w, int d, int e, ftnlen len)
+-#endif
+-{ double up = 1,x;
+- int i=0,oldscale,n,j;
+- x = len==sizeof(real)?p->pf:p->pd;
+- if(x < 0 ) x = -x;
+- if(x<.1) {
+- if (x != 0.)
+- return(wrt_E(p,w,d,e,len));
+- i = 1;
+- goto have_i;
+- }
+- for(;i<=d;i++,up*=10)
+- { if(x>=up) continue;
+- have_i:
+- oldscale = f__scale;
+- f__scale = 0;
+- if(e==0) n=4;
+- else n=e+2;
+- i=wrt_F(p,w-n,d-i,len);
+- for(j=0;j<n;j++) (*f__putn)(' ');
+- f__scale=oldscale;
+- return(i);
+- }
+- return(wrt_E(p,w,d,e,len));
+-}
+-
+- int
+-#ifdef KR_headers
+-w_ed(p,ptr,len) struct syl *p; char *ptr; ftnlen len;
+-#else
+-w_ed(struct syl *p, char *ptr, ftnlen len)
+-#endif
+-{
+- int i;
+-
+- if(f__cursor && (i = mv_cur()))
+- return i;
+- switch(p->op)
+- {
+- default:
+- fprintf(stderr,"w_ed, unexpected code: %d\n", p->op);
+- sig_die(f__fmtbuf, 1);
+- case I: return(wrt_I((Uint *)ptr,p->p1,len, 10));
+- case IM:
+- return(wrt_IM((Uint *)ptr,p->p1,p->p2.i[0],len,10));
+-
+- /* O and OM don't work right for character, double, complex, */
+- /* or doublecomplex, and they differ from Fortran 90 in */
+- /* showing a minus sign for negative values. */
+-
+- case O: return(wrt_I((Uint *)ptr, p->p1, len, 8));
+- case OM:
+- return(wrt_IM((Uint *)ptr,p->p1,p->p2.i[0],len,8));
+- case L: return(wrt_L((Uint *)ptr,p->p1, len));
+- case A: return(wrt_A(ptr,len));
+- case AW:
+- return(wrt_AW(ptr,p->p1,len));
+- case D:
+- case E:
+- case EE:
+- return(wrt_E((ufloat *)ptr,p->p1,p->p2.i[0],p->p2.i[1],len));
+- case G:
+- case GE:
+- return(wrt_G((ufloat *)ptr,p->p1,p->p2.i[0],p->p2.i[1],len));
+- case F: return(wrt_F((ufloat *)ptr,p->p1,p->p2.i[0],len));
+-
+- /* Z and ZM assume 8-bit bytes. */
+-
+- case Z: return(wrt_Z((Uint *)ptr,p->p1,0,len));
+- case ZM:
+- return(wrt_Z((Uint *)ptr,p->p1,p->p2.i[0],len));
+- }
+-}
+-
+- int
+-#ifdef KR_headers
+-w_ned(p) struct syl *p;
+-#else
+-w_ned(struct syl *p)
+-#endif
+-{
+- switch(p->op)
+- {
+- default: fprintf(stderr,"w_ned, unexpected code: %d\n", p->op);
+- sig_die(f__fmtbuf, 1);
+- case SLASH:
+- return((*f__donewrec)());
+- case T: f__cursor = p->p1-f__recpos - 1;
+- return(1);
+- case TL: f__cursor -= p->p1;
+- if(f__cursor < -f__recpos) /* TL1000, 1X */
+- f__cursor = -f__recpos;
+- return(1);
+- case TR:
+- case X:
+- f__cursor += p->p1;
+- return(1);
+- case APOS:
+- return(wrt_AP(p->p2.s));
+- case H:
+- return(wrt_H(p->p1,p->p2.s));
+- }
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/wrtfmt.c
+echo libI77/wsfe.c 1>&2
+sed >libI77/wsfe.c <<'//GO.SYSIN DD libI77/wsfe.c' 's/^-//'
+-/*write sequential formatted external*/
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- int
+-x_wSL(Void)
+-{
+- int n = f__putbuf('\n');
+- f__hiwater = f__recpos = f__cursor = 0;
+- return(n == 0);
+-}
+-
+- static int
+-xw_end(Void)
+-{
+- int n;
+-
+- if(f__nonl) {
+- f__putbuf(n = 0);
+- fflush(f__cf);
+- }
+- else
+- n = f__putbuf('\n');
+- f__hiwater = f__recpos = f__cursor = 0;
+- return n;
+-}
+-
+- static int
+-xw_rev(Void)
+-{
+- int n = 0;
+- if(f__workdone) {
+- n = f__putbuf('\n');
+- f__workdone = 0;
+- }
+- f__hiwater = f__recpos = f__cursor = 0;
+- return n;
+-}
+-
+-#ifdef KR_headers
+-integer s_wsfe(a) cilist *a; /*start*/
+-#else
+-integer s_wsfe(cilist *a) /*start*/
+-#endif
+-{ int n;
+- if(!f__init) f_init();
+- f__reading=0;
+- f__sequential=1;
+- f__formatted=1;
+- f__external=1;
+- if(n=c_sfe(a)) return(n);
+- f__elist=a;
+- f__hiwater = f__cursor=f__recpos=0;
+- f__nonl = 0;
+- f__scale=0;
+- f__fmtbuf=a->cifmt;
+- f__cf=f__curunit->ufd;
+- if(pars_f(f__fmtbuf)<0) err(a->cierr,100,"startio");
+- f__putn= x_putc;
+- f__doed= w_ed;
+- f__doned= w_ned;
+- f__doend=xw_end;
+- f__dorevert=xw_rev;
+- f__donewrec=x_wSL;
+- fmt_bg();
+- f__cplus=0;
+- f__cblank=f__curunit->ublnk;
+- if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
+- err(a->cierr,errno,"write start");
+- return(0);
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/wsfe.c
+echo libI77/wsle.c 1>&2
+sed >libI77/wsle.c <<'//GO.SYSIN DD libI77/wsle.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#include "lio.h"
+-#include "string.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#ifdef KR_headers
+-integer s_wsle(a) cilist *a;
+-#else
+-integer s_wsle(cilist *a)
+-#endif
+-{
+- int n;
+- if(n=c_le(a)) return(n);
+- f__reading=0;
+- f__external=1;
+- f__formatted=1;
+- f__putn = x_putc;
+- f__lioproc = l_write;
+- L_len = LINE;
+- f__donewrec = x_wSL;
+- if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
+- err(a->cierr, errno, "list output start");
+- return(0);
+- }
+-
+-integer e_wsle(Void)
+-{
+- int n = f__putbuf('\n');
+- f__recpos=0;
+-#ifdef ALWAYS_FLUSH
+- if (!n && fflush(f__cf))
+- err(f__elist->cierr, errno, "write end");
+-#endif
+- return(n);
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/wsle.c
+echo libI77/wsne.c 1>&2
+sed >libI77/wsne.c <<'//GO.SYSIN DD libI77/wsne.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "lio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- integer
+-#ifdef KR_headers
+-s_wsne(a) cilist *a;
+-#else
+-s_wsne(cilist *a)
+-#endif
+-{
+- int n;
+-
+- if(n=c_le(a))
+- return(n);
+- f__reading=0;
+- f__external=1;
+- f__formatted=1;
+- f__putn = x_putc;
+- L_len = LINE;
+- f__donewrec = x_wSL;
+- if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
+- err(a->cierr, errno, "namelist output start");
+- x_wsne(a);
+- return e_wsle();
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/wsne.c
+echo libI77/xwsne.c 1>&2
+sed >libI77/xwsne.c <<'//GO.SYSIN DD libI77/xwsne.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "lio.h"
+-#include "fmt.h"
+-
+-extern int f__Aquote;
+-
+- static VOID
+-nl_donewrec(Void)
+-{
+- (*f__donewrec)();
+- PUT(' ');
+- }
+-
+-#ifdef KR_headers
+-x_wsne(a) cilist *a;
+-#else
+-#include "string.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- VOID
+-x_wsne(cilist *a)
+-#endif
+-{
+- Namelist *nl;
+- char *s;
+- Vardesc *v, **vd, **vde;
+- ftnint number, type;
+- ftnlen *dims;
+- ftnlen size;
+- extern ftnlen f__typesize[];
+-
+- nl = (Namelist *)a->cifmt;
+- PUT('&');
+- for(s = nl->name; *s; s++)
+- PUT(*s);
+- PUT(' ');
+- f__Aquote = 1;
+- vd = nl->vars;
+- vde = vd + nl->nvars;
+- while(vd < vde) {
+- v = *vd++;
+- s = v->name;
+-#ifdef No_Extra_Namelist_Newlines
+- if (f__recpos+strlen(s)+2 >= L_len)
+-#endif
+- nl_donewrec();
+- while(*s)
+- PUT(*s++);
+- PUT(' ');
+- PUT('=');
+- number = (dims = v->dims) ? dims[1] : 1;
+- type = v->type;
+- if (type < 0) {
+- size = -type;
+- type = TYCHAR;
+- }
+- else
+- size = f__typesize[type];
+- l_write(&number, v->addr, size, type);
+- if (vd < vde) {
+- if (f__recpos+2 >= L_len)
+- nl_donewrec();
+- PUT(',');
+- PUT(' ');
+- }
+- else if (f__recpos+1 >= L_len)
+- nl_donewrec();
+- }
+- f__Aquote = 0;
+- PUT('/');
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/xwsne.c
+echo libI77/Notice 1>&2
+sed >libI77/Notice <<'//GO.SYSIN DD libI77/Notice' 's/^-//'
+-/****************************************************************
+-Copyright 1990 - 1997 by AT&T, Lucent Technologies and Bellcore.
+-
+-Permission to use, copy, modify, and distribute this software
+-and its documentation for any purpose and without fee is hereby
+-granted, provided that the above copyright notice appear in all
+-copies and that both that the copyright notice and this
+-permission notice and warranty disclaimer appear in supporting
+-documentation, and that the names of AT&T, Bell Laboratories,
+-Lucent or Bellcore or any of their entities not be used in
+-advertising or publicity pertaining to distribution of the
+-software without specific, written prior permission.
+-
+-AT&T, Lucent and Bellcore disclaim all warranties with regard to
+-this software, including all implied warranties of
+-merchantability and fitness. In no event shall AT&T, Lucent or
+-Bellcore be liable for any special, indirect or consequential
+-damages or any damages whatsoever resulting from loss of use,
+-data or profits, whether in an action of contract, negligence or
+-other tortious action, arising out of or in connection with the
+-use or performance of this software.
+-****************************************************************/
+-
+//GO.SYSIN DD libI77/Notice
+echo libI77/README 1>&2
+sed >libI77/README <<'//GO.SYSIN DD libI77/README' 's/^-//'
+-If your compiler does not recognize ANSI C headers,
+-compile with KR_headers defined: either add -DKR_headers
+-to the definition of CFLAGS in the makefile, or insert
+-
+-#define KR_headers
+-
+-at the top of f2c.h and fmtlib.c .
+-
+-
+-If you have a really ancient K&R C compiler that does not understand
+-void, add -Dvoid=int to the definition of CFLAGS in the makefile.
+-
+-If you use a C++ compiler, first create a local f2c.h by appending
+-f2ch.add to the usual f2c.h, e.g., by issuing the command
+- make f2c.h
+-which assumes f2c.h is installed in /usr/include .
+-
+-If your system lacks /usr/include/fcntl.h , then you
+-should simply create an empty fcntl.h in this directory.
+-If your compiler then complains about creat and open not
+-having a prototype, compile with OPEN_DECL defined.
+-On many systems, open and creat are declared in fcntl.h .
+-
+-If your system has /usr/include/fcntl.h, you may need to add
+--D_POSIX_SOURCE to the makefile's definition of CFLAGS.
+-
+-If your system's sprintf does not work the way ANSI C
+-specifies -- specifically, if it does not return the
+-number of characters transmitted -- then insert the line
+-
+-#define USE_STRLEN
+-
+-at the end of fmt.h . This is necessary with
+-at least some versions of Sun and DEC software.
+-In particular, if you get a warning about an improper
+-pointer/integer combination in compiling wref.c, then
+-you need to compile with -DUSE_STRLEN .
+-
+-If your system's fopen does not like the ANSI binary
+-reading and writing modes "rb" and "wb", then you should
+-compile open.c with NON_ANSI_RW_MODES #defined.
+-
+-If you get error messages about references to cf->_ptr
+-and cf->_base when compiling wrtfmt.c and wsfe.c or to
+-stderr->_flag when compiling err.c, then insert the line
+-
+-#define NON_UNIX_STDIO
+-
+-at the beginning of fio.h, and recompile everything (or
+-at least those modules that contain NON_UNIX_STDIO).
+-
+-Unformatted sequential records consist of a length of record
+-contents, the record contents themselves, and the length of
+-record contents again (for backspace). Prior to 17 Oct. 1991,
+-the length was of type int; now it is of type long, but you
+-can change it back to int by inserting
+-
+-#define UIOLEN_int
+-
+-at the beginning of fio.h. This affects only sue.c and uio.c .
+-
+-On VAX, Cray, or Research Tenth-Edition Unix systems, you may
+-need to add -DVAX, -DCRAY, or -DV10 (respectively) to CFLAGS
+-to make fp.h work correctly. Alternatively, you may need to
+-edit fp.h to suit your machine.
+-
+-You may need to supply the following non-ANSI routines:
+-
+- fstat(int fileds, struct stat *buf) is similar
+-to stat(char *name, struct stat *buf), except that
+-the first argument, fileds, is the file descriptor
+-returned by open rather than the name of the file.
+-fstat is used in the system-dependent routine
+-canseek (in the libI77 source file err.c), which
+-is supposed to return 1 if it's possible to issue
+-seeks on the file in question, 0 if it's not; you may
+-need to suitably modify err.c . On non-UNIX systems,
+-you can avoid references to fstat and stat by compiling
+-with NON_UNIX_STDIO defined; in that case, you may need
+-to supply access(char *Name,0), which is supposed to
+-return 0 if file Name exists, nonzero otherwise.
+-
+- char * mktemp(char *buf) is supposed to replace the
+-6 trailing X's in buf with a unique number and then
+-return buf. The idea is to get a unique name for
+-a temporary file.
+-
+-On non-UNIX systems, you may need to change a few other,
+-e.g.: the form of name computed by mktemp() in endfile.c and
+-open.c; the use of the open(), close(), and creat() system
+-calls in endfile.c, err.c, open.c; and the modes in calls on
+-fopen() and fdopen() (and perhaps the use of fdopen() itself
+--- it's supposed to return a FILE* corresponding to a given
+-an integer file descriptor) in err.c and open.c (component ufmt
+-of struct unit is 1 for formatted I/O -- text mode on some systems
+--- and 0 for unformatted I/O -- binary mode on some systems).
+-Compiling with -DNON_UNIX_STDIO omits all references to creat()
+-and almost all references to open() and close(), the exception
+-being in the function f__isdev() (in open.c).
+-
+-For MS-DOS, compile all of libI77 with -DMSDOS (which implies
+--DNON_UNIX_STDIO). You may need to make other compiler-dependent
+-adjustments; for example, for Turbo C++ you need to adjust the mktemp
+-invocations and to #undef ungetc in lread.c and rsne.c .
+-
+-If you want to be able to load against libI77 but not libF77,
+-then you will need to add sig_die.o (from libF77) to libI77.
+-
+-If you wish to use translated Fortran that has funny notions
+-of record length for direct unformatted I/O (i.e., that assumes
+-RECL= values in OPEN statements are not bytes but rather counts
+-of some other units -- e.g., 4-character words for VMS), then you
+-should insert an appropriate #define for url_Adjust at the
+-beginning of open.c . For VMS Fortran, for example,
+-#define url_Adjust(x) x *= 4
+-would suffice.
+-
+-To check for transmission errors, issue the command
+- make check
+-This assumes you have the xsum program whose source, xsum.c,
+-is distributed as part of "all from f2c/src". If you do not
+-have xsum, you can obtain xsum.c by sending the following E-mail
+-message to netlib@netlib.bell-labs.com
+- send xsum.c from f2c/src
+-
+-The makefile assumes you have installed f2c.h in a standard
+-place (and does not cause recompilation when f2c.h is changed);
+-f2c.h comes with "all from f2c" (the source for f2c) and is
+-available separately ("f2c.h from f2c").
+-
+-By default, Fortran I/O units 5, 6, and 0 are pre-connected to
+-stdin, stdout, and stderr, respectively. You can change this
+-behavior by changing f_init() in err.c to suit your needs.
+-Note that f2c assumes READ(*... means READ(5... and WRITE(*...
+-means WRITE(6... . Moreover, an OPEN(n,... statement that does
+-not specify a file name (and does not specify STATUS='SCRATCH')
+-assumes FILE='fort.n' . You can change this by editing open.c
+-and endfile.c suitably.
+-
+-Unless you adjust the "#define MXUNIT" line in fio.h, Fortran units
+-0, 1, ..., 99 are available, i.e., the highest allowed unit number
+-is MXUNIT - 1.
+-
+-Lines protected from compilation by #ifdef Allow_TYQUAD
+-are for a possible extension to 64-bit integers in which
+-integer = int = 32 bits and longint = long = 64 bits.
+-
+-Extensions (Feb. 1993) to NAMELIST processing:
+- 1. Reading a ? instead of &name (the start of a namelist) causes
+-the namelist being sought to be written to stdout (unit 6);
+-to omit this feature, compile rsne.c with -DNo_Namelist_Questions.
+- 2. Reading the wrong namelist name now leads to an error message
+-and an attempt to skip input until the right namelist name is found;
+-to omit this feature, compile rsne.c with -DNo_Bad_Namelist_Skip.
+- 3. Namelist writes now insert newlines before each variable; to omit
+-this feature, compile xwsne.c with -DNo_Extra_Namelist_Newlines.
+- 4. (Sept. 1995) When looking for the &name that starts namelist
+-input, lines whose first non-blank character is something other
+-than &, $, or ? are treated as comment lines and ignored, unless
+-rsne.c is compiled with -DNo_Namelist_Comments.
+-
+-Nonstandard extension (Feb. 1993) to open: for sequential files,
+-ACCESS='APPEND' (or access='anything else starting with "A" or "a"')
+-causes the file to be positioned at end-of-file, so a write will
+-append to the file.
+-
+-Some buggy Fortran programs use unformatted direct I/O to write
+-an incomplete record and later read more from that record than
+-they have written. For records other than the last, the unwritten
+-portion of the record reads as binary zeros. The last record is
+-a special case: attempting to read more from it than was written
+-gives end-of-file -- which may help one find a bug. Some other
+-Fortran I/O libraries treat the last record no differently than
+-others and thus give no help in finding the bug of reading more
+-than was written. If you wish to have this behavior, compile
+-uio.c with -DPad_UDread .
+-
+-If you want to be able to catch write failures (e.g., due to a
+-disk being full) with an ERR= specifier, compile dfe.c, due.c,
+-sfe.c, sue.c, and wsle.c with -DALWAYS_FLUSH. This will lead to
+-slower execution and more I/O, but should make ERR= work as
+-expected, provided fflush returns an error return when its
+-physical write fails.
+-
+-Carriage controls are meant to be interpreted by the UNIX col
+-program (or a similar program). Sometimes it's convenient to use
+-only ' ' as the carriage control character (normal single spacing).
+-If you compile lwrite.c and wsfe.c with -DOMIT_BLANK_CC, formatted
+-external output lines will have an initial ' ' quietly omitted,
+-making use of the col program unnecessary with output that only
+-has ' ' for carriage control.
+-
+-The Fortran 77 Standard leaves it up to the implementation whether
+-formatted writes of floating-point numbers of absolute value < 1 have
+-a zero before the decimal point. By default, libI77 omits such
+-superfluous zeros, but you can cause them to appear by compiling
+-lwrite.c, wref.c, and wrtfmt.c with -DWANT_LEAD_0 .
+-
+-If your system lacks a ranlib command, you don't need it.
+-Either comment out the makefile's ranlib invocation, or install
+-a harmless "ranlib" command somewhere in your PATH, such as the
+-one-line shell script
+-
+- exit 0
+-
+-or (on some systems)
+-
+- exec /usr/bin/ar lts $1 >/dev/null
+-
+-Most of the routines in libI77 are support routines for Fortran
+-I/O. There are a few exceptions, summarized below -- I/O related
+-functions and subroutines that appear to your program as ordinary
+-external Fortran routines.
+-
+-1. CALL FLUSH flushes all buffers.
+-
+-2. FTELL(i) is an INTEGER function that returns the current
+- offset of Fortran unit i (or -1 if unit i is not open).
+-
+-3. CALL FSEEK(i, offset, whence, *errlab) attemps to move
+- Fortran unit i to the specified offset: absolute offset
+- if whence = 0; relative to the current offset if whence = 1;
+- relative to the end of the file if whence = 2. It branches
+- to label errlab if unit i is not open or if the call
+- otherwise fails.
+-
+-Nowadays most Unix and Linux systems have function
+- int ftruncate(int fildes, off_t len);
+-defined in system header file unistd.h that adjusts the length of file
+-descriptor fildes to length len. Unless endfile.c is compiled with
+--DNO_TRUNCATE, endfile.c #includes "unistd.h" and calls ftruncate() if
+-necessary to shorten files. If your system lacks ftruncate(), compile
+-endfile.c with -DNO_TRUNCATE to make endfile.c use the older and more
+-portable scheme of shortening a file by copying to a temporary file
+-and back again.
+//GO.SYSIN DD libI77/README
+echo libI77/backspace.c 1>&2
+sed >libI77/backspace.c <<'//GO.SYSIN DD libI77/backspace.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#ifdef KR_headers
+-integer f_back(a) alist *a;
+-#else
+-integer f_back(alist *a)
+-#endif
+-{ unit *b;
+- OFF_T v, w, x, y, z;
+- uiolen n;
+- FILE *f;
+-
+- f__curunit = b = &f__units[a->aunit]; /* curunit for error messages */
+- if(a->aunit >= MXUNIT || a->aunit < 0)
+- err(a->aerr,101,"backspace")
+- if(b->useek==0) err(a->aerr,106,"backspace")
+- if(b->ufd == NULL) {
+- fk_open(1, 1, a->aunit);
+- return(0);
+- }
+- if(b->uend==1)
+- { b->uend=0;
+- return(0);
+- }
+- if(b->uwrt) {
+- t_runc(a);
+- if (f__nowreading(b))
+- err(a->aerr,errno,"backspace")
+- }
+- f = b->ufd; /* may have changed in t_runc() */
+- if(b->url>0)
+- {
+- x=FTELL(f);
+- y = x % b->url;
+- if(y == 0) x--;
+- x /= b->url;
+- x *= b->url;
+- (void) FSEEK(f,x,SEEK_SET);
+- return(0);
+- }
+-
+- if(b->ufmt==0)
+- { FSEEK(f,-(OFF_T)sizeof(uiolen),SEEK_CUR);
+- fread((char *)&n,sizeof(uiolen),1,f);
+- FSEEK(f,-(OFF_T)n-2*sizeof(uiolen),SEEK_CUR);
+- return(0);
+- }
+- w = x = FTELL(f);
+- z = 0;
+- loop:
+- while(x) {
+- x -= x < 64 ? x : 64;
+- FSEEK(f,x,SEEK_SET);
+- for(y = x; y < w; y++) {
+- if (getc(f) != '\n')
+- continue;
+- v = FTELL(f);
+- if (v == w) {
+- if (z)
+- goto break2;
+- goto loop;
+- }
+- z = v;
+- }
+- err(a->aerr,(EOF),"backspace")
+- }
+- break2:
+- FSEEK(f, z, SEEK_SET);
+- return 0;
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/backspace.c
+echo libI77/close.c 1>&2
+sed >libI77/close.c <<'//GO.SYSIN DD libI77/close.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef KR_headers
+-integer f_clos(a) cllist *a;
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#ifdef NON_UNIX_STDIO
+-#ifndef unlink
+-#define unlink remove
+-#endif
+-#else
+-#ifdef MSDOS
+-#include "io.h"
+-#else
+-#ifdef __cplusplus
+-extern "C" int unlink(const char*);
+-#else
+-extern int unlink(const char*);
+-#endif
+-#endif
+-#endif
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-integer f_clos(cllist *a)
+-#endif
+-{ unit *b;
+-
+- if(a->cunit >= MXUNIT) return(0);
+- b= &f__units[a->cunit];
+- if(b->ufd==NULL)
+- goto done;
+- if (b->uscrtch == 1)
+- goto Delete;
+- if (!a->csta)
+- goto Keep;
+- switch(*a->csta) {
+- default:
+- Keep:
+- case 'k':
+- case 'K':
+- if(b->uwrt == 1)
+- t_runc((alist *)a);
+- if(b->ufnm) {
+- fclose(b->ufd);
+- free(b->ufnm);
+- }
+- break;
+- case 'd':
+- case 'D':
+- Delete:
+- fclose(b->ufd);
+- if(b->ufnm) {
+- unlink(b->ufnm); /*SYSDEP*/
+- free(b->ufnm);
+- }
+- }
+- b->ufd=NULL;
+- done:
+- b->uend=0;
+- b->ufnm=NULL;
+- return(0);
+- }
+- void
+-#ifdef KR_headers
+-f_exit()
+-#else
+-f_exit(void)
+-#endif
+-{ int i;
+- static cllist xx;
+- if (!xx.cerr) {
+- xx.cerr=1;
+- xx.csta=NULL;
+- for(i=0;i<MXUNIT;i++)
+- {
+- xx.cunit=i;
+- (void) f_clos(&xx);
+- }
+- }
+-}
+- int
+-#ifdef KR_headers
+-flush_()
+-#else
+-flush_(void)
+-#endif
+-{ int i;
+- for(i=0;i<MXUNIT;i++)
+- if(f__units[i].ufd != NULL && f__units[i].uwrt)
+- fflush(f__units[i].ufd);
+-return 0;
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/close.c
+echo libI77/dfe.c 1>&2
+sed >libI77/dfe.c <<'//GO.SYSIN DD libI77/dfe.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- int
+-y_rsk(Void)
+-{
+- if(f__curunit->uend || f__curunit->url <= f__recpos
+- || f__curunit->url == 1) return 0;
+- do {
+- getc(f__cf);
+- } while(++f__recpos < f__curunit->url);
+- return 0;
+-}
+-
+- int
+-y_getc(Void)
+-{
+- int ch;
+- if(f__curunit->uend) return(-1);
+- if((ch=getc(f__cf))!=EOF)
+- {
+- f__recpos++;
+- if(f__curunit->url>=f__recpos ||
+- f__curunit->url==1)
+- return(ch);
+- else return(' ');
+- }
+- if(feof(f__cf))
+- {
+- f__curunit->uend=1;
+- errno=0;
+- return(-1);
+- }
+- err(f__elist->cierr,errno,"readingd");
+-}
+-
+- static int
+-y_rev(Void)
+-{
+- if (f__recpos < f__hiwater)
+- f__recpos = f__hiwater;
+- if (f__curunit->url > 1)
+- while(f__recpos < f__curunit->url)
+- (*f__putn)(' ');
+- if (f__recpos)
+- f__putbuf(0);
+- f__recpos = 0;
+- return(0);
+-}
+-
+- static int
+-y_err(Void)
+-{
+- err(f__elist->cierr, 110, "dfe");
+-}
+-
+- static int
+-y_newrec(Void)
+-{
+- y_rev();
+- f__hiwater = f__cursor = 0;
+- return(1);
+-}
+-
+- int
+-#ifdef KR_headers
+-c_dfe(a) cilist *a;
+-#else
+-c_dfe(cilist *a)
+-#endif
+-{
+- f__sequential=0;
+- f__formatted=f__external=1;
+- f__elist=a;
+- f__cursor=f__scale=f__recpos=0;
+- f__curunit = &f__units[a->ciunit];
+- if(a->ciunit>MXUNIT || a->ciunit<0)
+- err(a->cierr,101,"startchk");
+- if(f__curunit->ufd==NULL && fk_open(DIR,FMT,a->ciunit))
+- err(a->cierr,104,"dfe");
+- f__cf=f__curunit->ufd;
+- if(!f__curunit->ufmt) err(a->cierr,102,"dfe")
+- if(!f__curunit->useek) err(a->cierr,104,"dfe")
+- f__fmtbuf=a->cifmt;
+- if(a->cirec <= 0)
+- err(a->cierr,130,"dfe")
+- FSEEK(f__cf,(OFF_T)f__curunit->url * (a->cirec-1),SEEK_SET);
+- f__curunit->uend = 0;
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_rdfe(a) cilist *a;
+-#else
+-integer s_rdfe(cilist *a)
+-#endif
+-{
+- int n;
+- if(!f__init) f_init();
+- f__reading=1;
+- if(n=c_dfe(a))return(n);
+- if(f__curunit->uwrt && f__nowreading(f__curunit))
+- err(a->cierr,errno,"read start");
+- f__getn = y_getc;
+- f__doed = rd_ed;
+- f__doned = rd_ned;
+- f__dorevert = f__donewrec = y_err;
+- f__doend = y_rsk;
+- if(pars_f(f__fmtbuf)<0)
+- err(a->cierr,100,"read start");
+- fmt_bg();
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_wdfe(a) cilist *a;
+-#else
+-integer s_wdfe(cilist *a)
+-#endif
+-{
+- int n;
+- if(!f__init) f_init();
+- f__reading=0;
+- if(n=c_dfe(a)) return(n);
+- if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
+- err(a->cierr,errno,"startwrt");
+- f__putn = x_putc;
+- f__doed = w_ed;
+- f__doned= w_ned;
+- f__dorevert = y_err;
+- f__donewrec = y_newrec;
+- f__doend = y_rev;
+- if(pars_f(f__fmtbuf)<0)
+- err(a->cierr,100,"startwrt");
+- fmt_bg();
+- return(0);
+-}
+-integer e_rdfe(Void)
+-{
+- en_fio();
+- return 0;
+-}
+-integer e_wdfe(Void)
+-{
+- return en_fio();
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/dfe.c
+echo libI77/dolio.c 1>&2
+sed >libI77/dolio.c <<'//GO.SYSIN DD libI77/dolio.c' 's/^-//'
+-#include "f2c.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#ifdef KR_headers
+-extern int (*f__lioproc)();
+-
+-integer do_lio(type,number,ptr,len) ftnint *number,*type; char *ptr; ftnlen len;
+-#else
+-extern int (*f__lioproc)(ftnint*, char*, ftnlen, ftnint);
+-
+-integer do_lio(ftnint *type, ftnint *number, char *ptr, ftnlen len)
+-#endif
+-{
+- return((*f__lioproc)(number,ptr,len,*type));
+-}
+-#ifdef __cplusplus
+- }
+-#endif
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/dolio.c
+echo libI77/due.c 1>&2
+sed >libI77/due.c <<'//GO.SYSIN DD libI77/due.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- int
+-#ifdef KR_headers
+-c_due(a) cilist *a;
+-#else
+-c_due(cilist *a)
+-#endif
+-{
+- if(!f__init) f_init();
+- f__sequential=f__formatted=f__recpos=0;
+- f__external=1;
+- f__curunit = &f__units[a->ciunit];
+- if(a->ciunit>=MXUNIT || a->ciunit<0)
+- err(a->cierr,101,"startio");
+- f__elist=a;
+- if(f__curunit->ufd==NULL && fk_open(DIR,UNF,a->ciunit) ) err(a->cierr,104,"due");
+- f__cf=f__curunit->ufd;
+- if(f__curunit->ufmt) err(a->cierr,102,"cdue")
+- if(!f__curunit->useek) err(a->cierr,104,"cdue")
+- if(f__curunit->ufd==NULL) err(a->cierr,114,"cdue")
+- if(a->cirec <= 0)
+- err(a->cierr,130,"due")
+- FSEEK(f__cf,(OFF_T)(a->cirec-1)*f__curunit->url,SEEK_SET);
+- f__curunit->uend = 0;
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_rdue(a) cilist *a;
+-#else
+-integer s_rdue(cilist *a)
+-#endif
+-{
+- int n;
+- f__reading=1;
+- if(n=c_due(a)) return(n);
+- if(f__curunit->uwrt && f__nowreading(f__curunit))
+- err(a->cierr,errno,"read start");
+- return(0);
+-}
+-#ifdef KR_headers
+-integer s_wdue(a) cilist *a;
+-#else
+-integer s_wdue(cilist *a)
+-#endif
+-{
+- int n;
+- f__reading=0;
+- if(n=c_due(a)) return(n);
+- if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
+- err(a->cierr,errno,"write start");
+- return(0);
+-}
+-integer e_rdue(Void)
+-{
+- if(f__curunit->url==1 || f__recpos==f__curunit->url)
+- return(0);
+- FSEEK(f__cf,(OFF_T)(f__curunit->url-f__recpos),SEEK_CUR);
+- if(FTELL(f__cf)%f__curunit->url)
+- err(f__elist->cierr,200,"syserr");
+- return(0);
+-}
+-integer e_wdue(Void)
+-{
+-#ifdef ALWAYS_FLUSH
+- if (fflush(f__cf))
+- err(f__elist->cierr,errno,"write end");
+-#endif
+- return(e_rdue());
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/due.c
+echo libI77/endfile.c 1>&2
+sed >libI77/endfile.c <<'//GO.SYSIN DD libI77/endfile.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-
+-/* Compile this with -DNO_TRUNCATE if unistd.h does not exist or */
+-/* if it does not define int truncate(const char *name, off_t). */
+-
+-#ifdef MSDOS
+-#undef NO_TRUNCATE
+-#define NO_TRUNCATE
+-#endif
+-
+-#ifndef NO_TRUNCATE
+-#include "unistd.h"
+-#endif
+-
+-#ifdef KR_headers
+-extern char *strcpy();
+-extern FILE *tmpfile();
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#include "string.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#endif
+-
+-extern char *f__r_mode[], *f__w_mode[];
+-
+-#ifdef KR_headers
+-integer f_end(a) alist *a;
+-#else
+-integer f_end(alist *a)
+-#endif
+-{
+- unit *b;
+- FILE *tf;
+-
+- if(a->aunit>=MXUNIT || a->aunit<0) err(a->aerr,101,"endfile");
+- b = &f__units[a->aunit];
+- if(b->ufd==NULL) {
+- char nbuf[10];
+- sprintf(nbuf,"fort.%ld",(long)a->aunit);
+- if (tf = FOPEN(nbuf, f__w_mode[0]))
+- fclose(tf);
+- return(0);
+- }
+- b->uend=1;
+- return(b->useek ? t_runc(a) : 0);
+-}
+-
+-#ifdef NO_TRUNCATE
+- static int
+-#ifdef KR_headers
+-copy(from, len, to) FILE *from, *to; register long len;
+-#else
+-copy(FILE *from, register long len, FILE *to)
+-#endif
+-{
+- int len1;
+- char buf[BUFSIZ];
+-
+- while(fread(buf, len1 = len > BUFSIZ ? BUFSIZ : (int)len, 1, from)) {
+- if (!fwrite(buf, len1, 1, to))
+- return 1;
+- if ((len -= len1) <= 0)
+- break;
+- }
+- return 0;
+- }
+-#endif /* NO_TRUNCATE */
+-
+- int
+-#ifdef KR_headers
+-t_runc(a) alist *a;
+-#else
+-t_runc(alist *a)
+-#endif
+-{
+- OFF_T loc, len;
+- unit *b;
+- int rc;
+- FILE *bf;
+-#ifdef NO_TRUNCATE
+- FILE *tf;
+-#endif
+-
+- b = &f__units[a->aunit];
+- if(b->url)
+- return(0); /*don't truncate direct files*/
+- loc=FTELL(bf = b->ufd);
+- FSEEK(bf,(OFF_T)0,SEEK_END);
+- len=FTELL(bf);
+- if (loc >= len || b->useek == 0)
+- return(0);
+-#ifdef NO_TRUNCATE
+- if (b->ufnm == NULL)
+- return 0;
+- rc = 0;
+- fclose(b->ufd);
+- if (!loc) {
+- if (!(bf = FOPEN(b->ufnm, f__w_mode[b->ufmt])))
+- rc = 1;
+- if (b->uwrt)
+- b->uwrt = 1;
+- goto done;
+- }
+- if (!(bf = FOPEN(b->ufnm, f__r_mode[0]))
+- || !(tf = tmpfile())) {
+-#ifdef NON_UNIX_STDIO
+- bad:
+-#endif
+- rc = 1;
+- goto done;
+- }
+- if (copy(bf, (long)loc, tf)) {
+- bad1:
+- rc = 1;
+- goto done1;
+- }
+- if (!(bf = FREOPEN(b->ufnm, f__w_mode[0], bf)))
+- goto bad1;
+- rewind(tf);
+- if (copy(tf, (long)loc, bf))
+- goto bad1;
+- b->uwrt = 1;
+- b->urw = 2;
+-#ifdef NON_UNIX_STDIO
+- if (b->ufmt) {
+- fclose(bf);
+- if (!(bf = FOPEN(b->ufnm, f__w_mode[3])))
+- goto bad;
+- FSEEK(bf,(OFF_T)0,SEEK_END);
+- b->urw = 3;
+- }
+-#endif
+-done1:
+- fclose(tf);
+-done:
+- f__cf = b->ufd = bf;
+-#else /* NO_TRUNCATE */
+- if (b->urw & 2)
+- fflush(b->ufd); /* necessary on some Linux systems */
+-#ifndef FTRUNCATE
+-#define FTRUNCATE ftruncate
+-#endif
+- rc = FTRUNCATE(fileno(b->ufd), loc);
+- /* The following FSEEK is unnecessary on some systems, */
+- /* but should be harmless. */
+- FSEEK(b->ufd, (OFF_T)0, SEEK_END);
+-#endif /* NO_TRUNCATE */
+- if (rc)
+- err(a->aerr,111,"endfile");
+- return 0;
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/endfile.c
+echo libI77/err.c 1>&2
+sed >libI77/err.c <<'//GO.SYSIN DD libI77/err.c' 's/^-//'
+-#include "sysdep1.h" /* here to get stat64 on some badly designed Linux systems */
+-#include "f2c.h"
+-#ifdef KR_headers
+-extern char *malloc();
+-#else
+-#undef abs
+-#undef min
+-#undef max
+-#include "stdlib.h"
+-#endif
+-#include "fio.h"
+-#include "fmt.h" /* for struct syl */
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-/*global definitions*/
+-unit f__units[MXUNIT]; /*unit table*/
+-flag f__init; /*0 on entry, 1 after initializations*/
+-cilist *f__elist; /*active external io list*/
+-icilist *f__svic; /*active internal io list*/
+-flag f__reading; /*1 if reading, 0 if writing*/
+-flag f__cplus,f__cblank;
+-char *f__fmtbuf;
+-flag f__external; /*1 if external io, 0 if internal */
+-#ifdef KR_headers
+-int (*f__doed)(),(*f__doned)();
+-int (*f__doend)(),(*f__donewrec)(),(*f__dorevert)();
+-int (*f__getn)(); /* for formatted input */
+-void (*f__putn)(); /* for formatted output */
+-#else
+-int (*f__getn)(void); /* for formatted input */
+-void (*f__putn)(int); /* for formatted output */
+-int (*f__doed)(struct syl*, char*, ftnlen),(*f__doned)(struct syl*);
+-int (*f__dorevert)(void),(*f__donewrec)(void),(*f__doend)(void);
+-#endif
+-flag f__sequential; /*1 if sequential io, 0 if direct*/
+-flag f__formatted; /*1 if formatted io, 0 if unformatted*/
+-FILE *f__cf; /*current file*/
+-unit *f__curunit; /*current unit*/
+-int f__recpos; /*place in current record*/
+-OFF_T f__cursor, f__hiwater;
+-int f__scale;
+-char *f__icptr;
+-
+-/*error messages*/
+-char *F_err[] =
+-{
+- "error in format", /* 100 */
+- "illegal unit number", /* 101 */
+- "formatted io not allowed", /* 102 */
+- "unformatted io not allowed", /* 103 */
+- "direct io not allowed", /* 104 */
+- "sequential io not allowed", /* 105 */
+- "can't backspace file", /* 106 */
+- "null file name", /* 107 */
+- "can't stat file", /* 108 */
+- "unit not connected", /* 109 */
+- "off end of record", /* 110 */
+- "truncation failed in endfile", /* 111 */
+- "incomprehensible list input", /* 112 */
+- "out of free space", /* 113 */
+- "unit not connected", /* 114 */
+- "read unexpected character", /* 115 */
+- "bad logical input field", /* 116 */
+- "bad variable type", /* 117 */
+- "bad namelist name", /* 118 */
+- "variable not in namelist", /* 119 */
+- "no end record", /* 120 */
+- "variable count incorrect", /* 121 */
+- "subscript for scalar variable", /* 122 */
+- "invalid array section", /* 123 */
+- "substring out of bounds", /* 124 */
+- "subscript out of bounds", /* 125 */
+- "can't read file", /* 126 */
+- "can't write file", /* 127 */
+- "'new' file exists", /* 128 */
+- "can't append to file", /* 129 */
+- "non-positive record number", /* 130 */
+- "nmLbuf overflow" /* 131 */
+-};
+-#define MAXERR (sizeof(F_err)/sizeof(char *)+100)
+-
+- int
+-#ifdef KR_headers
+-f__canseek(f) FILE *f; /*SYSDEP*/
+-#else
+-f__canseek(FILE *f) /*SYSDEP*/
+-#endif
+-{
+-#ifdef NON_UNIX_STDIO
+- return !isatty(fileno(f));
+-#else
+- struct STAT_ST x;
+-
+- if (FSTAT(fileno(f),&x) < 0)
+- return(0);
+-#ifdef S_IFMT
+- switch(x.st_mode & S_IFMT) {
+- case S_IFDIR:
+- case S_IFREG:
+- if(x.st_nlink > 0) /* !pipe */
+- return(1);
+- else
+- return(0);
+- case S_IFCHR:
+- if(isatty(fileno(f)))
+- return(0);
+- return(1);
+-#ifdef S_IFBLK
+- case S_IFBLK:
+- return(1);
+-#endif
+- }
+-#else
+-#ifdef S_ISDIR
+- /* POSIX version */
+- if (S_ISREG(x.st_mode) || S_ISDIR(x.st_mode)) {
+- if(x.st_nlink > 0) /* !pipe */
+- return(1);
+- else
+- return(0);
+- }
+- if (S_ISCHR(x.st_mode)) {
+- if(isatty(fileno(f)))
+- return(0);
+- return(1);
+- }
+- if (S_ISBLK(x.st_mode))
+- return(1);
+-#else
+- Help! How does fstat work on this system?
+-#endif
+-#endif
+- return(0); /* who knows what it is? */
+-#endif
+-}
+-
+- void
+-#ifdef KR_headers
+-f__fatal(n,s) char *s;
+-#else
+-f__fatal(int n, char *s)
+-#endif
+-{
+- if(n<100 && n>=0) perror(s); /*SYSDEP*/
+- else if(n >= (int)MAXERR || n < -1)
+- { fprintf(stderr,"%s: illegal error number %d\n",s,n);
+- }
+- else if(n == -1) fprintf(stderr,"%s: end of file\n",s);
+- else
+- fprintf(stderr,"%s: %s\n",s,F_err[n-100]);
+- if (f__curunit) {
+- fprintf(stderr,"apparent state: unit %d ",
+- (int)(f__curunit-f__units));
+- fprintf(stderr, f__curunit->ufnm ? "named %s\n" : "(unnamed)\n",
+- f__curunit->ufnm);
+- }
+- else
+- fprintf(stderr,"apparent state: internal I/O\n");
+- if (f__fmtbuf)
+- fprintf(stderr,"last format: %s\n",f__fmtbuf);
+- fprintf(stderr,"lately %s %s %s %s",f__reading?"reading":"writing",
+- f__sequential?"sequential":"direct",f__formatted?"formatted":"unformatted",
+- f__external?"external":"internal");
+- sig_die(" IO", 1);
+-}
+-/*initialization routine*/
+- VOID
+-f_init(Void)
+-{ unit *p;
+-
+- f__init=1;
+- p= &f__units[0];
+- p->ufd=stderr;
+- p->useek=f__canseek(stderr);
+- p->ufmt=1;
+- p->uwrt=1;
+- p = &f__units[5];
+- p->ufd=stdin;
+- p->useek=f__canseek(stdin);
+- p->ufmt=1;
+- p->uwrt=0;
+- p= &f__units[6];
+- p->ufd=stdout;
+- p->useek=f__canseek(stdout);
+- p->ufmt=1;
+- p->uwrt=1;
+-}
+-
+- int
+-#ifdef KR_headers
+-f__nowreading(x) unit *x;
+-#else
+-f__nowreading(unit *x)
+-#endif
+-{
+- OFF_T loc;
+- int ufmt, urw;
+- extern char *f__r_mode[], *f__w_mode[];
+-
+- if (x->urw & 1)
+- goto done;
+- if (!x->ufnm)
+- goto cantread;
+- ufmt = x->url ? 0 : x->ufmt;
+- loc = FTELL(x->ufd);
+- urw = 3;
+- if (!FREOPEN(x->ufnm, f__w_mode[ufmt|2], x->ufd)) {
+- urw = 1;
+- if(!FREOPEN(x->ufnm, f__r_mode[ufmt], x->ufd)) {
+- cantread:
+- errno = 126;
+- return 1;
+- }
+- }
+- FSEEK(x->ufd,loc,SEEK_SET);
+- x->urw = urw;
+- done:
+- x->uwrt = 0;
+- return 0;
+-}
+-
+- int
+-#ifdef KR_headers
+-f__nowwriting(x) unit *x;
+-#else
+-f__nowwriting(unit *x)
+-#endif
+-{
+- OFF_T loc;
+- int ufmt;
+- extern char *f__w_mode[];
+-
+- if (x->urw & 2) {
+- if (x->urw & 1)
+- FSEEK(x->ufd, (OFF_T)0, SEEK_CUR);
+- goto done;
+- }
+- if (!x->ufnm)
+- goto cantwrite;
+- ufmt = x->url ? 0 : x->ufmt;
+- if (x->uwrt == 3) { /* just did write, rewind */
+- if (!(f__cf = x->ufd =
+- FREOPEN(x->ufnm,f__w_mode[ufmt],x->ufd)))
+- goto cantwrite;
+- x->urw = 2;
+- }
+- else {
+- loc=FTELL(x->ufd);
+- if (!(f__cf = x->ufd =
+- FREOPEN(x->ufnm, f__w_mode[ufmt | 2], x->ufd)))
+- {
+- x->ufd = NULL;
+- cantwrite:
+- errno = 127;
+- return(1);
+- }
+- x->urw = 3;
+- FSEEK(x->ufd,loc,SEEK_SET);
+- }
+- done:
+- x->uwrt = 1;
+- return 0;
+-}
+-
+- int
+-#ifdef KR_headers
+-err__fl(f, m, s) int f, m; char *s;
+-#else
+-err__fl(int f, int m, char *s)
+-#endif
+-{
+- if (!f)
+- f__fatal(m, s);
+- if (f__doend)
+- (*f__doend)();
+- return errno = m;
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/err.c
+echo libI77/f2ch.add 1>&2
+sed >libI77/f2ch.add <<'//GO.SYSIN DD libI77/f2ch.add' 's/^-//'
+-/* If you are using a C++ compiler, append the following to f2c.h
+- for compiling libF77 and libI77. */
+-
+-#ifdef __cplusplus
+-extern "C" {
+-extern int abort_(void);
+-extern double c_abs(complex *);
+-extern void c_cos(complex *, complex *);
+-extern void c_div(complex *, complex *, complex *);
+-extern void c_exp(complex *, complex *);
+-extern void c_log(complex *, complex *);
+-extern void c_sin(complex *, complex *);
+-extern void c_sqrt(complex *, complex *);
+-extern double d_abs(double *);
+-extern double d_acos(double *);
+-extern double d_asin(double *);
+-extern double d_atan(double *);
+-extern double d_atn2(double *, double *);
+-extern void d_cnjg(doublecomplex *, doublecomplex *);
+-extern double d_cos(double *);
+-extern double d_cosh(double *);
+-extern double d_dim(double *, double *);
+-extern double d_exp(double *);
+-extern double d_imag(doublecomplex *);
+-extern double d_int(double *);
+-extern double d_lg10(double *);
+-extern double d_log(double *);
+-extern double d_mod(double *, double *);
+-extern double d_nint(double *);
+-extern double d_prod(float *, float *);
+-extern double d_sign(double *, double *);
+-extern double d_sin(double *);
+-extern double d_sinh(double *);
+-extern double d_sqrt(double *);
+-extern double d_tan(double *);
+-extern double d_tanh(double *);
+-extern double derf_(double *);
+-extern double derfc_(double *);
+-extern integer do_fio(ftnint *, char *, ftnlen);
+-extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
+-extern integer do_uio(ftnint *, char *, ftnlen);
+-extern integer e_rdfe(void);
+-extern integer e_rdue(void);
+-extern integer e_rsfe(void);
+-extern integer e_rsfi(void);
+-extern integer e_rsle(void);
+-extern integer e_rsli(void);
+-extern integer e_rsue(void);
+-extern integer e_wdfe(void);
+-extern integer e_wdue(void);
+-extern integer e_wsfe(void);
+-extern integer e_wsfi(void);
+-extern integer e_wsle(void);
+-extern integer e_wsli(void);
+-extern integer e_wsue(void);
+-extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
+-extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
+-extern double erf(double);
+-extern double erf_(float *);
+-extern double erfc(double);
+-extern double erfc_(float *);
+-extern integer f_back(alist *);
+-extern integer f_clos(cllist *);
+-extern integer f_end(alist *);
+-extern void f_exit(void);
+-extern integer f_inqu(inlist *);
+-extern integer f_open(olist *);
+-extern integer f_rew(alist *);
+-extern int flush_(void);
+-extern void getarg_(integer *, char *, ftnlen);
+-extern void getenv_(char *, char *, ftnlen, ftnlen);
+-extern short h_abs(short *);
+-extern short h_dim(short *, short *);
+-extern short h_dnnt(double *);
+-extern short h_indx(char *, char *, ftnlen, ftnlen);
+-extern short h_len(char *, ftnlen);
+-extern short h_mod(short *, short *);
+-extern short h_nint(float *);
+-extern short h_sign(short *, short *);
+-extern short hl_ge(char *, char *, ftnlen, ftnlen);
+-extern short hl_gt(char *, char *, ftnlen, ftnlen);
+-extern short hl_le(char *, char *, ftnlen, ftnlen);
+-extern short hl_lt(char *, char *, ftnlen, ftnlen);
+-extern integer i_abs(integer *);
+-extern integer i_dim(integer *, integer *);
+-extern integer i_dnnt(double *);
+-extern integer i_indx(char *, char *, ftnlen, ftnlen);
+-extern integer i_len(char *, ftnlen);
+-extern integer i_mod(integer *, integer *);
+-extern integer i_nint(float *);
+-extern integer i_sign(integer *, integer *);
+-extern integer iargc_(void);
+-extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
+-extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
+-extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
+-extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
+-extern void pow_ci(complex *, complex *, integer *);
+-extern double pow_dd(double *, double *);
+-extern double pow_di(double *, integer *);
+-extern short pow_hh(short *, shortint *);
+-extern integer pow_ii(integer *, integer *);
+-extern double pow_ri(float *, integer *);
+-extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
+-extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
+-extern double r_abs(float *);
+-extern double r_acos(float *);
+-extern double r_asin(float *);
+-extern double r_atan(float *);
+-extern double r_atn2(float *, float *);
+-extern void r_cnjg(complex *, complex *);
+-extern double r_cos(float *);
+-extern double r_cosh(float *);
+-extern double r_dim(float *, float *);
+-extern double r_exp(float *);
+-extern double r_imag(complex *);
+-extern double r_int(float *);
+-extern double r_lg10(float *);
+-extern double r_log(float *);
+-extern double r_mod(float *, float *);
+-extern double r_nint(float *);
+-extern double r_sign(float *, float *);
+-extern double r_sin(float *);
+-extern double r_sinh(float *);
+-extern double r_sqrt(float *);
+-extern double r_tan(float *);
+-extern double r_tanh(float *);
+-extern void s_cat(char *, char **, integer *, integer *, ftnlen);
+-extern integer s_cmp(char *, char *, ftnlen, ftnlen);
+-extern void s_copy(char *, char *, ftnlen, ftnlen);
+-extern int s_paus(char *, ftnlen);
+-extern integer s_rdfe(cilist *);
+-extern integer s_rdue(cilist *);
+-extern integer s_rnge(char *, integer, char *, integer);
+-extern integer s_rsfe(cilist *);
+-extern integer s_rsfi(icilist *);
+-extern integer s_rsle(cilist *);
+-extern integer s_rsli(icilist *);
+-extern integer s_rsne(cilist *);
+-extern integer s_rsni(icilist *);
+-extern integer s_rsue(cilist *);
+-extern int s_stop(char *, ftnlen);
+-extern integer s_wdfe(cilist *);
+-extern integer s_wdue(cilist *);
+-extern integer s_wsfe(cilist *);
+-extern integer s_wsfi(icilist *);
+-extern integer s_wsle(cilist *);
+-extern integer s_wsli(icilist *);
+-extern integer s_wsne(cilist *);
+-extern integer s_wsni(icilist *);
+-extern integer s_wsue(cilist *);
+-extern void sig_die(char *, int);
+-extern integer signal_(integer *, void (*)(int));
+-extern integer system_(char *, ftnlen);
+-extern double z_abs(doublecomplex *);
+-extern void z_cos(doublecomplex *, doublecomplex *);
+-extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
+-extern void z_exp(doublecomplex *, doublecomplex *);
+-extern void z_log(doublecomplex *, doublecomplex *);
+-extern void z_sin(doublecomplex *, doublecomplex *);
+-extern void z_sqrt(doublecomplex *, doublecomplex *);
+- }
+-#endif
+//GO.SYSIN DD libI77/f2ch.add
+echo libI77/fio.h 1>&2
+sed >libI77/fio.h <<'//GO.SYSIN DD libI77/fio.h' 's/^-//'
+-#ifndef SYSDEP_H_INCLUDED
+-#include "sysdep1.h"
+-#endif
+-#include "stdio.h"
+-#include "errno.h"
+-#ifndef NULL
+-/* ANSI C */
+-#include "stddef.h"
+-#endif
+-
+-#ifndef SEEK_SET
+-#define SEEK_SET 0
+-#define SEEK_CUR 1
+-#define SEEK_END 2
+-#endif
+-
+-#ifndef FOPEN
+-#define FOPEN fopen
+-#endif
+-
+-#ifndef FREOPEN
+-#define FREOPEN freopen
+-#endif
+-
+-#ifndef FSEEK
+-#define FSEEK fseek
+-#endif
+-
+-#ifndef FSTAT
+-#define FSTAT fstat
+-#endif
+-
+-#ifndef FTELL
+-#define FTELL ftell
+-#endif
+-
+-#ifndef OFF_T
+-#define OFF_T long
+-#endif
+-
+-#ifndef STAT_ST
+-#define STAT_ST stat
+-#endif
+-
+-#ifndef STAT
+-#define STAT stat
+-#endif
+-
+-#ifdef MSDOS
+-#ifndef NON_UNIX_STDIO
+-#define NON_UNIX_STDIO
+-#endif
+-#endif
+-
+-#ifdef UIOLEN_int
+-typedef int uiolen;
+-#else
+-typedef long uiolen;
+-#endif
+-
+-/*units*/
+-typedef struct
+-{ FILE *ufd; /*0=unconnected*/
+- char *ufnm;
+-#ifndef MSDOS
+- long uinode;
+- int udev;
+-#endif
+- int url; /*0=sequential*/
+- flag useek; /*true=can backspace, use dir, ...*/
+- flag ufmt;
+- flag urw; /* (1 for can read) | (2 for can write) */
+- flag ublnk;
+- flag uend;
+- flag uwrt; /*last io was write*/
+- flag uscrtch;
+-} unit;
+-
+-extern flag f__init;
+-extern cilist *f__elist; /*active external io list*/
+-extern flag f__reading,f__external,f__sequential,f__formatted;
+-#undef Void
+-#ifdef KR_headers
+-#define Void /*void*/
+-extern int (*f__getn)(); /* for formatted input */
+-extern void (*f__putn)(); /* for formatted output */
+-extern void x_putc();
+-extern long f__inode();
+-extern VOID sig_die();
+-extern int (*f__donewrec)(), t_putc(), x_wSL();
+-extern int c_sfe(), err__fl(), xrd_SL(), f__putbuf();
+-#else
+-#define Void void
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-extern int (*f__getn)(void); /* for formatted input */
+-extern void (*f__putn)(int); /* for formatted output */
+-extern void x_putc(int);
+-extern long f__inode(char*,int*);
+-extern void sig_die(char*,int);
+-extern void f__fatal(int,char*);
+-extern int t_runc(alist*);
+-extern int f__nowreading(unit*), f__nowwriting(unit*);
+-extern int fk_open(int,int,ftnint);
+-extern int en_fio(void);
+-extern void f_init(void);
+-extern int (*f__donewrec)(void), t_putc(int), x_wSL(void);
+-extern void b_char(char*,char*,ftnlen), g_char(char*,ftnlen,char*);
+-extern int c_sfe(cilist*), z_rnew(void);
+-extern int isatty(int);
+-extern int err__fl(int,int,char*);
+-extern int xrd_SL(void);
+-extern int f__putbuf(int);
+-#ifdef __cplusplus
+- }
+-#endif
+-#endif
+-extern int (*f__doend)(Void);
+-extern FILE *f__cf; /*current file*/
+-extern unit *f__curunit; /*current unit*/
+-extern unit f__units[];
+-#define err(f,m,s) {if(f) errno= m; else f__fatal(m,s); return(m);}
+-#define errfl(f,m,s) return err__fl((int)f,m,s)
+-
+-/*Table sizes*/
+-#define MXUNIT 100
+-
+-extern int f__recpos; /*position in current record*/
+-extern OFF_T f__cursor; /* offset to move to */
+-extern OFF_T f__hiwater; /* so TL doesn't confuse us */
+-
+-#define WRITE 1
+-#define READ 2
+-#define SEQ 3
+-#define DIR 4
+-#define FMT 5
+-#define UNF 6
+-#define EXT 7
+-#define INT 8
+-
+-#define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)
+//GO.SYSIN DD libI77/fio.h
+echo libI77/fmt.c 1>&2
+sed >libI77/fmt.c <<'//GO.SYSIN DD libI77/fmt.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#define skip(s) while(*s==' ') s++
+-#ifdef interdata
+-#define SYLMX 300
+-#endif
+-#ifdef pdp11
+-#define SYLMX 300
+-#endif
+-#ifdef vax
+-#define SYLMX 300
+-#endif
+-#ifndef SYLMX
+-#define SYLMX 300
+-#endif
+-#define GLITCH '\2'
+- /* special quote character for stu */
+-extern flag f__cblank,f__cplus; /*blanks in I and compulsory plus*/
+-static struct syl f__syl[SYLMX];
+-int f__parenlvl,f__pc,f__revloc;
+-
+- static
+-#ifdef KR_headers
+-char *ap_end(s) char *s;
+-#else
+-char *ap_end(char *s)
+-#endif
+-{ char quote;
+- quote= *s++;
+- for(;*s;s++)
+- { if(*s!=quote) continue;
+- if(*++s!=quote) return(s);
+- }
+- if(f__elist->cierr) {
+- errno = 100;
+- return(NULL);
+- }
+- f__fatal(100, "bad string");
+- /*NOTREACHED*/ return 0;
+-}
+- static int
+-#ifdef KR_headers
+-op_gen(a,b,c,d)
+-#else
+-op_gen(int a, int b, int c, int d)
+-#endif
+-{ struct syl *p= &f__syl[f__pc];
+- if(f__pc>=SYLMX)
+- { fprintf(stderr,"format too complicated:\n");
+- sig_die(f__fmtbuf, 1);
+- }
+- p->op=a;
+- p->p1=b;
+- p->p2.i[0]=c;
+- p->p2.i[1]=d;
+- return(f__pc++);
+-}
+-#ifdef KR_headers
+-static char *f_list();
+-static char *gt_num(s,n,n1) char *s; int *n, n1;
+-#else
+-static char *f_list(char*);
+-static char *gt_num(char *s, int *n, int n1)
+-#endif
+-{ int m=0,f__cnt=0;
+- char c;
+- for(c= *s;;c = *s)
+- { if(c==' ')
+- { s++;
+- continue;
+- }
+- if(c>'9' || c<'0') break;
+- m=10*m+c-'0';
+- f__cnt++;
+- s++;
+- }
+- if(f__cnt==0) {
+- if (!n1)
+- s = 0;
+- *n=n1;
+- }
+- else *n=m;
+- return(s);
+-}
+-
+- static
+-#ifdef KR_headers
+-char *f_s(s,curloc) char *s;
+-#else
+-char *f_s(char *s, int curloc)
+-#endif
+-{
+- skip(s);
+- if(*s++!='(')
+- {
+- return(NULL);
+- }
+- if(f__parenlvl++ ==1) f__revloc=curloc;
+- if(op_gen(RET1,curloc,0,0)<0 ||
+- (s=f_list(s))==NULL)
+- {
+- return(NULL);
+- }
+- skip(s);
+- return(s);
+-}
+-
+- static int
+-#ifdef KR_headers
+-ne_d(s,p) char *s,**p;
+-#else
+-ne_d(char *s, char **p)
+-#endif
+-{ int n,x,sign=0;
+- struct syl *sp;
+- switch(*s)
+- {
+- default:
+- return(0);
+- case ':': (void) op_gen(COLON,0,0,0); break;
+- case '$':
+- (void) op_gen(NONL, 0, 0, 0); break;
+- case 'B':
+- case 'b':
+- if(*++s=='z' || *s == 'Z') (void) op_gen(BZ,0,0,0);
+- else (void) op_gen(BN,0,0,0);
+- break;
+- case 'S':
+- case 's':
+- if(*(s+1)=='s' || *(s+1) == 'S')
+- { x=SS;
+- s++;
+- }
+- else if(*(s+1)=='p' || *(s+1) == 'P')
+- { x=SP;
+- s++;
+- }
+- else x=S;
+- (void) op_gen(x,0,0,0);
+- break;
+- case '/': (void) op_gen(SLASH,0,0,0); break;
+- case '-': sign=1;
+- case '+': s++; /*OUTRAGEOUS CODING TRICK*/
+- case '0': case '1': case '2': case '3': case '4':
+- case '5': case '6': case '7': case '8': case '9':
+- if (!(s=gt_num(s,&n,0))) {
+- bad: *p = 0;
+- return 1;
+- }
+- switch(*s)
+- {
+- default:
+- return(0);
+- case 'P':
+- case 'p': if(sign) n= -n; (void) op_gen(P,n,0,0); break;
+- case 'X':
+- case 'x': (void) op_gen(X,n,0,0); break;
+- case 'H':
+- case 'h':
+- sp = &f__syl[op_gen(H,n,0,0)];
+- sp->p2.s = s + 1;
+- s+=n;
+- break;
+- }
+- break;
+- case GLITCH:
+- case '"':
+- case '\'':
+- sp = &f__syl[op_gen(APOS,0,0,0)];
+- sp->p2.s = s;
+- if((*p = ap_end(s)) == NULL)
+- return(0);
+- return(1);
+- case 'T':
+- case 't':
+- if(*(s+1)=='l' || *(s+1) == 'L')
+- { x=TL;
+- s++;
+- }
+- else if(*(s+1)=='r'|| *(s+1) == 'R')
+- { x=TR;
+- s++;
+- }
+- else x=T;
+- if (!(s=gt_num(s+1,&n,0)))
+- goto bad;
+- s--;
+- (void) op_gen(x,n,0,0);
+- break;
+- case 'X':
+- case 'x': (void) op_gen(X,1,0,0); break;
+- case 'P':
+- case 'p': (void) op_gen(P,1,0,0); break;
+- }
+- s++;
+- *p=s;
+- return(1);
+-}
+-
+- static int
+-#ifdef KR_headers
+-e_d(s,p) char *s,**p;
+-#else
+-e_d(char *s, char **p)
+-#endif
+-{ int i,im,n,w,d,e,found=0,x=0;
+- char *sv=s;
+- s=gt_num(s,&n,1);
+- (void) op_gen(STACK,n,0,0);
+- switch(*s++)
+- {
+- default: break;
+- case 'E':
+- case 'e': x=1;
+- case 'G':
+- case 'g':
+- found=1;
+- if (!(s=gt_num(s,&w,0))) {
+- bad:
+- *p = 0;
+- return 1;
+- }
+- if(w==0) break;
+- if(*s=='.') {
+- if (!(s=gt_num(s+1,&d,0)))
+- goto bad;
+- }
+- else d=0;
+- if(*s!='E' && *s != 'e')
+- (void) op_gen(x==1?E:G,w,d,0); /* default is Ew.dE2 */
+- else {
+- if (!(s=gt_num(s+1,&e,0)))
+- goto bad;
+- (void) op_gen(x==1?EE:GE,w,d,e);
+- }
+- break;
+- case 'O':
+- case 'o':
+- i = O;
+- im = OM;
+- goto finish_I;
+- case 'Z':
+- case 'z':
+- i = Z;
+- im = ZM;
+- goto finish_I;
+- case 'L':
+- case 'l':
+- found=1;
+- if (!(s=gt_num(s,&w,0)))
+- goto bad;
+- if(w==0) break;
+- (void) op_gen(L,w,0,0);
+- break;
+- case 'A':
+- case 'a':
+- found=1;
+- skip(s);
+- if(*s>='0' && *s<='9')
+- { s=gt_num(s,&w,1);
+- if(w==0) break;
+- (void) op_gen(AW,w,0,0);
+- break;
+- }
+- (void) op_gen(A,0,0,0);
+- break;
+- case 'F':
+- case 'f':
+- if (!(s=gt_num(s,&w,0)))
+- goto bad;
+- found=1;
+- if(w==0) break;
+- if(*s=='.') {
+- if (!(s=gt_num(s+1,&d,0)))
+- goto bad;
+- }
+- else d=0;
+- (void) op_gen(F,w,d,0);
+- break;
+- case 'D':
+- case 'd':
+- found=1;
+- if (!(s=gt_num(s,&w,0)))
+- goto bad;
+- if(w==0) break;
+- if(*s=='.') {
+- if (!(s=gt_num(s+1,&d,0)))
+- goto bad;
+- }
+- else d=0;
+- (void) op_gen(D,w,d,0);
+- break;
+- case 'I':
+- case 'i':
+- i = I;
+- im = IM;
+- finish_I:
+- if (!(s=gt_num(s,&w,0)))
+- goto bad;
+- found=1;
+- if(w==0) break;
+- if(*s!='.')
+- { (void) op_gen(i,w,0,0);
+- break;
+- }
+- if (!(s=gt_num(s+1,&d,0)))
+- goto bad;
+- (void) op_gen(im,w,d,0);
+- break;
+- }
+- if(found==0)
+- { f__pc--; /*unSTACK*/
+- *p=sv;
+- return(0);
+- }
+- *p=s;
+- return(1);
+-}
+- static
+-#ifdef KR_headers
+-char *i_tem(s) char *s;
+-#else
+-char *i_tem(char *s)
+-#endif
+-{ char *t;
+- int n,curloc;
+- if(*s==')') return(s);
+- if(ne_d(s,&t)) return(t);
+- if(e_d(s,&t)) return(t);
+- s=gt_num(s,&n,1);
+- if((curloc=op_gen(STACK,n,0,0))<0) return(NULL);
+- return(f_s(s,curloc));
+-}
+-
+- static
+-#ifdef KR_headers
+-char *f_list(s) char *s;
+-#else
+-char *f_list(char *s)
+-#endif
+-{
+- for(;*s!=0;)
+- { skip(s);
+- if((s=i_tem(s))==NULL) return(NULL);
+- skip(s);
+- if(*s==',') s++;
+- else if(*s==')')
+- { if(--f__parenlvl==0)
+- {
+- (void) op_gen(REVERT,f__revloc,0,0);
+- return(++s);
+- }
+- (void) op_gen(GOTO,0,0,0);
+- return(++s);
+- }
+- }
+- return(NULL);
+-}
+-
+- int
+-#ifdef KR_headers
+-pars_f(s) char *s;
+-#else
+-pars_f(char *s)
+-#endif
+-{
+- f__parenlvl=f__revloc=f__pc=0;
+- if(f_s(s,0) == NULL)
+- {
+- return(-1);
+- }
+- return(0);
+-}
+-#define STKSZ 10
+-int f__cnt[STKSZ],f__ret[STKSZ],f__cp,f__rp;
+-flag f__workdone, f__nonl;
+-
+- static int
+-#ifdef KR_headers
+-type_f(n)
+-#else
+-type_f(int n)
+-#endif
+-{
+- switch(n)
+- {
+- default:
+- return(n);
+- case RET1:
+- return(RET1);
+- case REVERT: return(REVERT);
+- case GOTO: return(GOTO);
+- case STACK: return(STACK);
+- case X:
+- case SLASH:
+- case APOS: case H:
+- case T: case TL: case TR:
+- return(NED);
+- case F:
+- case I:
+- case IM:
+- case A: case AW:
+- case O: case OM:
+- case L:
+- case E: case EE: case D:
+- case G: case GE:
+- case Z: case ZM:
+- return(ED);
+- }
+-}
+-#ifdef KR_headers
+-integer do_fio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
+-#else
+-integer do_fio(ftnint *number, char *ptr, ftnlen len)
+-#endif
+-{ struct syl *p;
+- int n,i;
+- for(i=0;i<*number;i++,ptr+=len)
+- {
+-loop: switch(type_f((p= &f__syl[f__pc])->op))
+- {
+- default:
+- fprintf(stderr,"unknown code in do_fio: %d\n%s\n",
+- p->op,f__fmtbuf);
+- err(f__elist->cierr,100,"do_fio");
+- case NED:
+- if((*f__doned)(p))
+- { f__pc++;
+- goto loop;
+- }
+- f__pc++;
+- continue;
+- case ED:
+- if(f__cnt[f__cp]<=0)
+- { f__cp--;
+- f__pc++;
+- goto loop;
+- }
+- if(ptr==NULL)
+- return((*f__doend)());
+- f__cnt[f__cp]--;
+- f__workdone=1;
+- if((n=(*f__doed)(p,ptr,len))>0)
+- errfl(f__elist->cierr,errno,"fmt");
+- if(n<0)
+- err(f__elist->ciend,(EOF),"fmt");
+- continue;
+- case STACK:
+- f__cnt[++f__cp]=p->p1;
+- f__pc++;
+- goto loop;
+- case RET1:
+- f__ret[++f__rp]=p->p1;
+- f__pc++;
+- goto loop;
+- case GOTO:
+- if(--f__cnt[f__cp]<=0)
+- { f__cp--;
+- f__rp--;
+- f__pc++;
+- goto loop;
+- }
+- f__pc=1+f__ret[f__rp--];
+- goto loop;
+- case REVERT:
+- f__rp=f__cp=0;
+- f__pc = p->p1;
+- if(ptr==NULL)
+- return((*f__doend)());
+- if(!f__workdone) return(0);
+- if((n=(*f__dorevert)()) != 0) return(n);
+- goto loop;
+- case COLON:
+- if(ptr==NULL)
+- return((*f__doend)());
+- f__pc++;
+- goto loop;
+- case NONL:
+- f__nonl = 1;
+- f__pc++;
+- goto loop;
+- case S:
+- case SS:
+- f__cplus=0;
+- f__pc++;
+- goto loop;
+- case SP:
+- f__cplus = 1;
+- f__pc++;
+- goto loop;
+- case P: f__scale=p->p1;
+- f__pc++;
+- goto loop;
+- case BN:
+- f__cblank=0;
+- f__pc++;
+- goto loop;
+- case BZ:
+- f__cblank=1;
+- f__pc++;
+- goto loop;
+- }
+- }
+- return(0);
+-}
+-
+- int
+-en_fio(Void)
+-{ ftnint one=1;
+- return(do_fio(&one,(char *)NULL,(ftnint)0));
+-}
+-
+- VOID
+-fmt_bg(Void)
+-{
+- f__workdone=f__cp=f__rp=f__pc=f__cursor=0;
+- f__cnt[0]=f__ret[0]=0;
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/fmt.c
+echo libI77/fmt.h 1>&2
+sed >libI77/fmt.h <<'//GO.SYSIN DD libI77/fmt.h' 's/^-//'
+-struct syl
+-{ int op;
+- int p1;
+- union { int i[2]; char *s;} p2;
+- };
+-#define RET1 1
+-#define REVERT 2
+-#define GOTO 3
+-#define X 4
+-#define SLASH 5
+-#define STACK 6
+-#define I 7
+-#define ED 8
+-#define NED 9
+-#define IM 10
+-#define APOS 11
+-#define H 12
+-#define TL 13
+-#define TR 14
+-#define T 15
+-#define COLON 16
+-#define S 17
+-#define SP 18
+-#define SS 19
+-#define P 20
+-#define BN 21
+-#define BZ 22
+-#define F 23
+-#define E 24
+-#define EE 25
+-#define D 26
+-#define G 27
+-#define GE 28
+-#define L 29
+-#define A 30
+-#define AW 31
+-#define O 32
+-#define NONL 33
+-#define OM 34
+-#define Z 35
+-#define ZM 36
+-extern int f__pc,f__parenlvl,f__revloc;
+-typedef union
+-{ real pf;
+- doublereal pd;
+-} ufloat;
+-typedef union
+-{ short is;
+-#ifndef KR_headers
+- signed
+-#endif
+- char ic;
+- integer il;
+-#ifdef Allow_TYQUAD
+- longint ili;
+-#endif
+-} Uint;
+-#ifdef KR_headers
+-extern int (*f__doed)(),(*f__doned)();
+-extern int (*f__dorevert)();
+-extern int rd_ed(),rd_ned();
+-extern int w_ed(),w_ned();
+-extern int signbit_f2c();
+-#else
+-#ifdef __cplusplus
+-extern "C" {
+-#define Cextern extern "C"
+-#else
+-#define Cextern extern
+-#endif
+-extern int (*f__doed)(struct syl*, char*, ftnlen),(*f__doned)(struct syl*);
+-extern int (*f__dorevert)(void);
+-extern void fmt_bg(void);
+-extern int pars_f(char*);
+-extern int rd_ed(struct syl*, char*, ftnlen),rd_ned(struct syl*);
+-extern int signbit_f2c(double*);
+-extern int w_ed(struct syl*, char*, ftnlen),w_ned(struct syl*);
+-extern int wrt_E(ufloat*, int, int, int, ftnlen);
+-extern int wrt_F(ufloat*, int, int, ftnlen);
+-extern int wrt_L(Uint*, int, ftnlen);
+-#ifdef __cplusplus
+- }
+-#endif
+-#endif
+-extern flag f__cblank,f__cplus,f__workdone, f__nonl;
+-extern char *f__fmtbuf;
+-extern int f__scale;
+-#define GET(x) if((x=(*f__getn)())<0) return(x)
+-#define VAL(x) (x!='\n'?x:' ')
+-#define PUT(x) (*f__putn)(x)
+-
+-#undef TYQUAD
+-#ifndef Allow_TYQUAD
+-#undef longint
+-#define longint long
+-#else
+-#define TYQUAD 14
+-#endif
+-
+-#ifdef KR_headers
+-extern char *f__icvt();
+-#else
+-Cextern char *f__icvt(longint, int*, int*, int);
+-#endif
+//GO.SYSIN DD libI77/fmt.h
+echo libI77/fmtlib.c 1>&2
+sed >libI77/fmtlib.c <<'//GO.SYSIN DD libI77/fmtlib.c' 's/^-//'
+-/* @(#)fmtlib.c 1.2 */
+-#define MAXINTLENGTH 23
+-
+-#include "f2c.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-#ifndef Allow_TYQUAD
+-#undef longint
+-#define longint long
+-#undef ulongint
+-#define ulongint unsigned long
+-#endif
+-
+-#ifdef KR_headers
+-char *f__icvt(value,ndigit,sign, base) longint value; int *ndigit,*sign;
+- register int base;
+-#else
+-char *f__icvt(longint value, int *ndigit, int *sign, int base)
+-#endif
+-{
+- static char buf[MAXINTLENGTH+1];
+- register int i;
+- ulongint uvalue;
+-
+- if(value > 0) {
+- uvalue = value;
+- *sign = 0;
+- }
+- else if (value < 0) {
+- uvalue = -value;
+- *sign = 1;
+- }
+- else {
+- *sign = 0;
+- *ndigit = 1;
+- buf[MAXINTLENGTH-1] = '0';
+- return &buf[MAXINTLENGTH-1];
+- }
+- i = MAXINTLENGTH;
+- do {
+- buf[--i] = (uvalue%base) + '0';
+- uvalue /= base;
+- }
+- while(uvalue > 0);
+- *ndigit = MAXINTLENGTH - i;
+- return &buf[i];
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/fmtlib.c
+echo libI77/fp.h 1>&2
+sed >libI77/fp.h <<'//GO.SYSIN DD libI77/fp.h' 's/^-//'
+-#define FMAX 40
+-#define EXPMAXDIGS 8
+-#define EXPMAX 99999999
+-/* FMAX = max number of nonzero digits passed to atof() */
+-/* EXPMAX = 10^EXPMAXDIGS - 1 = largest allowed exponent absolute value */
+-
+-#ifdef V10 /* Research Tenth-Edition Unix */
+-#include "local.h"
+-#endif
+-
+-/* MAXFRACDIGS and MAXINTDIGS are for wrt_F -- bounds (not necessarily
+- tight) on the maximum number of digits to the right and left of
+- * the decimal point.
+- */
+-
+-#ifdef VAX
+-#define MAXFRACDIGS 56
+-#define MAXINTDIGS 38
+-#else
+-#ifdef CRAY
+-#define MAXFRACDIGS 9880
+-#define MAXINTDIGS 9864
+-#else
+-/* values that suffice for IEEE double */
+-#define MAXFRACDIGS 344
+-#define MAXINTDIGS 308
+-#endif
+-#endif
+//GO.SYSIN DD libI77/fp.h
+echo libI77/ftell_.c 1>&2
+sed >libI77/ftell_.c <<'//GO.SYSIN DD libI77/ftell_.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- static FILE *
+-#ifdef KR_headers
+-unit_chk(Unit, who) integer Unit; char *who;
+-#else
+-unit_chk(integer Unit, char *who)
+-#endif
+-{
+- if (Unit >= MXUNIT || Unit < 0)
+- f__fatal(101, who);
+- return f__units[Unit].ufd;
+- }
+-
+- integer
+-#ifdef KR_headers
+-ftell_(Unit) integer *Unit;
+-#else
+-ftell_(integer *Unit)
+-#endif
+-{
+- FILE *f;
+- return (f = unit_chk(*Unit, "ftell")) ? ftell(f) : -1L;
+- }
+-
+- int
+-#ifdef KR_headers
+-fseek_(Unit, offset, whence) integer *Unit, *offset, *whence;
+-#else
+-fseek_(integer *Unit, integer *offset, integer *whence)
+-#endif
+-{
+- FILE *f;
+- int w = (int)*whence;
+-#ifdef SEEK_SET
+- static int wohin[3] = { SEEK_SET, SEEK_CUR, SEEK_END };
+-#endif
+- if (w < 0 || w > 2)
+- w = 0;
+-#ifdef SEEK_SET
+- w = wohin[w];
+-#endif
+- return !(f = unit_chk(*Unit, "fseek"))
+- || fseek(f, *offset, w) ? 1 : 0;
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/ftell_.c
+echo libI77/iio.c 1>&2
+sed >libI77/iio.c <<'//GO.SYSIN DD libI77/iio.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "fmt.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-extern char *f__icptr;
+-char *f__icend;
+-extern icilist *f__svic;
+-int f__icnum;
+-
+- int
+-z_getc(Void)
+-{
+- if(f__recpos++ < f__svic->icirlen) {
+- if(f__icptr >= f__icend) err(f__svic->iciend,(EOF),"endfile");
+- return(*(unsigned char *)f__icptr++);
+- }
+- return '\n';
+-}
+-
+- void
+-#ifdef KR_headers
+-z_putc(c)
+-#else
+-z_putc(int c)
+-#endif
+-{
+- if (f__icptr < f__icend && f__recpos++ < f__svic->icirlen)
+- *f__icptr++ = c;
+-}
+-
+- int
+-z_rnew(Void)
+-{
+- f__icptr = f__svic->iciunit + (++f__icnum)*f__svic->icirlen;
+- f__recpos = 0;
+- f__cursor = 0;
+- f__hiwater = 0;
+- return 1;
+-}
+-
+- static int
+-z_endp(Void)
+-{
+- (*f__donewrec)();
+- return 0;
+- }
+-
+- int
+-#ifdef KR_headers
+-c_si(a) icilist *a;
+-#else
+-c_si(icilist *a)
+-#endif
+-{
+- f__elist = (cilist *)a;
+- f__fmtbuf=a->icifmt;
+- f__curunit = 0;
+- f__sequential=f__formatted=1;
+- f__external=0;
+- if(pars_f(f__fmtbuf)<0)
+- err(a->icierr,100,"startint");
+- fmt_bg();
+- f__cblank=f__cplus=f__scale=0;
+- f__svic=a;
+- f__icnum=f__recpos=0;
+- f__cursor = 0;
+- f__hiwater = 0;
+- f__icptr = a->iciunit;
+- f__icend = f__icptr + a->icirlen*a->icirnum;
+- f__cf = 0;
+- return(0);
+-}
+-
+- int
+-iw_rev(Void)
+-{
+- if(f__workdone)
+- z_endp();
+- f__hiwater = f__recpos = f__cursor = 0;
+- return(f__workdone=0);
+- }
+-
+-#ifdef KR_headers
+-integer s_rsfi(a) icilist *a;
+-#else
+-integer s_rsfi(icilist *a)
+-#endif
+-{ int n;
+- if(n=c_si(a)) return(n);
+- f__reading=1;
+- f__doed=rd_ed;
+- f__doned=rd_ned;
+- f__getn=z_getc;
+- f__dorevert = z_endp;
+- f__donewrec = z_rnew;
+- f__doend = z_endp;
+- return(0);
+-}
+-
+- int
+-z_wnew(Void)
+-{
+- if (f__recpos < f__hiwater) {
+- f__icptr += f__hiwater - f__recpos;
+- f__recpos = f__hiwater;
+- }
+- while(f__recpos++ < f__svic->icirlen)
+- *f__icptr++ = ' ';
+- f__recpos = 0;
+- f__cursor = 0;
+- f__hiwater = 0;
+- f__icnum++;
+- return 1;
+-}
+-#ifdef KR_headers
+-integer s_wsfi(a) icilist *a;
+-#else
+-integer s_wsfi(icilist *a)
+-#endif
+-{ int n;
+- if(n=c_si(a)) return(n);
+- f__reading=0;
+- f__doed=w_ed;
+- f__doned=w_ned;
+- f__putn=z_putc;
+- f__dorevert = iw_rev;
+- f__donewrec = z_wnew;
+- f__doend = z_endp;
+- return(0);
+-}
+-integer e_rsfi(Void)
+-{ int n = en_fio();
+- f__fmtbuf = NULL;
+- return(n);
+-}
+-integer e_wsfi(Void)
+-{
+- int n;
+- n = en_fio();
+- f__fmtbuf = NULL;
+- if(f__svic->icirnum != 1
+- && (f__icnum > f__svic->icirnum
+- || (f__icnum == f__svic->icirnum && (f__recpos | f__hiwater))))
+- err(f__svic->icierr,110,"inwrite");
+- if (f__recpos < f__hiwater)
+- f__recpos = f__hiwater;
+- if (f__recpos >= f__svic->icirlen)
+- err(f__svic->icierr,110,"recend");
+- if (!f__recpos && f__icnum)
+- return n;
+- while(f__recpos++ < f__svic->icirlen)
+- *f__icptr++ = ' ';
+- return n;
+-}
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/iio.c
+echo libI77/ilnw.c 1>&2
+sed >libI77/ilnw.c <<'//GO.SYSIN DD libI77/ilnw.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "lio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-extern char *f__icptr;
+-extern char *f__icend;
+-extern icilist *f__svic;
+-extern int f__icnum;
+-#ifdef KR_headers
+-extern void z_putc();
+-#else
+-extern void z_putc(int);
+-#endif
+-
+- static int
+-z_wSL(Void)
+-{
+- while(f__recpos < f__svic->icirlen)
+- z_putc(' ');
+- return z_rnew();
+- }
+-
+- static void
+-#ifdef KR_headers
+-c_liw(a) icilist *a;
+-#else
+-c_liw(icilist *a)
+-#endif
+-{
+- f__reading = 0;
+- f__external = 0;
+- f__formatted = 1;
+- f__putn = z_putc;
+- L_len = a->icirlen;
+- f__donewrec = z_wSL;
+- f__svic = a;
+- f__icnum = f__recpos = 0;
+- f__cursor = 0;
+- f__cf = 0;
+- f__curunit = 0;
+- f__icptr = a->iciunit;
+- f__icend = f__icptr + a->icirlen*a->icirnum;
+- f__elist = (cilist *)a;
+- }
+-
+- integer
+-#ifdef KR_headers
+-s_wsni(a) icilist *a;
+-#else
+-s_wsni(icilist *a)
+-#endif
+-{
+- cilist ca;
+-
+- c_liw(a);
+- ca.cifmt = a->icifmt;
+- x_wsne(&ca);
+- z_wSL();
+- return 0;
+- }
+-
+- integer
+-#ifdef KR_headers
+-s_wsli(a) icilist *a;
+-#else
+-s_wsli(icilist *a)
+-#endif
+-{
+- f__lioproc = l_write;
+- c_liw(a);
+- return(0);
+- }
+-
+-integer e_wsli(Void)
+-{
+- z_wSL();
+- return(0);
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/ilnw.c
+echo libI77/inquire.c 1>&2
+sed >libI77/inquire.c <<'//GO.SYSIN DD libI77/inquire.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#include "string.h"
+-#ifdef NON_UNIX_STDIO
+-#ifndef MSDOS
+-#include "unistd.h" /* for access() */
+-#endif
+-#endif
+-#ifdef KR_headers
+-integer f_inqu(a) inlist *a;
+-#else
+-#ifdef __cplusplus
+-extern "C" integer f_inqu(inlist*);
+-#endif
+-#ifdef MSDOS
+-#undef abs
+-#undef min
+-#undef max
+-#include "io.h"
+-#endif
+-integer f_inqu(inlist *a)
+-#endif
+-{ flag byfile;
+- int i;
+-#ifndef NON_UNIX_STDIO
+- int n;
+-#endif
+- unit *p;
+- char buf[256];
+- long x;
+- if(a->infile!=NULL)
+- { byfile=1;
+- g_char(a->infile,a->infilen,buf);
+-#ifdef NON_UNIX_STDIO
+- x = access(buf,0) ? -1 : 0;
+- for(i=0,p=NULL;i<MXUNIT;i++)
+- if(f__units[i].ufd != NULL
+- && f__units[i].ufnm != NULL
+- && !strcmp(f__units[i].ufnm,buf)) {
+- p = &f__units[i];
+- break;
+- }
+-#else
+- x=f__inode(buf, &n);
+- for(i=0,p=NULL;i<MXUNIT;i++)
+- if(f__units[i].uinode==x
+- && f__units[i].ufd!=NULL
+- && f__units[i].udev == n) {
+- p = &f__units[i];
+- break;
+- }
+-#endif
+- }
+- else
+- {
+- byfile=0;
+- if(a->inunit<MXUNIT && a->inunit>=0)
+- {
+- p= &f__units[a->inunit];
+- }
+- else
+- {
+- p=NULL;
+- }
+- }
+- if(a->inex!=NULL)
+- if(byfile && x != -1 || !byfile && p!=NULL)
+- *a->inex=1;
+- else *a->inex=0;
+- if(a->inopen!=NULL)
+- if(byfile) *a->inopen=(p!=NULL);
+- else *a->inopen=(p!=NULL && p->ufd!=NULL);
+- if(a->innum!=NULL) *a->innum= p-f__units;
+- if(a->innamed!=NULL)
+- if(byfile || p!=NULL && p->ufnm!=NULL)
+- *a->innamed=1;
+- else *a->innamed=0;
+- if(a->inname!=NULL)
+- if(byfile)
+- b_char(buf,a->inname,a->innamlen);
+- else if(p!=NULL && p->ufnm!=NULL)
+- b_char(p->ufnm,a->inname,a->innamlen);
+- if(a->inacc!=NULL && p!=NULL && p->ufd!=NULL)
+- if(p->url)
+- b_char("DIRECT",a->inacc,a->inacclen);
+- else b_char("SEQUENTIAL",a->inacc,a->inacclen);
+- if(a->inseq!=NULL)
+- if(p!=NULL && p->url)
+- b_char("NO",a->inseq,a->inseqlen);
+- else b_char("YES",a->inseq,a->inseqlen);
+- if(a->indir!=NULL)
+- if(p==NULL || p->url)
+- b_char("YES",a->indir,a->indirlen);
+- else b_char("NO",a->indir,a->indirlen);
+- if(a->infmt!=NULL)
+- if(p!=NULL && p->ufmt==0)
+- b_char("UNFORMATTED",a->infmt,a->infmtlen);
+- else b_char("FORMATTED",a->infmt,a->infmtlen);
+- if(a->inform!=NULL)
+- if(p!=NULL && p->ufmt==0)
+- b_char("NO",a->inform,a->informlen);
+- else b_char("YES",a->inform,a->informlen);
+- if(a->inunf)
+- if(p!=NULL && p->ufmt==0)
+- b_char("YES",a->inunf,a->inunflen);
+- else if (p!=NULL) b_char("NO",a->inunf,a->inunflen);
+- else b_char("UNKNOWN",a->inunf,a->inunflen);
+- if(a->inrecl!=NULL && p!=NULL)
+- *a->inrecl=p->url;
+- if(a->innrec!=NULL && p!=NULL && p->url>0)
+- *a->innrec=(ftnint)(FTELL(p->ufd)/p->url+1);
+- if(a->inblank && p!=NULL && p->ufmt)
+- if(p->ublnk)
+- b_char("ZERO",a->inblank,a->inblanklen);
+- else b_char("NULL",a->inblank,a->inblanklen);
+- return(0);
+-}
+//GO.SYSIN DD libI77/inquire.c
+echo libI77/i77vers.c 1>&2
+sed >libI77/i77vers.c <<'//GO.SYSIN DD libI77/i77vers.c' 's/^-//'
+- char
+-_libi77_version_f2c[] = "\n@(#) LIBI77 VERSION (f2c) pjw,dmg-mods 20030321\n";
+-
+-/*
+-2.01 $ format added
+-2.02 Coding bug in open.c repaired
+-2.03 fixed bugs in lread.c (read * with negative f-format) and lio.c
+- and lio.h (e-format conforming to spec)
+-2.04 changed open.c and err.c (fopen and freopen respectively) to
+- update to new c-library (append mode)
+-2.05 added namelist capability
+-2.06 allow internal list and namelist I/O
+-*/
+-
+-/*
+-close.c:
+- allow upper-case STATUS= values
+-endfile.c
+- create fort.nnn if unit nnn not open;
+- else if (file length == 0) use creat() rather than copy;
+- use local copy() rather than forking /bin/cp;
+- rewind, fseek to clear buffer (for no reading past EOF)
+-err.c
+- use neither setbuf nor setvbuf; make stderr buffered
+-fio.h
+- #define _bufend
+-inquire.c
+- upper case responses;
+- omit byfile test from SEQUENTIAL=
+- answer "YES" to DIRECT= for unopened file (open to debate)
+-lio.c
+- flush stderr, stdout at end of each stmt
+- space before character strings in list output only at line start
+-lio.h
+- adjust LEW, LED consistent with old libI77
+-lread.c
+- use atof()
+- allow "nnn*," when reading complex constants
+-open.c
+- try opening for writing when open for read fails, with
+- special uwrt value (2) delaying creat() to first write;
+- set curunit so error messages don't drop core;
+- no file name ==> fort.nnn except for STATUS='SCRATCH'
+-rdfmt.c
+- use atof(); trust EOF == end-of-file (so don't read past
+- end-of-file after endfile stmt)
+-sfe.c
+- flush stderr, stdout at end of each stmt
+-wrtfmt.c:
+- use upper case
+- put wrt_E and wrt_F into wref.c, use sprintf()
+- rather than ecvt() and fcvt() [more accurate on VAX]
+-*/
+-
+-/* 16 Oct. 1988: uwrt = 3 after write, rewind, so close won't zap the file. */
+-
+-/* 10 July 1989: change _bufend to buf_end in fio.h, wsfe.c, wrtfmt.c */
+-
+-/* 28 Nov. 1989: corrections for IEEE and Cray arithmetic */
+-/* 29 Nov. 1989: change various int return types to long for f2c */
+-/* 30 Nov. 1989: various types from f2c.h */
+-/* 6 Dec. 1989: types corrected various places */
+-/* 19 Dec. 1989: make iostat= work right for internal I/O */
+-/* 8 Jan. 1990: add rsne, wsne -- routines for handling NAMELIST */
+-/* 28 Jan. 1990: have NAMELIST read treat $ as &, general white
+- space as blank */
+-/* 27 Mar. 1990: change an = to == in rd_L(rdfmt.c) so formatted reads
+- of logical values reject letters other than fFtT;
+- have nowwriting reset cf */
+-/* 14 Aug. 1990: adjust lread.c to treat tabs as spaces in list input */
+-/* 17 Aug. 1990: adjust open.c to recognize blank='Z...' as well as
+- blank='z...' when reopening an open file */
+-/* 30 Aug. 1990: prevent embedded blanks in list output of complex values;
+- omit exponent field in list output of values of
+- magnitude between 10 and 1e8; prevent writing stdin
+- and reading stdout or stderr; don't close stdin, stdout,
+- or stderr when reopening units 5, 6, 0. */
+-/* 18 Sep. 1990: add component udev to unit and consider old == new file
+- iff uinode and udev values agree; use stat rather than
+- access to check existence of file (when STATUS='OLD')*/
+-/* 2 Oct. 1990: adjust rewind.c so two successive rewinds after a write
+- don't clobber the file. */
+-/* 9 Oct. 1990: add #include "fcntl.h" to endfile.c, err.c, open.c;
+- adjust g_char in util.c for segmented memories. */
+-/* 17 Oct. 1990: replace abort() and _cleanup() with calls on
+- sig_die(...,1) (defined in main.c). */
+-/* 5 Nov. 1990: changes to open.c: complain if new= is specified and the
+- file already exists; allow file= to be omitted in open stmts
+- and allow status='replace' (Fortran 90 extensions). */
+-/* 11 Dec. 1990: adjustments for POSIX. */
+-/* 15 Jan. 1991: tweak i_ungetc in rsli.c to allow reading from
+- strings in read-only memory. */
+-/* 25 Apr. 1991: adjust namelist stuff to work with f2c -i2 */
+-/* 26 Apr. 1991: fix some bugs with NAMELIST read of multi-dim. arrays */
+-/* 16 May 1991: increase LEFBL in lio.h to bypass NeXT bug */
+-/* 17 Oct. 1991: change type of length field in sequential unformatted
+- records from int to long (for systems where sizeof(int)
+- can vary, depending on the compiler or compiler options). */
+-/* 14 Nov. 1991: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c. */
+-/* 25 Nov. 1991: change uint to Uint in lwrite.c; change sizeof(int) to
+- sizeof(uioint) in fseeks in sue.c (missed on 17 Oct.). */
+-/* 1 Dec. 1991: uio.c: add test for read failure (seq. unformatted reads);
+- adjust an error return from EOF to off end of record */
+-/* 12 Dec. 1991: rsli.c: fix bug with internal list input that caused
+- the last character of each record to be ignored.
+- iio.c: adjust error message in internal formatted
+- input from "end-of-file" to "off end of record" if
+- the format specifies more characters than the
+- record contains. */
+-/* 17 Jan. 1992: lread.c, rsne.c: in list and namelist input,
+- treat "r* ," and "r*," alike (where r is a
+- positive integer constant), and fix a bug in
+- handling null values following items with repeat
+- counts (e.g., 2*1,,3); for namelist reading
+- of a numeric array, allow a new name-value subsequence
+- to terminate the current one (as though the current
+- one ended with the right number of null values).
+- lio.h, lwrite.c: omit insignificant zeros in
+- list and namelist output. To get the old
+- behavior, compile with -DOld_list_output . */
+-/* 18 Jan. 1992: make list output consistent with F format by
+- printing .1 rather than 0.1 (introduced yesterday). */
+-/* 3 Feb. 1992: rsne.c: fix namelist read bug that caused the
+- character following a comma to be ignored. */
+-/* 19 May 1992: adjust iio.c, ilnw.c, rdfmt.c and rsli.c to make err=
+- work with internal list and formatted I/O. */
+-/* 18 July 1992: adjust rsne.c to allow namelist input to stop at
+- an & (e.g. &end). */
+-/* 23 July 1992: switch to ANSI prototypes unless KR_headers is #defined ;
+- recognize Z format (assuming 8-bit bytes). */
+-/* 14 Aug. 1992: tweak wrt_E in wref.c to avoid -NaN */
+-/* 23 Oct. 1992: Supply missing l_eof = 0 assignment to s_rsne() in rsne.c
+- (so end-of-file on other files won't confuse namelist
+- reads of external files). Prepend f__ to external
+- names that are only of internal interest to lib[FI]77. */
+-/* 1 Feb. 1993: backspace.c: fix bug that bit when last char of 2nd
+- buffer == '\n'.
+- endfile.c: guard against tiny L_tmpnam; close and reopen
+- files in t_runc().
+- lio.h: lengthen LINTW (buffer size in lwrite.c).
+- err.c, open.c: more prepending of f__ (to [rw]_mode). */
+-/* 5 Feb. 1993: tweaks to NAMELIST: rsne.c: ? prints the namelist being
+- sought; namelists of the wrong name are skipped (after
+- an error message; xwsne.c: namelist writes have a
+- newline before each new variable.
+- open.c: ACCESS='APPEND' positions sequential files
+- at EOF (nonstandard extension -- that doesn't require
+- changing data structures). */
+-/* 9 Feb. 1993: Change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO.
+- err.c: under NON_UNIX_STDIO, avoid close(creat(name,0666))
+- when the unit has another file descriptor for name. */
+-/* 4 March 1993: err.c, open.c: take declaration of fdopen from rawio.h;
+- open.c: always give f__w_mode[] 4 elements for use
+- in t_runc (in endfile.c -- for change of 1 Feb. 1993). */
+-/* 6 March 1993: uio.c: adjust off-end-of-record test for sequential
+- unformatted reads to respond to err= rather than end=. */
+-/* 12 March 1993: various tweaks for C++ */
+-/* 6 April 1993: adjust error returns for formatted inputs to flush
+- the current input line when err=label is specified.
+- To restore the old behavior (input left mid-line),
+- either adjust the #definition of errfl in fio.h or
+- omit the invocation of f__doend in err__fl (in err.c). */
+-/* 23 June 1993: iio.c: fix bug in format reversions for internal writes. */
+-/* 5 Aug. 1993: lread.c: fix bug in handling repetition counts for
+- logical data (during list or namelist input).
+- Change struct f__syl to struct syl (for buggy compilers). */
+-/* 7 Aug. 1993: lread.c: fix bug in namelist reading of incomplete
+- logical arrays. */
+-/* 9 Aug. 1993: lread.c: fix bug in namelist reading of an incomplete
+- array of numeric data followed by another namelist
+- item whose name starts with 'd', 'D', 'e', or 'E'. */
+-/* 8 Sept. 1993: open.c: protect #include "sys/..." with
+- #ifndef NON_UNIX_STDIO; Version date not changed. */
+-/* 10 Nov. 1993: backspace.c: add nonsense for #ifdef MSDOS */
+-/* 8 Dec. 1993: iio.c: adjust internal formatted reads to treat
+- short records as though padded with blanks
+- (rather than causing an "off end of record" error). */
+-/* 22 Feb. 1994: lread.c: check that realloc did not return NULL. */
+-/* 6 June 1994: Under NON_UNIX_STDIO, use binary mode for direct
+- formatted files (avoiding any confusion regarding \n). */
+-/* 5 July 1994: Fix bug (introduced 6 June 1994?) in reopening files
+- under NON_UNIX_STDIO. */
+-/* 6 July 1994: wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an
+- optimization that requires exponents to have 2 digits
+- when 2 digits suffice.
+- lwrite.c wsfe.c (list and formatted external output):
+- omit ' ' carriage-control when compiled with
+- -DOMIT_BLANK_CC . Off-by-one bug fixed in character
+- count for list output of character strings.
+- Omit '.' in list-directed printing of Nan, Infinity. */
+-/* 12 July 1994: wrtfmt.c: under G11.4, write 0. as " .0000 " rather
+- than " .0000E+00". */
+-/* 3 Aug. 1994: lwrite.c: do not insert a newline when appending an
+- oversize item to an empty line. */
+-/* 12 Aug. 1994: rsli.c rsne.c: fix glitch (reset nml_read) that kept
+- ERR= (in list- or format-directed input) from working
+- after a NAMELIST READ. */
+-/* 7 Sept. 1994: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2,
+- INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8
+- in NAMELISTs. */
+-/* 6 Oct. 1994: util.c: omit f__mvgbt, as it is never used. */
+-/* 2 Nov. 1994: add #ifdef ALWAYS_FLUSH logic. */
+-/* 26 Jan. 1995: wref.c: fix glitch in printing the exponent of 0 when
+- GOOD_SPRINTF_EXPONENT is not #defined. */
+-/* 24 Feb. 1995: iio.c: z_getc: insert (unsigned char *) to allow
+- internal reading of characters with high-bit set
+- (on machines that sign-extend characters). */
+-/* 14 March 1995:lread.c and rsfe.c: adjust s_rsle and s_rsfe to
+- check for end-of-file (to prevent infinite loops
+- with empty read statements). */
+-/* 26 May 1995: iio.c: z_wnew: fix bug in handling T format items
+- in internal writes whose last item is written to
+- an earlier position than some previous item. */
+-/* 29 Aug. 1995: backspace.c: adjust MSDOS logic. */
+-/* 6 Sept. 1995: Adjust namelist input to treat a subscripted name
+- whose subscripts do not involve colons similarly
+- to the name without a subscript: accept several
+- values, stored in successive elements starting at
+- the indicated subscript. Adjust namelist output
+- to quote character strings (avoiding confusion with
+- arrays of character strings). Adjust f_init calls
+- for people who don't use libF77's main(); now open and
+- namelist read statements invoke f_init if needed. */
+-/* 7 Sept. 1995: Fix some bugs with -DAllow_TYQUAD (for integer*8).
+- Add -DNo_Namelist_Comments lines to rsne.c. */
+-/* 5 Oct. 1995: wrtfmt.c: fix bug with t editing (f__cursor was not
+- always zeroed in mv_cur). */
+-/* 11 Oct. 1995: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c
+- to err.c */
+-/* 15 Mar. 1996: lread.c, rsfe.c: honor END= in READ stmt with empty iolist */
+-
+-/* 13 May 1996: add ftell_.c and fseek_.c */
+-/* 9 June 1996: Adjust rsli.c and lread.c so internal list input with
+- too few items in the input string will honor end= . */
+-/* 12 Sept. 1995:fmtlib.c: fix glitch in printing the most negative integer. */
+-/* 25 Sept. 1995:fmt.h: for formatted writes of negative integer*1 values,
+- make ic signed on ANSI systems. If formatted writes of
+- integer*1 values trouble you when using a K&R C compiler,
+- switch to an ANSI compiler or use a compiler flag that
+- makes characters signed. */
+-/* 9 Dec. 1996: d[fu]e.c, err.c: complain about non-positive rec=
+- in direct read and write statements.
+- ftell_.c: change param "unit" to "Unit" for -DKR_headers. */
+-/* 26 Feb. 1997: ftell_.c: on systems that define SEEK_SET, etc., use
+- SEEK_SET, SEEK_CUR, SEEK_END for *whence = 0, 1, 2. */
+-/* 7 Apr. 1997: fmt.c: adjust to complain at missing numbers in formats
+- (but still treat missing ".nnn" as ".0"). */
+-/* 11 Apr. 1997: err.c: attempt to make stderr line buffered rather
+- than fully buffered. (Buffering is needed for format
+- items T and TR.) */
+-/* 27 May 1997: ftell_.c: fix typo (that caused the third argument to be
+- treated as 2 on some systems). */
+-/* 5 Aug. 1997: lread.c: adjust to accord with a change to the Fortran 8X
+- draft (in 1990 or 1991) that rescinded permission to elide
+- quote marks in namelist input of character data; compile
+- with -DF8X_NML_ELIDE_QUOTES to get the old behavior.
+- wrtfmt.o: wrt_G: tweak to print the right number of 0's
+- for zero under G format. */
+-/* 16 Aug. 1997: iio.c: fix bug in internal writes to an array of character
+- strings that sometimes caused one more array element than
+- required by the format to be blank-filled. Example:
+- format(1x). */
+-/* 16 Sept. 1997:fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
+- with 64-bit pointers and 32-bit ints that did not 64-bit
+- align struct syl (e.g., Linux on the DEC Alpha). */
+-/* 19 Jan. 1998: backspace.c: for b->ufmt==0, change sizeof(int) to
+- sizeof(uiolen). On machines where this would make a
+- difference, it is best for portability to compile libI77 with
+- -DUIOLEN_int (which will render the change invisible). */
+-/* 4 March 1998: open.c: fix glitch in comparing file names under
+- -DNON_UNIX_STDIO */
+-/* 17 March 1998: endfile.c, open.c: acquire temporary files from tmpfile(),
+- unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
+- New buffering scheme independent of NON_UNIX_STDIO for
+- handling T format items. Now -DNON_UNIX_STDIO is no
+- longer be necessary for Linux, and libf2c no longer
+- causes stderr to be buffered -- the former setbuf or
+- setvbuf call for stderr was to make T format items work.
+- open.c: use the Posix access() function to check existence
+- or nonexistence of files, except under -DNON_POSIX_STDIO,
+- where trial fopen calls are used. */
+-/* 5 April 1998: wsfe.c: make $ format item work: this was lost in the
+- changes of 17 March 1998. */
+-/* 28 May 1998: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
+- set f__curunit sooner so various error messages will
+- correctly identify the I/O unit involved. */
+-/* 17 June 1998: lread.c: unless compiled with
+- ALLOW_FLOAT_IN_INTEGER_LIST_INPUT #defined, treat
+- floating-point numbers (containing either a decimal point
+- or an exponent field) as errors when they appear as list
+- input for integer data. */
+-/* 7 Sept. 1998: move e_wdfe from sfe.c to dfe.c, where it was originally.
+- Why did it ever move to sfe.c? */
+-/* 2 May 1999: open.c: set f__external (to get "external" versus "internal"
+- right in the error message if we cannot open the file).
+- err.c: cast a pointer difference to (int) for %d.
+- rdfmt.c: omit fixed-length buffer that could be overwritten
+- by formats Inn or Lnn with nn > 83. */
+-/* 3 May 1999: open.c: insert two casts for machines with 64-bit longs. */
+-/* 18 June 1999: backspace.c: allow for b->ufd changing in t_runc */
+-/* 27 June 1999: rsne.c: fix bug in namelist input: a misplaced increment */
+-/* could cause wrong array elements to be assigned; e.g., */
+-/* "&input k(5)=10*1 &end" assigned k(5) and k(15..23) */
+-/* 15 Nov. 1999: endfile.c: set state to writing (b->uwrt = 1) when an */
+-/* endfile statement requires copying the file. */
+-/* (Otherwise an immediately following rewind statement */
+-/* could make the file appear empty.) Also, supply a */
+-/* missing (long) cast in the sprintf call. */
+-/* sfe.c: add #ifdef ALWAYS_FLUSH logic, for formatted I/O: */
+-/* Compiling libf2c with -DALWAYS_FLUSH should prevent losing */
+-/* any data in buffers should the program fault. It also */
+-/* makes the program run more slowly. */
+-/* 20 April 2000: rsne.c, xwsne.c: tweaks that only matter if ftnint and */
+-/* ftnlen are of different fundamental types (different numbers */
+-/* of bits). Since these files will not compile when this */
+-/* change matters, the above VERSION string remains unchanged. */
+-/* 4 July 2000: adjustments to permit compilation by C++ compilers; */
+-/* VERSION string remains unchanged. */
+-/* 5 Dec. 2000: lread.c: under namelist input, when reading a logical array, */
+-/* treat Tstuff= and Fstuff= as new assignments rather than as */
+-/* logical constants. */
+-/* 22 Feb. 2001: endfile.c: adjust to use truncate() unless compiled with */
+-/* -DNO_TRUNCATE (or with -DMSDOS). */
+-/* 1 March 2001: endfile.c: switch to ftruncate (absent -DNO_TRUNCATE), */
+-/* thus permitting truncation of scratch files on true Unix */
+-/* systems, where scratch files have no name. Add an fflush() */
+-/* (surprisingly) needed on some Linux systems. */
+-/* 11 Oct. 2001: backspac.c dfe.c due.c endfile.c err.c fio.h fmt.c fmt.h */
+-/* inquire.c open.c rdfmt.c sue.c util.c: change fseek and */
+-/* ftell to FSEEK and FTELL (#defined to be fseek and ftell, */
+-/* respectively, in fio.h unless otherwise #defined), and use */
+-/* type OFF_T (#defined to be long unless otherwise #defined) */
+-/* to permit handling files over 2GB long where possible, */
+-/* with suitable -D options, provided for some systems in new */
+-/* header file sysdep1.h (copied from sysdep1.h0 by default). */
+-/* 15 Nov. 2001: endfile.c: add FSEEK after FTRUNCATE. */
+-/* 28 Nov. 2001: fmt.h lwrite.c wref.c and (new) signbit.c: on IEEE systems, */
+-/* print -0 as -0 when compiled with -DSIGNED_ZEROS. See */
+-/* comments in makefile or (better) libf2c/makefile.* . */
+-/* 6 Sept. 2002: rsne.c: fix bug with multiple repeat counts in reading */
+-/* namelists, e.g., &nl a(2) = 3*1.0, 2*2.0, 3*3.0 / */
+-/* 21 March 2003: err.c: before writing to a file after reading from it, */
+-/* f_seek(file, 0, SEEK_CUR) to make writing legal in ANSI C. */
+//GO.SYSIN DD libI77/i77vers.c
+echo libI77/sysdep1.h0 1>&2
+sed >libI77/sysdep1.h0 <<'//GO.SYSIN DD libI77/sysdep1.h0' 's/^-//'
+-#ifndef SYSDEP_H_INCLUDED
+-#define SYSDEP_H_INCLUDED
+-#undef USE_LARGEFILE
+-#ifndef NO_LONG_LONG
+-
+-#ifdef __sun__
+-#define USE_LARGEFILE
+-#define OFF_T off64_t
+-#endif
+-
+-#ifdef __linux__
+-#define USE_LARGEFILE
+-#define OFF_T __off64_t
+-#endif
+-
+-#ifdef _AIX43
+-#define _LARGE_FILES
+-#define _LARGE_FILE_API
+-#define USE_LARGEFILE
+-#endif /*_AIX43*/
+-
+-#ifdef __hpux
+-#define _FILE64
+-#define _LARGEFILE64_SOURCE
+-#define USE_LARGEFILE
+-#endif /*__hpux*/
+-
+-#ifdef __sgi
+-#define USE_LARGEFILE
+-#endif /*__sgi*/
+-
+-#ifdef __FreeBSD__
+-#define OFF_T off_t
+-#define FSEEK fseeko
+-#define FTELL ftello
+-#endif
+-
+-#ifdef USE_LARGEFILE
+-#ifndef OFF_T
+-#define OFF_T off64_t
+-#endif
+-#define _LARGEFILE_SOURCE
+-#define _LARGEFILE64_SOURCE
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#define FOPEN fopen64
+-#define FREOPEN freopen64
+-#define FSEEK fseeko64
+-#define FSTAT fstat64
+-#define FTELL ftello64
+-#define FTRUNCATE ftruncate64
+-#define STAT stat64
+-#define STAT_ST stat64
+-#endif /*USE_LARGEFILE*/
+-#endif /*NO_LONG_LONG*/
+-
+-#ifndef NON_UNIX_STDIO
+-#ifndef USE_LARGEFILE
+-#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
+-#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
+-#include "sys/types.h"
+-#include "sys/stat.h"
+-#endif
+-#endif
+-
+-#endif /*SYSDEP_H_INCLUDED*/
+//GO.SYSIN DD libI77/sysdep1.h0
+echo libI77/ftell64_.c 1>&2
+sed >libI77/ftell64_.c <<'//GO.SYSIN DD libI77/ftell64_.c' 's/^-//'
+-#include "f2c.h"
+-#include "fio.h"
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+- static FILE *
+-#ifdef KR_headers
+-unit_chk(Unit, who) integer Unit; char *who;
+-#else
+-unit_chk(integer Unit, char *who)
+-#endif
+-{
+- if (Unit >= MXUNIT || Unit < 0)
+- f__fatal(101, who);
+- return f__units[Unit].ufd;
+- }
+-
+- longint
+-#ifdef KR_headers
+-ftell64_(Unit) integer *Unit;
+-#else
+-ftell64_(integer *Unit)
+-#endif
+-{
+- FILE *f;
+- return (f = unit_chk(*Unit, "ftell")) ? FTELL(f) : -1L;
+- }
+-
+- int
+-#ifdef KR_headers
+-fseek64_(Unit, offset, whence) integer *Unit, *whence; longint *offset;
+-#else
+-fseek64_(integer *Unit, longint *offset, integer *whence)
+-#endif
+-{
+- FILE *f;
+- int w = (int)*whence;
+-#ifdef SEEK_SET
+- static int wohin[3] = { SEEK_SET, SEEK_CUR, SEEK_END };
+-#endif
+- if (w < 0 || w > 2)
+- w = 0;
+-#ifdef SEEK_SET
+- w = wohin[w];
+-#endif
+- return !(f = unit_chk(*Unit, "fseek"))
+- || FSEEK(f, (OFF_T)*offset, w) ? 1 : 0;
+- }
+-#ifdef __cplusplus
+-}
+-#endif
+//GO.SYSIN DD libI77/ftell64_.c
+echo libI77/signbit.c 1>&2
+sed >libI77/signbit.c <<'//GO.SYSIN DD libI77/signbit.c' 's/^-//'
+-#include "arith.h"
+-
+-#ifndef Long
+-#define Long long
+-#endif
+-
+- int
+-#ifdef KR_headers
+-signbit_f2c(x) double *x;
+-#else
+-signbit_f2c(double *x)
+-#endif
+-{
+-#ifdef IEEE_MC68k
+- if (*(Long*)x & 0x80000000)
+- return 1;
+-#else
+-#ifdef IEEE_8087
+- if (((Long*)x)[1] & 0x80000000)
+- return 1;
+-#endif /*IEEE_8087*/
+-#endif /*IEEE_MC68k*/
+- return 0;
+- }
+//GO.SYSIN DD libI77/signbit.c
+echo libI77/libI77.xsum 1>&2
+sed >libI77/libI77.xsum <<'//GO.SYSIN DD libI77/libI77.xsum' 's/^-//'
+-Notice 76f23b4 1212
+-README f35cf24 10373
+-backspace.c 10ebf554 1328
+-close.c 173f01de 1393
+-dfe.c 1d658105 2624
+-dolio.c 19c9fbd9 471
+-due.c ee219f6d 1624
+-endfile.c 6f7201d 2838
+-err.c fea5c2a7 6189
+-f2ch.add ef66bf17 6060
+-fio.h f9389f5f 2932
+-fmt.c cdfb2a1 8361
+-fmt.h f5dd2afb 1970
+-fmtlib.c eefc6a27 865
+-fp.h 100fb355 665
+-ftell64_.c e2c4b21e 917
+-ftell_.c e845eedb 894
+-i77vers.c f57b8ef2 18128
+-iio.c f958b627 2639
+-ilnw.c fe0ab14b 1125
+-inquire.c 1883d542 2732
+-lio.h a087b39 1564
+-lread.c eb3c2be3 14705
+-lwrite.c f80da63f 4616
+-makefile e31c232c 2856
+-open.c a2fe776 5625
+-rawio.h 1ab49f7c 718
+-rdfmt.c ffbd74b2 8858
+-rewind.c e4c6236f 475
+-rsfe.c eb9e882c 1492
+-rsli.c 11f59b61 1785
+-rsne.c 1b1e1814 11551
+-sfe.c d24f06 767
+-signbit.c e37eac06 330
+-sue.c 9705ecf 1865
+-sysdep1.h0 1812022d 1202
+-typesize.c eee307ae 386
+-uio.c e354a770 1619
+-util.c e526349d 902
+-wref.c 17bbfb7b 4747
+-wrtfmt.c 113fc4f9 7506
+-wsfe.c f2d1fe4d 1280
+-wsle.c fe50b4c9 697
+-wsne.c 428bfda 479
+-xwsne.c 185c4bdc 1174
+//GO.SYSIN DD libI77/libI77.xsum