static void GetInt( intstar4 *result ) { //========================================== ftnfile *fcb; char *start; uint len; int status; fcb = IOCB->fileinfo; start = fcb->buffer + fcb->col; len = GetDelim( start, fcb->buffer + fcb->len ) - start; status = FmtS2I( start, len, false, result, false, NULL ); if( status == INT_OK ) { fcb->col += len; } else if( status == INT_INVALID ) { IOErr( IO_BAD_CHAR ); } else { IOErr( IO_IOVERFLOW ); } }
void R_FIInt( void ) { //================= intstar4 value; uint width; uint new_width; int status; ftnfile *fcb; bool comma; fcb = IOCB->fileinfo; width = IOCB->fmtptr->fmt2.fld1; ChkBuffLen( width ); comma = __AllowCommaSep(); status = FmtS2I( fcb->buffer + fcb->col, width, ( fcb->blanks == BLANK_ZERO ), &value, comma, &new_width ); if( status == INT_INVALID ) { IOErr( IO_BAD_CHAR ); } else if( status == INT_OVERFLOW ) { IOErr( IO_IOVERFLOW ); } else { if( comma && ( width != new_width ) ) { // use comma as field separator fcb->col += new_width; if( fcb->buffer[ fcb->col ] == ',' ) { fcb->col++; } else { IOErr( IO_BAD_CHAR ); } } else { fcb->col += width; } if( IOCB->typ == PT_INT_1 ) { *(intstar1 PGM *)(IORslt.pgm_ptr) = value; } else if( IOCB->typ == PT_INT_2 ) { *(intstar2 PGM *)(IORslt.pgm_ptr) = value; } else { *(intstar4 PGM *)(IORslt.pgm_ptr) = value; } } }