void Unit(void) { //=============== if( RecNOpn() && RecNextOpr( OPR_MUL ) ) { if( ( StmtProc != PR_READ ) && ( StmtProc != PR_WRITE ) ) { StmtErr( IL_STAR_NOT_ALLOWED ); } AdvanceITPtr(); ReqNOpn(); } else { ProcIOExpr(); if( !AError ) { if( _IsTypeInteger( CITNode->typ ) && !RecArrName() ) { GPassValue( FC_SET_UNIT ); } else if( CITNode->typ == FT_CHAR ) { KWRememb( IO_INTERNAL ); CkAssignOk(); if( RecArrName() ) { ChkAssumed(); GArrIntlSet(); } else { GIntlSet(); } if( ( StmtProc != PR_READ ) && ( StmtProc != PR_WRITE ) && ( StmtProc != PR_PRINT ) ) { Error( IL_BAD_INTL ); } } else { Error( IL_NO_UNIT_ID ); } } } }
void FormatIdd( void ) { //========================= cs_label fmt_label; grp_entry *ge; if( RecName() && ( NameListFind() != NULL ) ) { BIOutNameList( CITNode->sym_ptr ); ge = CITNode->sym_ptr->u.nl.group_list; while( ge != NULL ) { ge->sym->u.ns.flags |= SY_REFERENCED; ge = ge->link; } GSetNameList( FC_SET_NML ); KWRememb( IO_NAMELIST ); } else if( RecNumber() ) { GPassStmtNo( LkUpFormat(), FC_SET_FMT ); } else if( RecNOpn() && RecNextOpr( OPR_MUL ) ) { if( CITNode->link->opn.ds == DSOPN_PHI ) { AdvanceITPtr(); // nothing needs to be loaded for default KWRememb( IO_LIST_DIR ); } } else if( RecNOpn() && RecNextOpr( OPR_COM ) ) { Extension( IL_NO_ASTERISK ); } else if( RecIntVar() ) { CkVarRef(); StNumbers.var_format = true; GFmtVarSet(); } else { ProcIOExpr(); // will allow for array name alone if( !AError ) { if( RecArrName() ) { if( CITNode->typ != FT_CHAR ) { Extension( IL_NON_CHARACTER ); } ChkAssumed(); GFmtArrSet(); } else if( CITNode->typ != FT_CHAR ) { Error( IL_BAD_FMT_SPEC ); } else if( ( CITNode->opn.us == USOPN_CON ) ) { AddConst( CITNode ); // in case single constant fmt_label.g_label = NextLabel(); FScan( CITNode->sym_ptr->u.lt.length, (char *)&CITNode->sym_ptr->u.lt.value, fmt_label ); GPassLabel( fmt_label.g_label, RT_SET_FMT ); } else { GFmtExprSet(); } } } }
void ListItem( void ) { //================== // Process one list item. sym_id sd; if( RecNOpn() ) { if( !CpError ) { Error( SX_SURP_OPR ); } } else if( RecArrName() ) { CITNode->sym_ptr->ns.u1.s.xflags |= SY_DEFINED; ChkAssumed(); if( CITNode->typ == FT_STRUCTURE ) { ChkStructIO( CITNode->sym_ptr->ns.xt.sym_record ); GIOStructArray(); } else { GIOArray(); } } else if( CITNode->typ == FT_STRUCTURE ) { CITNode->sym_ptr->ns.u1.s.xflags |= SY_DEFINED; if( CITNode->opn.us & USOPN_FLD ) { sd = CITNode->value.st.field_id->fd.xt.sym_record; } else { sd = CITNode->sym_ptr->ns.xt.sym_record; } ChkStructIO( sd ); GIOStruct( sd ); } else { if( StmtProc == PR_READ ) { CkAssignOk(); } GIOItem(); } AdvanceITPtr(); }