void GStopIO( void ) { //================= // Generate code to return a null i/o item to run-time i/o. // This is done for only PRINT, WRITE and READ statements. if( !Already( IO_NAMELIST ) ) { EmitOp( FC_ENDIO ); } }
void GStartIO( void ) { //================== // Generate code to invoke the run-time routine. if( !AuxIOStmt() && NotFormatted() ) { EmitOp( FC_SET_NOFMT ); } EmitOp( FC_IO_STMTS + IOIndex() ); // PRINT, READ and WRITE i/o statements can check for END= and ERR= // statement labels when RT_ENDIO is generated; auxilliary i/o // statements don't generate RT_ENDIO so generate F-Code to check // for statement labels. if( AuxIOStmt() || Already( IO_NAMELIST ) ) { EmitOp( FC_CHK_IO_STMT_LABEL ); } }
void IOList( void ) { //================ // Process the input/output list. GStartIO(); if( CITNode->link != NULL ) { if( RecNOpn() && RecNextOpr( OPR_TRM ) ) { AdvanceITPtr(); // WRITE(6,3) } else if( Already( IO_NAMELIST ) ) { Error( IL_NO_IOLIST ); } for(;;) { if( CITNode->link == NULL ) break; ProcessList(); } } GStopIO(); }
bool NotFormatted(void) { //====================== return( !Already( IO_FMT ) ); }