[comp.sys.amiga.programmer] Question about AC/FORTRAN and a visit from the GURU

@utrcgw.utc.com:mark@ardnt1 (mark) (03/11/91)

  I have a question for anyone out there that uses (or has used) the
Absoft Fortran compiler.  I recently purchased version 2.3 (I think)
of the AC/Fortran compiler from someone on the net.

  After testing the compiler with some simple little codes, I brought
home some code from work that I wanted to "port".  I made the few
changes to the source that I knew I would have to make, and attempted
to compile it.  After about 30 seconds, I said hello to the GURU
(GURU #00000003.00C12130).

  The code that I'm tried to compile is not large, approximately 20K
( 12 subroutines and 8 functions ), but I started to play around with
the stack size and heap size just in case that was the problem.  But
the guru keeps showing up.

  At this point, I tried to compile something smaller, but I would
still guru, with a similar guru number (#00000003.--------).  I'm
typing this from memory, but the smaller code was similar to the 
following:

cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c
c   Start of "test.f"
c
	Program Test

	Include StdIO.cmn

	Write(*,'('' TOK_STR = '',I3)') TOK_STR

	Stop
	End
c
c   End of "test.f"
c
************************************************************************
*
*  Include file : StdIO.cmn
*
	Integer
     :			  TOK_NUL
     :			, TOK_HEL
     :			, TOK_STR
     :			, TOK_NUM
     :			, Num_WS
     :			, Ipos1
     :			, Ipos2
     :			, Input_Length

	Parameter ( TOK_NUL  = 0 )
	Parameter ( TOK_HEL  = 1 )
	Parameter ( TOK_STR  = 2 )
	Parameter ( TOK_NUM  = 3 )

	Parameter ( Num_WS = 5 )

	Real
     :			  TOK_VALUE

	Character
     :			  Input_String*80
     :			, TOK_STRING*80
     :	                , DIGITS*13
     :			, WhiteSpace*6
     :			, TAB*1
     :			, BLANK*1
     :                  , COMMA*1
     :                  , EQUAL*1
     :                  , COLON*1
     :                  , SEMI*1
     :                  , QMARK*1
     :	                , SQUOTE*1
     :	                , DQUOTE*1
     :                  , NULL*1
c
c  ascii characters
c
	Parameter ( NULL   = CHAR(  0 ) )
	Parameter ( TAB    = CHAR(  9 ) )
	Parameter ( BLANK  = CHAR( 32 ) )
	Parameter ( COMMA  = CHAR( 44 ) )
	Parameter ( COLON  = CHAR( 58 ) )
	Parameter ( SEMI   = CHAR( 59 ) )
	Parameter ( EQUAL  = CHAR( 61 ) )
	Parameter ( QMARK  = CHAR( 63 ) )

	Parameter ( DQUOTE = CHAR( 34 ) )    ! <">
	Parameter ( SQUOTE = CHAR( 39 ) )    ! <'>

	DATA WhiteSpace(1:1) / BLANK / , 
     :       WhiteSpace(2:2) / TAB   / ,
     :	     WhiteSpace(3:3) / COMMA / , 
     :	     WhiteSpace(4:4) / EQUAL / ,
     :	     WhiteSpace(5:5) / COLON / ,
     :	     WhiteSpace(6:6) / SEMI  / 

	DATA DIGITS     / '0123456789+-.' /

	DATA Ipos1 / 81 /
	DATA Ipos2 / 80 /
	DATA Input_Length / 0 /

	DATA Input_String / ' ' /

	COMMON /StdIO/ 
     :		       Input_String, TOK_STRING, TOK_VALUE, WhiteSpace
     :		     , Ipos1, Ipos2, Input_Length, DIGITS

********************  end-of-file : StdIO.cmn **************************


  I compiled the above with the following:

	f77 -KU test.f

  I'm running on a A1000 with 1.5M of memory.

  If anyone can :

	offer any suggestions
	tell me what that GURU number means 
	tell me how stupid I am, because I forgot to do such-and-such

  it would be much appreciated.



Thanks in advance,

Mark

------------------------------------------------------------------------------
| Mark Stucky                         | Email:                               |
| United Technologies Research Center |   mark%ardnt1@utrcgw.utc.com         |
| East Hartford, CT.                  |   mast%utrc@utrcgw.utc.com           |
| My opinions do not necessarily represent the opinions of my employer.      |
------------------------------------------------------------------------------

rbw@lanl.gov (Bob Walker) (03/12/91)

I'm posting an answer to Mark Stucky's AC/FORTRAN question, since
my machine can't find his by email:

In an earlier message, Mark Stucky (mark%ardnt1@utrcgw.utc.com) asks:

> I have a question for anyone out there that uses (or has used) the
> Absoft Fortran compiler. [ ... details deleted ...] After about 30 
> seconds, I said hello to the GURU (GURU #00000003.00C12130).

Mark, there are several problems with the source code.  The compiler
shouldn't toss its cookies over them, and the fact that it crashes
when you try to compile your code is a bug with the compiler.  This
is the first example I've seen of the compiler crashing like that
in several years of using V2.3 (that's to make you feel better (?)).

I made several changes to your code.  First you cannot initialize
data into common blocks, and so the data statements in the include
file have to go.  Put them into a block data subroutine, and make
sure the data statements follow the variable and common declarations,
or else you'll get compiler errors there too.

There are two possible places where the compiler may have crashed --
(1) I am always nervous about using too many colons (you use colons to
indicate continuation cards).  I have had the compiler get things
wrong with colons (although only inside character strings) so I avoid
them.  I know you shouldn't have to, and I don't really think that's
the problem.  I changed them anyway.  The more likely problem is that
you use a construct like this to initialize character data:

	Parameter ( TAB    = CHAR(  9 ) )
	Parameter ( QMARK  = CHAR( 63 ) )

I don't think you can use the CHAR function inside the parameter
statement.  For printing variables, you can do the following:

        Parameter ( QMARK  = '?' )

and for non-printing ones you can initialize to integers, as in:

        Parameter ( TAB    =  9  )

A final observation: you mix character data types with others
(integers) in the common block declaration.  That's OK on many
machines (including the Amiga), and not on others (like CRAYs).  I
would suggest for portability you break up any commons that have both
character data and anything else. 

If you can find a mail path from you to me, I will be happy to
email you the sources that I managed to get to execute OK.

Bob Walker
rbw@t12.lanl.gov

      

ben@epmooch.UUCP (Rev. Ben A. Mesander) (03/15/91)

>In article <2148@public.BTR.COM> thad@public.BTR.COM (Thaddeus P. Floryan) writes:
[...]
>Point being: to this day, I still have a "STACK 75000" in the startup on
>all my Amigas.  Give that a try and see if your guru goes on a retreat in
>a place far, far away!  :-)

Gee, all I can say is you must not use GCC much, or you would have
something like STACK 130000 in your startup script... 

:-)

Seriously, do any Amiga C compilers automagically extend the stack, like
the C compiler can on my Prime 9955 II? When a stack frame gets too big
for its alloca()'d chunk, it just grabs another chunk and continues to 
use it. That would be nice, not only for the compiler, but for the code
it produces...

>Thad Floryan [ thad@btr.com (OR) {decwrl, mips, fernwood}!btr!thad ]

--
| ben@epmooch.UUCP   (Ben Mesander)       | "Cash is more important than |
| ben%servalan.UUCP@uokmax.ecn.uoknor.edu |  your mother." - Al Shugart, |
| !chinet!uokmax!servalan!epmooch!ben     |  CEO, Seagate Technologies   |

thad@public.BTR.COM (Thaddeus P. Floryan) (03/15/91)

In article <47189@nigel.ee.udel.edu> @utrcgw.utc.com:mark@ardnt1 (mark) writes:
>
>  I have a question for anyone out there that uses (or has used) the
>Absoft Fortran compiler.  I recently purchased version 2.3 (I think)
> [...]
>  After testing the compiler with some simple little codes, I brought
>home some code from work that I wanted to "port".  I made the few
>changes to the source that I knew I would have to make, and attempted
>to compile it.  After about 30 seconds, I said hello to the GURU
>(GURU #00000003.00C12130).
> [...]

The MOST important thing to do when compiling/linking or running programs
created using the AbSoft product is to assure you've a LARGE stack allocated.

In their version 2.2 docs the number 75000 (i.e. "CLI> stack 75000") comes
to mind.

Back in 1985/1986 I successfully ported a multi-module (about 100+ source
files) program from one of my DEC-20 to the Amiga all in one afternoon,
forming a 450,000 byte executable which still runs to this day with all the
same capabilities as the mainframe version.  I only had to alter two READ
statements and one COMMON ... everything else ported nicely,

I still laugh while remembering it took someone else over 18 months to
port a stripped-down version of that same program from the same sources
to an IBM/PC!  :-)

The program is a commercial product and can even be found in the AT&T UNIX
Computer Software Catalog, though my company no longer markets it.  For the
curious, its name (the product) is VUE (a project management and scheduling
system).  'Tis a shame I did the Amiga port THEN because there was no market
for such products on the Amiga at THAT time, and today I no longer have the
rights to distribute that product commercially.

Point being: to this day, I still have a "STACK 75000" in the startup on
all my Amigas.  Give that a try and see if your guru goes on a retreat in
a place far, far away!  :-)

Thad Floryan [ thad@btr.com (OR) {decwrl, mips, fernwood}!btr!thad ]