我有一个持续的过程,在我试图打开,写入和关闭流。
我在程序的主要区域
DEFINE STREAM sOutFile.
OPEN STREAM sOutFile TO VALUE( outFileName ).
MESSAGE SEEK( sOutFile ).
随后持续过程中的功能
FUNCTION example RETURN LOGICAL:
MESSAGE SEEK( sOutFile ).
PUT STREAM sOutFile UNFORMATTED someData.
END.
当在持续过程被实例化时,消息会显示“0”,所以该流已被打开。 然而,当例如被调用时,消息会显示“?” 我得到一个消息有关试图写入一个封闭的流。
我试过,宣布流新的共享,但没有任何区别。
我是不是做错了什么,或者是不可能持久的程序中定义流?
这是早期,我的咖啡已经没有尚未踢,但我认为你必须打开PP身体的外侧流。
这工作:
/* ppstream.p
*
*/
define stream logStream.
session:add-super-procedure( this-procedure ).
/* end of PP init */
function initLog returns logical ( input lgFile as character ):
output stream logStream to value( lgFile ) unbuffered.
return true.
end.
function logStuff returns logical ( input msg as character ):
put stream logStream unformatted msg skip.
return true.
end.
然后调用它像这样:
function initLog returns logical ( input lgFile as character ) in super.
function logStuff returns logical ( input msg as character ) in super.
run ./ppstream.p persistent.
initLog( "log.txt" ).
logStuff( "test" ).
(我使用的会话超程序,以避免定义手柄 - 你不一定需要做到这一点。)