Seq_New_Channel

See Also: File I/O Functions, Seq_Release_Channel, Append_Output, Close_Input, Close_Output, Direct_Input, Direct_Output, Sequential File I/O

Purpose

Retrieves the next available sequential input/output (I/O) channel in an organized way. Specifying a channel number without these management functions can result in a collision. Open output can be closed without wanting to do so explicitly.

Return Type

Integer

Syntax

Use seq_chnl.pkg

 

(Seq_New_Channel())

Example

Use seq_chnl.pkg 

 

Integer iChannel 

Move (Seq_New_Channel()) to iChannel 

//...do some sequential I/O work... 

Send Seq_Release_Channel iChannel

 

Use seq_chnl.pkg

 

Procedure ChannelExample 

    Integer iChIn iChOut

    String sFileIn sFileOut sLineIn 

 

    // specify the original (input) file name 

    Move "c:\testfile.txt" to sFileIn

    // specify the new (output) file name

    Move "c:\newfile.txt" to sFileOut

    // obtain 2 open channels, 1 for input, 1 for output 

    Move (Seq_New_Channel()) to iChIn 

 

    // no channel available 

    If (iChIn=DF_SEQ_CHANNEL_NOT_AVAILABLE) begin

        Send Info_Box "No Channel Available for Process" "Error"

        Procedure_Return

    End 

 

    Move (Seq_New_Channel()) to iChOut 

    // no channel available 

    If (iChOut=DF_SEQ_CHANNEL_NOT_AVAILABLE) begin

        Send Info_Box "No Channel Available for Process" "Error" 

        // if iChIn contains a valid channel, release it

        If ((iChIn >= DF_SEQ_CHANNEL_MIN) AND (iChIn <= DF_SEQ_CHANNEL_MAX)) ;

            Send Seq_Release_Channel iChIn

        Procedure_Return 

    End 

 

    // at this time both iChIn and iChOut contain a valid value

    Direct_Input Channel iChIn sFileIn  // open input channel 

    Direct_Output Ehannel iChOut sFileOut  // open output channel 

 

    Repeat 

        // read a line from input file

        Readln Channel iChIn sLineIn 

        If (not (SeqEOF)) begin

           // write the line to output file 

           Writeln Channel iChOut sLineIn

        End

    Until (SeqEOF)  // until sequential end of file 

 

    Close_Input Channel iChIn  // close input channel 

    Close_Output Channel iChOut  // close output channel 

 

    // release both channels for reuse 

    Send Seq_Release_Channel iChIn 

    Send Seq_Release_Channel iChOut 

End_Procedure

Notes