CHNOPN
Check whether a channel is in use
WSupported on Windows
|
USupported on Unix
|
VSupported on OpenVMS
|
NSupported in Synergy .NET
|
xcall CHNOPN(channel, status)
Arguments
channel
The expression that contains the channel you want to check. (n)
status
Returned with one of the following values: (n)
1 = The channel is in use.
0 = The channel is closed.
Discussion
The CHNOPN subroutine checks whether a channel is in use by an open file. CHNOPN is functionally identical to DBL$CHOPEN.
Examples
The following program opens a specified file on the first available channel.
.define TTCHN ,1 record filename ,a20 ;Filename to open chn ,d4 ;Channel to open proc open(TTCHN, o, "tt:") xcall flags(4020) do forever begin display(TTCHN, "Enter a filename to open: ") reads(TTCHN, filename) xcall openit(filename, chn) if (chn) writes(TTCHN, "Opened " + filename + "on channel #" + %a(chn)) end ;End of do forever loop end ;End of main routine subroutine openit ;Find an available channel a_file ,a ;Contains name of file to open a_rchn ,d ;Returned with next available channel record stat ,d1 ;Used with XCALL CHNOPN proc for a_rchn from 2 thru 1024 begin xcall chnopn(a_rchn, stat) if (.not.stat) begin open(a_rchn, i, a_file) [err=nofile] xreturn end end operr, writes(TTCHN, "Exceeds maximum channels " + a_file) goto oprtn nofile, writes(TTCHN, "Cannot open " + a_file) oprtn, clear a_rchn xreturn endsubroutine