LeonelSanchezJr
Programmer
Sometimes a low level file will remain open. How can I close just that one low level file without closing all of them?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
** Open a file for testing routine
lcFileName=UPPER(SYS(5)+curdir()+"abc.txt") && fully qualified
= FOPEN(lcFileName)
****
** Now Close 'lcFileName' if found open **
lcTempFile = sys(2015)+".txt" && unique name for no conflict
DISPLAY STATUS TO FILE (lcTempFile) NOCONSOLE
lcString = UPPER(FILETOSTR(lcTempFile))
lnOffset = AT("USER-OPENED FILES:", lcString)
IF lnOffset > 0 && Got at least one open
lcUserInfo = SUBSTR(lcString, lnOffset+20)
lnOffset = AT(lcFileName, lcUserInfo)
IF lnOffset > 0 && Found Target
lcFileInfo = SUBSTR(lcUserInfo, lnOffset+LEN(lcFileName))
lnOffset = AT(chr(13), lcFileInfo) && find EOL
IF lnOffset > 0 && just look in this line
lcFileInfo = LEFT(lcFileInfo, lnOffset-1)
ENDIF
lnOffset = AT("HANDLE=", lcFileInfo)
IF lnOffset > 0 && now get value
lnHandle = INT(VAL(SUBSTR(lcFileInfo, lnOffset+7)))
IF lnHandle > 0
= FCLOSE(lnHandle)
MESSAGEBOX("Closed '"+lcFileName ;
+"' with Handle of "+TRANSFORM(lnHandle))
ENDIF
ELSE
MESSAGEBOX(lcFileName+" is not Open in this program")
ENDIF
ELSE
MESSAGEBOX(lcFileName+" is not Open in this program")
ENDIF
ELSE
MESSAGEBOX("No Low-Level Files Open")
ENDIF
DELETE FILE (lcTempFile)
**