/* Input/Output Statements */
{ ioclause(IOSUNIT, $2); endioctl(); }
| read infmt SCOMMA inlist
| read ioctl SCOMMA inlist
iofmove: fmkwd end_spec in_ioctl
{ iostmt = IOBACKSPACE; }
iofctl: ctlkwd end_spec in_ioctl
{ if($2->vtype == TYCHAR)
| ctllist SCOMMA ioclause
{ ioclause(IOSPOSITIONAL, $1); }
{ ioclause(IOSPOSITIONAL, NULL); }
read: SREAD end_spec in_ioctl
write: SWRITE end_spec in_ioctl
print: SPRINT end_spec fexpr in_ioctl
| SPRINT end_spec SSTAR in_ioctl
{ $$ = hookup($1, mkchain($3,0)); }
| SLPAR inlist SCOMMA dospec SRPAR
{ $$ = mkchain($1, mkchain($3, 0) ); }
{ $$ = mkchain($1, mkchain($3, 0) ); }
{ $$ = mkchain($1, mkchain($3, 0) ); }
{ $$ = mkchain($1, mkchain($3, 0) ); }
{ $$ = hookup($1, mkchain($3, 0) ); }
{ $$ = hookup($1, mkchain($3, 0) ); }
| SLPAR uexpr SCOMMA dospec SRPAR
{ $$ = mkiodo($4, mkchain($2, 0) ); }
| SLPAR other SCOMMA dospec SRPAR
{ $$ = mkiodo($4, mkchain($2, 0) ); }
| SLPAR out2 SCOMMA dospec SRPAR