SUBROUTINE STDIO (STDIN, STDOUT, STDERR, STDCOM) ;00003 INTEGER STDIN, STDOUT, STDERR, STDCOM ;00004 INCLUDE "F5ERR.FR" ;NEEDED TO DEFINE EREOF BELOW ;00072 PARAMETER NULL = 0 ;ASCII NULL ;00074 PARAMETER DEL = 255 ;ASCII DEL ;00075 INTEGER ARG(70), SW(2) ;00077 INTEGER INNAME(70), OUTNAME(70), ERRNAME(70) ;00078 LOGICAL ISET, OSET, PIPE ;00079 LOGICAL APPOUT, DELERR ;00080 LOGICAL PSW, ISW, OSW, LSW, ESW, ASW, DSW ;00081 LOGICAL NULLARG, COMEOF ;00082 COMMON /STD/ SINNAME, SOUTNAME, SERRNAME, LPTNAME ;00084 INTEGER SINNAME(3), SOUTNAME(4), SERRNAME(4), LPTNAME(3) ;00085 DATA SINNAME / "ST", "DI", "N<0>" / ;00086 DATA SOUTNAME / "ST", "DO", "UT", 0 / ;00087 DATA SERRNAME / "ST", "DE", "RR", 0 / ;00088 DATA LPTNAME / "$L", "PT", 0 / ;00089 CALL SSCOPY (SINNAME, INNAME) ;00093 CALL GCOUT (OUTNAME, IER) ;00094 CALL GCOUT (ERRNAME, IER) ;00095 ISET = .FALSE. ;00096 OSET = .FALSE. ;00097 PIPE = .FALSE. ;00098 COMEOF = .FALSE. ;00099 CALL COMINIT(STDCOM,IER) ;00102 CALL CHECK(IER) ;00103 ASSIGN 32758 TO I32759 ;00106 GO TO 32759 ;00106 32758 IF(.NOT.(PSW)) GO TO 32757 ;00107 ASSIGN 32755 TO I32756 ;00107 GO TO 32756 ;00107 32755 CONTINUE ;00107 32757 IF(.NOT.(ISW)) GO TO 32754 ;00108 ASSIGN 32752 TO I32753 ;00108 GO TO 32753 ;00108 32752 CONTINUE ;00108 32754 IF(.NOT.(OSW)) GO TO 32751 ;00109 ASSIGN 32749 TO I32750 ;00109 GO TO 32750 ;00109 32749 CONTINUE ;00109 32751 IF(.NOT.(LSW)) GO TO 32748 ;00110 ASSIGN 32746 TO I32747 ;00110 GO TO 32747 ;00110 32746 CONTINUE ;00110 32748 IF(.NOT.(ESW)) GO TO 32745 ;00111 ASSIGN 32743 TO I32744 ;00111 GO TO 32744 ;00111 32743 CONTINUE ;00111 32745 APPOUT = ASW ;00112 DELERR = DSW ;00113 32742 CONTINUE ;00116 ASSIGN 32740 TO I32759 ;00117 GO TO 32759 ;00117 32740 IF(COMEOF) GO TO 32741 ;00118 IF(.NOT.(PSW)) GO TO 32739 ;00119 ASSIGN 32738 TO I32756 ;00120 GO TO 32756 ;00120 32738 DELERR = DELERR .OR. DSW ;00121 APPOUT = APPOUT .OR. ASW ;00122 32739 IF(.NOT.(ISW)) GO TO 32737 ;00124 IF(.NOT.(NULLARG)) GO TO 32733 ;00125 ASSIGN 32736 TO I32753 ;00125 GO TO 32753 ;00125 32732 CONTINUE ;00126 32736 CONTINUE ;00127 32737 IF(.NOT.(OSW)) GO TO 32731 ;00128 IF(.NOT.(NULLARG)) GO TO 32729 ;00129 ASSIGN 32730 TO I32750 ;00129 GO TO 32750 ;00129 32729 ASSIGN 32726 TO I32727 ;00130 GO TO 32727 ;00130 32726 CONTINUE ;00130 32730 CONTINUE ;00131 32731 IF(.NOT.(LSW)) GO TO 32725 ;00132 IF(.NOT.(NULLARG)) GO TO 32723 ;00133 ASSIGN 32724 TO I32747 ;00133 GO TO 32747 ;00133 32723 ASSIGN 32721 TO I32727 ;00134 GO TO 32727 ;00134 32721 CONTINUE ;00134 32724 CONTINUE ;00135 32725 IF(.NOT.(ESW)) GO TO 32742 ;00136 IF(.NOT.(NULLARG)) GO TO 32716 ;00137 ASSIGN 32719 TO I32744 ;00137 GO TO 32744 ;00137 32715 CONTINUE ;00138 32719 CONTINUE ;00139 GO TO 32742 ;00140 32741 IF(.NOT.(PIPE)) GO TO 32714 ;00142 CALL DFILW (SINNAME, IER) ;00143 CALL RENAME (SOUTNAME, SINNAME, IER) ;00144 32714 IF(.NOT.(STDIN .GE. 0)) GO TO 32713 ;00148 CALL OPEN (STDIN, INNAME, 2, IER) ;00149 32713 IF(.NOT.(STDOUT .GE. 0)) GO TO 32712 ;00152 IF(.NOT.(APPOUT)) CALL DFILW (OUTNAME, IER) ;00153 CALL CFILW (OUTNAME, 2, IER) ;00154 CALL APPEND (STDOUT, OUTNAME, 0, IER) ;00155 IF (IER .NE. 1) STOP "Can't open STDOUT" ;00156 32712 IF(.NOT.(STDERR .GE. 0)) GO TO 32711 ;00159 IF (DELERR) CALL DFILW (ERRNAME, IER) ;00160 CALL CFILW (ERRNAME, 2, IER) ;00161 CALL APPEND (STDERR, ERRNAME, 0, IER) ;00162 IF (IER .NE. 1) STOP "Can't open STDERR" ;00163 32711 RETURN ;00166 32759 CONTINUE ;00168 CALL COMARG(STDCOM,ARG,SW,IER) ;00169 IF (IER .NE. 1 .AND. IER .NE. EREOF) CALL CHECK(IER) ;00170 COMEOF = (IER .NE. 1) .OR. BYTE(ARG,1) .EQ. DEL ;00172 NULLARG = COMEOF .OR. BYTE(ARG,1) .EQ. NULL ;00173 PSW = ITEST(SW(1), 0) .EQ. 1 ;00175 ISW = ITEST(SW(1), 7) .EQ. 1 ;00176 OSW = ITEST(SW(1), 1) .EQ. 1 ;00177 LSW = ITEST(SW(1), 4) .EQ. 1 ;00178 ESW = ITEST(SW(1),11) .EQ. 1 ;00179 DSW = ITEST(SW(1),12) .EQ. 1 ;00180 ASW = ITEST(SW(1),15) .EQ. 1 ;00181 GO TO I32759 ;00182 32756 CONTINUE ;00184 IF(.NOT.(ISET)) CALL SSCOPY (SINNAME, INNAME) ;00185 IF(.NOT.(OSET)) CALL SSCOPY (SOUTNAME, OUTNAME) ;00186 ISET = .TRUE. ;00187 OSET = .TRUE. ;00188 PIPE = .TRUE. ;00189 GO TO I32756 ;00190 32753 CONTINUE ;00192 CALL GCIN (INNAME, IER) ;00193 ISET = .TRUE. ;00194 GO TO I32753 ;00195 32750 CONTINUE ;00197 CALL SSCOPY (SOUTNAME, OUTNAME) ;00198 OSET = .TRUE. ;00199 GO TO I32750 ;00200 32747 CONTINUE ;00202 CALL SSCOPY (LPTNAME, OUTNAME) ;00203 OSET = .TRUE. ;00204 GO TO I32747 ;00205 32744 CONTINUE ;00207 CALL SSCOPY (SERRNAME, ERRNAME) ;00208 GO TO I32744 ;00209 32733 CONTINUE ;00211 CALL SSCOPY (ARG, INNAME) ;00212 ISET = .TRUE. ;00213 GO TO 32732 ;00214 32727 CONTINUE ;00216 CALL SSCOPY (ARG, OUTNAME) ;00217 OSET = .TRUE. ;00218 GO TO I32727 ;00219 32716 CONTINUE ;00221 CALL SSCOPY (ARG, ERRNAME) ;00222 GO TO 32715 ;00223 END ;00225