我有一个持久的过程,我试图打开,写入和关闭一个流。
我在程序的主要范围内
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”,因此已打开流。但是,调用示例时,消息显示“?”我收到一条关于尝试写入封闭流的消息。
我已尝试声明新共享流,但这没有任何区别。
我做错了什么,或者在持久性程序中定义流是不可能的?
答案 0 :(得分:2)
现在还早,我的咖啡还没开,但我认为你必须打开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" ).
(我使用会话超级程序来避免必须定义句柄 - 你不一定需要这样做。)