예제 #1
0
logstar4        LGE( string PGM *arg1, string PGM *arg2 ) {
//=========================================================

// Return true if arg1 >= arg2 else return false.

    if( LexCmp( arg1, arg2 ) >= 0 ) return( _LogValue( TRUE ) );
    return( _LogValue( FALSE ) );
}
예제 #2
0
logstar4        I2BTEST( intstar2 arg1, intstar2 arg2 ) {
//=====================================================

    short       bit;

    bit = 1;
    bit <<= arg2;
    if( arg1 & bit ) return( _LogValue( TRUE ) );
    return( _LogValue( FALSE ) );
}
예제 #3
0
static  void    InLog( void ) {
//=======================

    ftnfile     *fcb;
    logstar4    value;
    char        *chptr;

    fcb = IOCB->fileinfo;
    chptr = &fcb->buffer[ fcb->col ];
    if( toupper( *chptr ) == 'T' ) {
        value = _LogValue( true );
    } else {
        value = _LogValue( false );
    }
    for(;;) {
        chptr++;
        fcb->col++;
        if( fcb->col == fcb->len )
            break;
        switch( *chptr ) {
        case ' ':
        case '\t':
        case '/':
        case ',':
            goto big_break;
        }
    }
big_break:
    for(;;) {
        switch( IOCB->typ ) {
        case PT_LOG_1:
            *(logstar1 PGM *)(IORslt.pgm_ptr) = value;
            break;
        case PT_LOG_4:
            *(logstar4 PGM *)(IORslt.pgm_ptr) = value;
            break;
        default:
            IOErr( IO_FREE_MISMATCH );
            break;
        }
        FreeIOType();
        if( ( IOCB->rptnum-- <= 1 ) || ( IOCB->typ == PT_NOTYPE ) ) break;
    }
}
예제 #4
0
void    R_FILog( void ) {
//=================

    ftnfile     *fcb;
    uint        width;
    char        ch;

    fcb = IOCB->fileinfo;
    width = IOCB->fmtptr->fmt1.fld1;
    ChkBuffLen( width );
    for(;;) {
        if( fcb->buffer[ fcb->col ] != ' ' ) break;
        fcb->col++;
        if( --width == 0 ) break;
    }
    if( fcb->buffer[ fcb->col ] == '.' ) {
         --width;
         fcb->col++;
    }
    if( width == 0 ) {
        IOErr( IO_BAD_CHAR );
    } else {
        ch = toupper( fcb->buffer[ fcb->col ] );
        if( ch == 'F' ) {
            SetLogValue( _LogValue( false ) );
        } else if( ch == 'T' ) {
            SetLogValue( _LogValue( true ) );
        }
    }
    if( __AllowCommaSep() ) { // don't flush but search for comma separator
        fcb->col++;
        width--;
        while( width > 0 ) {
            if( fcb->buffer[ fcb->col ] == ',' ) {
                fcb->col++;
                break;
            }
            fcb->col++;
            width--;
        }
    } else {
        fcb->col += width; // flush over other stuff
    }
}