Run-time error using f2c output while reading a file

I ran f2c and successfully compiled the output C code. But, while attempting to read an input file the program aborts. Do you know why?

I’ve reduced the number of lines of code in these files to show the runtime error.

Background (f2c command):

/opt/src/f2c -Nn1604 fruit.f

File produced by running f2c:

#include "f2c.h"

struct {
    integer npairs, iorange;
} orange_;

#define orange_1 orange_

integer c__9 = 9;
integer c__1 = 1;
integer c__20 = 20;
integer c__2 = 2;
integer c__3 = 3;

int MAIN__()
{
    inlist ioin__1;

    integer s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), 
            e_wsle(void), s_rsle(cilist *), e_rsle(void), f_inqu(inlist *);
    int s_stop(char *, ftnlen);

    logical ok;
    integer iflg;
    char ifile[32];
    integer iunit;

    extern int reveal_(integer *, char *, integer *, integer *, integer *, ftnlen);

    cilist io___4 = { 0, 6, 0, 0, 0 };
    cilist io___5 = { 0, 5, 0, 0, 0 };
    cilist io___8 = { 0, 6, 0, 0, 0 };
    cilist io___11 = { 1, 0, 0, 0, 0 };
    cilist io___31 = { 0, 6, 0, 0, 0 };

    s_wsle(&io___4);
    do_lio(&c__9, &c__1, "Type the name of the input file to use" ":", (ftnlen)53);
    e_wsle();
    s_rsle(&io___5);
    do_lio(&c__9, &c__1, ifile, (ftnlen)32);
    e_rsle();
    iunit = 1;
    s_wsle(&io___8);
    do_lio(&c__9, &c__1, " Taking Input", (ftnlen)19);
    e_wsle();

    ioin__1.inerr = 0;
    ioin__1.infilen = 32;
    ioin__1.infile = ifile;
    ioin__1.inex = &ok;
    ioin__1.inopen = 0;
    ioin__1.innum = 0;
    ioin__1.innamed = 0;
    ioin__1.inname = 0;
    ioin__1.inacc = 0;
    ioin__1.inseq = 0;
    ioin__1.indir = 0;
    ioin__1.infmt = 0;
    ioin__1.inform = 0;
    ioin__1.inunf = 0;
    ioin__1.inrecl = 0;
    ioin__1.innrec = 0;
    ioin__1.inblank = 0;
    f_inqu(&ioin__1);

    reveal_(&iunit, ifile, &c__20, &c__2, &iflg, (ftnlen)32);

    io___11.ciunit = iunit;
    (void) s_rsle(&io___11);
    (void) do_lio(&c__3, &c__1, (char *)&orange_.npairs, (ftnlen)sizeof(integer));
    s_wsle(&io___31);

    return 0;
} 

File f2c.h:

typedef long int integer;
typedef long int logical;
typedef long int flag;
typedef long int ftnlen;
typedef long int ftnint;
typedef long int ftnlen;

typedef struct
{	flag cierr;
	ftnint ciunit;
	flag ciend;
	char *cifmt;
	ftnint cirec;
} cilist;

typedef struct
{	flag inerr;
	ftnint inunit;
	char *infile;
	ftnlen infilen;
	ftnint	*inex;	/*parameters in standard's order*/
	ftnint	*inopen;
	ftnint	*innum;
	ftnint	*innamed;
	char	*inname;
	ftnlen	innamlen;
	char	*inacc;
	ftnlen	inacclen;
	char	*inseq;
	ftnlen	inseqlen;
	char 	*indir;
	ftnlen	indirlen;
	char	*infmt;
	ftnlen	infmtlen;
	char	*inform;
	ftnint	informlen;
	char	*inunf;
	ftnlen	inunflen;
	ftnint	*inrecl;
	ftnint	*innrec;
	char	*inblank;
	ftnlen	inblanklen;
} inlist;

File reveal.f:

      SUBROUTINE REVEAL(IUNIT,FILENAME,NUMC,OPERATINGSYS,FLAG)
      IMPLICIT NONE
      CHARACTER FILENAME*(*)
      LOGICAL SUCCESS
      INTEGER IUNIT,NUMC,OPERATINGSYS,FLAG
      INQUIRE(FILE=FILENAME(1:NUMC),EXIST=SUCCESS)
      OPEN(IUNIT,FILE=FILENAME(1:NUMC),STATUS='OLD',ERR=90)
      GOTO 99
90    FLAG=1
C
99    RETURN
      END

Makefile for reveal.f:

LIBRARY1		= ../library

FLAGS		= -g -fPIC -std=legacy

.SUFFIXES : .o .f
.f.o:
	gfortran $(FLAGS) -c $*.f

SOURCE		= reveal.f

OBJECTFILES		= $(SOURCE:.f=.o) 

LIBRARY		= $(LIBRARY1)/libraryreveal.a

LIBRARY:	$(OBJECTF) 
		ar rvu $(LIBRARY) $(OBJECTFILES)
		ranlib $(LIBRARY)
		@echo "done"

Compilation of fruit.c with libraryreveal.a

cc -o fruit fruit.c ../library/libraryreveal.a -DLINUX -DSYSV -DNOHLA -g -Wall -Werror -fmax-errors=100 -lgfortran -lpthread -L/opt/libf2c -lf2c -lm

I’ve attached a screen dump showing a run in gdb.

Here’s the box input file:

1
1 38.608686 128.351871 0.003000 1 1 99999999 2.00000
1 1 2.000000 2.000000 80.000000 30.000000 2.000000