583 lines
14 KiB
C
583 lines
14 KiB
C
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
|
This file is part of GNU Fortran run-time library.
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Library General Public License as published
|
|
by the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
GNU Fortran is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with GNU Fortran; see the file COPYING.LIB. If
|
|
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA. */
|
|
|
|
#include <math.h> /* for j0 et al */
|
|
#include <f2c.h>
|
|
typedef void *sig_proc; /* For now, this will have to do. */
|
|
|
|
#ifdef Labort
|
|
int abort_ (void) {
|
|
extern int G77_abort_0 (void);
|
|
return G77_abort_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lderf
|
|
double derf_ (doublereal *x) {
|
|
extern double G77_derf_0 (doublereal *x);
|
|
return G77_derf_0 (x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lderfc
|
|
double derfc_ (doublereal *x) {
|
|
extern double G77_derfc_0 (doublereal *x);
|
|
return G77_derfc_0 (x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lef1asc
|
|
int ef1asc_ (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) {
|
|
extern int G77_ef1asc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb);
|
|
return G77_ef1asc_0 (a, la, b, lb);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lef1cmc
|
|
integer ef1cmc_ (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) {
|
|
extern integer G77_ef1cmc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb);
|
|
return G77_ef1cmc_0 (a, la, b, lb);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lerf
|
|
double erf_ (real *x) {
|
|
extern double G77_erf_0 (real *x);
|
|
return G77_erf_0 (x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lerfc
|
|
double erfc_ (real *x) {
|
|
extern double G77_erfc_0 (real *x);
|
|
return G77_erfc_0 (x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lexit
|
|
void exit_ (integer *rc) {
|
|
extern void G77_exit_0 (integer *rc);
|
|
G77_exit_0 (rc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetarg
|
|
void getarg_ (ftnint *n, char *s, ftnlen ls) {
|
|
extern void G77_getarg_0 (ftnint *n, char *s, ftnlen ls);
|
|
G77_getarg_0 (n, s, ls);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetenv
|
|
void getenv_ (char *fname, char *value, ftnlen flen, ftnlen vlen) {
|
|
extern void G77_getenv_0 (char *fname, char *value, ftnlen flen, ftnlen vlen);
|
|
G77_getenv_0 (fname, value, flen, vlen);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Liargc
|
|
ftnint iargc_ (void) {
|
|
extern ftnint G77_iargc_0 (void);
|
|
return G77_iargc_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsignal
|
|
void *signal_ (integer *sigp, sig_proc proc) {
|
|
extern void *G77_signal_0 (integer *sigp, sig_proc proc);
|
|
return G77_signal_0 (sigp, proc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsystem
|
|
integer system_ (char *s, ftnlen n) {
|
|
extern integer G77_system_0 (char *s, ftnlen n);
|
|
return G77_system_0 (s, n);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lflush
|
|
int flush_ (void) {
|
|
extern int G77_flush_0 (void);
|
|
return G77_flush_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lftell
|
|
integer ftell_ (integer *Unit) {
|
|
extern integer G77_ftell_0 (integer *Unit);
|
|
return G77_ftell_0 (Unit);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfseek
|
|
integer fseek_ (integer *Unit, integer *offset, integer *xwhence) {
|
|
extern integer G77_fseek_0 (integer *Unit, integer *offset, integer *xwhence);
|
|
return G77_fseek_0 (Unit, offset, xwhence);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Laccess
|
|
integer access_ (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode) {
|
|
extern integer G77_access_0 (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode);
|
|
return G77_access_0 (name, mode, Lname, Lmode);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lalarm
|
|
integer alarm_ (integer *seconds, sig_proc proc,
|
|
integer *status __attribute__ ((__unused__))) {
|
|
extern integer G77_alarm_0 (integer *seconds, sig_proc proc);
|
|
return G77_alarm_0 (seconds, proc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lbesj0
|
|
double besj0_ (const real *x) {
|
|
return j0 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lbesj1
|
|
double besj1_ (const real *x) {
|
|
return j1 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lbesjn
|
|
double besjn_ (const integer *n, real *x) {
|
|
return jn (*n, *x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lbesy0
|
|
double besy0_ (const real *x) {
|
|
return y0 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lbesy1
|
|
double besy1_ (const real *x) {
|
|
return y1 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lbesyn
|
|
double besyn_ (const integer *n, real *x) {
|
|
return yn (*n, *x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lchdir
|
|
integer chdir_ (const char *name, const ftnlen Lname) {
|
|
extern integer G77_chdir_0 (const char *name, const ftnlen Lname);
|
|
return G77_chdir_0 (name, Lname);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lchmod
|
|
integer chmod_ (const char *name, const char *mode, const ftnlen Lname, const ftnlen Lmode) {
|
|
extern integer G77_chmod_0 (const char *name, const char *mode, const ftnlen Lname, const ftnlen Lmode);
|
|
return G77_chmod_0 (name, mode, Lname, Lmode);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lctime
|
|
void ctime_ (char *chtime, const ftnlen Lchtime, longint *xstime) {
|
|
extern void G77_ctime_0 (char *chtime, const ftnlen Lchtime, longint *xstime);
|
|
G77_ctime_0 (chtime, Lchtime, xstime);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldate_y2kbuggy
|
|
int date_ (char *buf, ftnlen buf_len) {
|
|
/* Fail to link, so user sees attempt to invoke non-Y2K-compliant
|
|
routine. */
|
|
extern int G77_date_y2kbuggy_0 (char *buf, ftnlen buf_len);
|
|
return G77_date_y2kbuggy_0 (buf, buf_len);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldate_y2kbug
|
|
int date_y2kbug__ (char *buf, ftnlen buf_len) {
|
|
/* If user wants to invoke the non-Y2K-compliant routine via
|
|
an `EXTERNAL' interface, avoiding the warning via g77's
|
|
`INTRINSIC' interface, force coding of "y2kbug" string in
|
|
user's program. */
|
|
extern int G77_date_y2kbug_0 (char *buf, ftnlen buf_len);
|
|
return G77_date_y2kbug_0 (buf, buf_len);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldbesj0
|
|
double dbesj0_ (const double *x) {
|
|
return j0 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldbesj1
|
|
double dbesj1_ (const double *x) {
|
|
return j1 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldbesjn
|
|
double dbesjn_ (const integer *n, double *x) {
|
|
return jn (*n, *x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldbesy0
|
|
double dbesy0_ (const double *x) {
|
|
return y0 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldbesy1
|
|
double dbesy1_ (const double *x) {
|
|
return y1 (*x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldbesyn
|
|
double dbesyn_ (const integer *n, double *x) {
|
|
return yn (*n, *x);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ldtime
|
|
double dtime_ (real tarray[2]) {
|
|
extern double G77_dtime_0 (real tarray[2]);
|
|
return G77_dtime_0 (tarray);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Letime
|
|
double etime_ (real tarray[2]) {
|
|
extern double G77_etime_0 (real tarray[2]);
|
|
return G77_etime_0 (tarray);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfdate
|
|
void fdate_ (char *ret_val, ftnlen ret_val_len) {
|
|
extern void G77_fdate_0 (char *ret_val, ftnlen ret_val_len);
|
|
G77_fdate_0 (ret_val, ret_val_len);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfgetc
|
|
integer fgetc_ (const integer *lunit, char *c, ftnlen Lc) {
|
|
extern integer G77_fgetc_0 (const integer *lunit, char *c, ftnlen Lc);
|
|
return G77_fgetc_0 (lunit, c, Lc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfget
|
|
integer fget_ (char *c, const ftnlen Lc) {
|
|
extern integer G77_fget_0 (char *c, const ftnlen Lc);
|
|
return G77_fget_0 (c, Lc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lflush1
|
|
int flush1_ (const integer *lunit) {
|
|
extern int G77_flush1_0 (const integer *lunit);
|
|
return G77_flush1_0 (lunit);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfnum
|
|
integer fnum_ (integer *lunit) {
|
|
extern integer G77_fnum_0 (integer *lunit);
|
|
return G77_fnum_0 (lunit);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfputc
|
|
integer fputc_ (const integer *lunit, const char *c, const ftnlen Lc) {
|
|
extern integer G77_fputc_0 (const integer *lunit, const char *c, const ftnlen Lc);
|
|
return G77_fputc_0 (lunit, c, Lc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfput
|
|
integer fput_ (const char *c, const ftnlen Lc) {
|
|
extern integer G77_fput_0 (const char *c, const ftnlen Lc);
|
|
return G77_fput_0 (c, Lc);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lfstat
|
|
integer fstat_ (const integer *lunit, integer statb[13]) {
|
|
extern integer G77_fstat_0 (const integer *lunit, integer statb[13]);
|
|
return G77_fstat_0 (lunit, statb);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgerror
|
|
int gerror_ (char *str, ftnlen Lstr) {
|
|
extern int G77_gerror_0 (char *str, ftnlen Lstr);
|
|
return G77_gerror_0 (str, Lstr);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetcwd
|
|
integer getcwd_ (char *str, const ftnlen Lstr) {
|
|
extern integer G77_getcwd_0 (char *str, const ftnlen Lstr);
|
|
return G77_getcwd_0 (str, Lstr);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetgid
|
|
integer getgid_ (void) {
|
|
extern integer G77_getgid_0 (void);
|
|
return G77_getgid_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetlog
|
|
int getlog_ (char *str, const ftnlen Lstr) {
|
|
extern int G77_getlog_0 (char *str, const ftnlen Lstr);
|
|
return G77_getlog_0 (str, Lstr);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetpid
|
|
integer getpid_ (void) {
|
|
extern integer G77_getpid_0 (void);
|
|
return G77_getpid_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgetuid
|
|
integer getuid_ (void) {
|
|
extern integer G77_getuid_0 (void);
|
|
return G77_getuid_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lgmtime
|
|
int gmtime_ (const integer *stime, integer tarray[9]) {
|
|
extern int G77_gmtime_0 (const integer *stime, integer tarray[9]);
|
|
return G77_gmtime_0 (stime, tarray);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lhostnm
|
|
integer hostnm_ (char *name, ftnlen Lname) {
|
|
extern integer G77_hostnm_0 (char *name, ftnlen Lname);
|
|
return G77_hostnm_0 (name, Lname);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lidate
|
|
int idate_ (int iarray[3]) {
|
|
extern int G77_idate_0 (int iarray[3]);
|
|
return G77_idate_0 (iarray);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lierrno
|
|
integer ierrno_ (void) {
|
|
extern integer G77_ierrno_0 (void);
|
|
return G77_ierrno_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lirand
|
|
integer irand_ (integer *flag) {
|
|
extern integer G77_irand_0 (integer *flag);
|
|
return G77_irand_0 (flag);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lisatty
|
|
logical isatty_ (integer *lunit) {
|
|
extern logical G77_isatty_0 (integer *lunit);
|
|
return G77_isatty_0 (lunit);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Litime
|
|
int itime_ (integer tarray[3]) {
|
|
extern int G77_itime_0 (integer tarray[3]);
|
|
return G77_itime_0 (tarray);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lkill
|
|
integer kill_ (const integer *pid, const integer *signum) {
|
|
extern integer G77_kill_0 (const integer *pid, const integer *signum);
|
|
return G77_kill_0 (pid, signum);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Llink
|
|
integer link_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
|
|
extern integer G77_link_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
|
|
return G77_link_0 (path1, path2, Lpath1, Lpath2);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Llnblnk
|
|
integer lnblnk_ (char *str, ftnlen str_len) {
|
|
extern integer G77_lnblnk_0 (char *str, ftnlen str_len);
|
|
return G77_lnblnk_0 (str, str_len);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Llstat
|
|
integer lstat_ (const char *name, integer statb[13], const ftnlen Lname) {
|
|
extern integer G77_lstat_0 (const char *name, integer statb[13], const ftnlen Lname);
|
|
return G77_lstat_0 (name, statb, Lname);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lltime
|
|
int ltime_ (const integer *stime, integer tarray[9]) {
|
|
extern int G77_ltime_0 (const integer *stime, integer tarray[9]);
|
|
return G77_ltime_0 (stime, tarray);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lmclock
|
|
longint mclock_ (void) {
|
|
extern longint G77_mclock_0 (void);
|
|
return G77_mclock_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lperror
|
|
int perror_ (const char *str, const ftnlen Lstr) {
|
|
extern int G77_perror_0 (const char *str, const ftnlen Lstr);
|
|
return G77_perror_0 (str, Lstr);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lrand
|
|
double rand_ (integer *flag) {
|
|
extern double G77_rand_0 (integer *flag);
|
|
return G77_rand_0 (flag);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lrename
|
|
integer rename_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
|
|
extern integer G77_rename_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
|
|
return G77_rename_0 (path1, path2, Lpath1, Lpath2);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsecnds
|
|
double secnds_ (real *r) {
|
|
extern double G77_secnds_0 (real *r);
|
|
return G77_secnds_0 (r);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsecond
|
|
double second_ () {
|
|
extern double G77_second_0 ();
|
|
return G77_second_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsleep
|
|
int sleep_ (const integer *seconds) {
|
|
extern int G77_sleep_0 (const integer *seconds);
|
|
return G77_sleep_0 (seconds);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsrand
|
|
int srand_ (const integer *seed) {
|
|
extern int G77_srand_0 (const integer *seed);
|
|
return G77_srand_0 (seed);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lstat
|
|
integer stat_ (const char *name, integer statb[13], const ftnlen Lname) {
|
|
extern integer G77_stat_0 (const char *name, integer statb[13], const ftnlen Lname);
|
|
return G77_stat_0 (name, statb, Lname);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lsymlnk
|
|
integer symlnk_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
|
|
extern integer G77_symlnk_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
|
|
return G77_symlnk_0 (path1, path2, Lpath1, Lpath2);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Ltime
|
|
longint time_ (void) {
|
|
extern longint G77_time_0 (void);
|
|
return G77_time_0 ();
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lttynam
|
|
void ttynam_ (char *ret_val, ftnlen ret_val_len, integer *lunit) {
|
|
extern void G77_ttynam_0 (char *ret_val, ftnlen ret_val_len, integer *lunit);
|
|
G77_ttynam_0 (ret_val, ret_val_len, lunit);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lumask
|
|
integer umask_ (integer *mask) {
|
|
extern integer G77_umask_0 (integer *mask);
|
|
return G77_umask_0 (mask);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lunlink
|
|
integer unlink_ (const char *str, const ftnlen Lstr) {
|
|
extern integer G77_unlink_0 (const char *str, const ftnlen Lstr);
|
|
return G77_unlink_0 (str, Lstr);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lvxtidt_y2kbuggy
|
|
int vxtidate_ (integer *m, integer *d, integer *y) {
|
|
/* Fail to link, so user sees attempt to invoke non-Y2K-compliant
|
|
routine. */
|
|
extern int G77_vxtidate_y2kbuggy_0 (integer *m, integer *d, integer *y);
|
|
return G77_vxtidate_y2kbuggy_0 (m, d, y);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lvxtidt_y2kbug
|
|
int vxtidate_y2kbug__ (integer *m, integer *d, integer *y) {
|
|
/* If user wants to invoke the non-Y2K-compliant routine via
|
|
an `EXTERNAL' interface, avoiding the warning via g77's
|
|
`INTRINSIC' interface, force coding of "y2kbug" string in
|
|
user's program. */
|
|
extern int G77_vxtidate_y2kbug_0 (integer *m, integer *d, integer *y);
|
|
return G77_vxtidate_y2kbug_0 (m, d, y);
|
|
}
|
|
#endif
|
|
|
|
#ifdef Lvxttim
|
|
void vxttime_ (char chtime[8], const ftnlen Lchtime) {
|
|
extern void G77_vxttime_0 (char chtime[8], const ftnlen Lchtime);
|
|
G77_vxttime_0 (chtime, Lchtime);
|
|
}
|
|
#endif
|