print dummy procedures and parameter variables more-or-less correctly.
SCCS-vsn: old/dbx/fortran.c 5.3
-static char sccsid[] = "@(#)fortran.c 5.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)fortran.c 5.3 (Berkeley) %G%";
#endif not lint
static char rcsid[] = "$Header: fortran.c,v 1.5 84/12/26 10:39:37 linton Exp $";
#endif not lint
static char rcsid[] = "$Header: fortran.c,v 1.5 84/12/26 10:39:37 linton Exp $";
#include "runtime.h"
#include "machine.h"
#include "runtime.h"
#include "machine.h"
-#define isfloat(range) ( \
+#define isspecial(range) ( \
range->symvalue.rangev.upper == 0 and range->symvalue.rangev.lower > 0 \
)
range->symvalue.rangev.upper == 0 and range->symvalue.rangev.lower > 0 \
)
case CONST:
printf("parameter %s = ", symname(s));
case CONST:
printf("parameter %s = ", symname(s));
+ eval(s->symvalue.constval);
switch (s->symvalue.rangev.lower) {
switch (s->symvalue.rangev.lower) {
+ case sizeof(short):
+ if (istypename(s->type, "logical*2")) {
+ printlogical(pop(short));
+ }
+ break;
+
+ if (istypename(s->type, "logical")) {
+ printlogical(pop(long));
+ } else {
+ prtreal(pop(float));
+ }
break;
case sizeof(double):
break;
case sizeof(double):
- if (istypename(s->type,"complex")) {
+ if (istypename(s->type, "complex")) {
d2 = pop(float);
d1 = pop(float);
printf("(");
d2 = pop(float);
d1 = pop(float);
printf("(");
- panic("bad size \"%d\" for real",
+ panic("bad size \"%d\" for special",
s->symvalue.rangev.lower);
break;
}
s->symvalue.rangev.lower);
break;
}
+/*
+ * Print out a logical
+ */
+
+private printlogical(i)
+Integer i;
+{
+ if (i == 0) {
+ printf(".false.");
+ } else {
+ printf(".true.");
+ }
+}
+
Integer i;
register Symbol t;
{
Integer i;
register Symbol t;
{
- if (istypename(t->type, "logical")) {
- printf(((Boolean) i) == true ? "true" : "false");
- }
- else if ( (t->type == t_int) or istypename(t->type, "integer") or
+ if ( (t->type == t_int) or istypename(t->type, "integer") or
istypename(t->type,"integer*2") ) {
printf("%ld", i);
istypename(t->type,"integer*2") ) {
printf("%ld", i);
+ } else if (istypename(t->type, "addr")) {
+ printf("0x%lx", i);
- error("unkown type in fortran printint");
+ error("unknown type in fortran printint");