首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助理解sqr逻辑

帮助理解sqr逻辑
EN

Stack Overflow用户
提问于 2017-12-09 00:47:03
回答 2查看 302关注 0票数 1

你好,我刚开始学习如何在PeopleSoft中开发sqr程序。我已经检查了一些我们正在使用的程序,想看看是否有人可以帮助澄清下面的代码片段在这个While循环中做了什么。

代码语言:javascript
复制
 if $path != ''
   let $Archive_File = $path || 'ARCHIVE\' || $filename || $Curr_Date || '.dat'
   open $Out_File  as 1  for-reading record=450:vary status=#fileread
   open $Archive_File as 2  for-writing record=450:vary status=#filewrite
   While 1
     if #END-FILE
        break
     else
        read 1 into $Current_Line:999
        write 2 from $Current_Line
    end-if    
 End-While
 close 1
 close 2
end-if

我想知道WHILE语句是将"$Out_File as 1“作为逻辑表达式计算,还是将1作为变量#END-FILE的值进行计算(据我所知,这个变量设置为0或1)。

EN

回答 2

Stack Overflow用户

发布于 2017-12-09 00:54:33

这是一个真正的循环,它会一直循环到一个中断。在这种情况下,如果#END-FILE为true,循环将中断。

票数 0
EN

Stack Overflow用户

发布于 2017-12-09 12:10:34

除了文件名之外,open命令还接受一个数字作为参数,该参数用作文件的处理程序。在您的示例中,打开了两个文件。

WHILE 1语句与文件1没有任何关系。这里1表示true,而0表示false。因此,1始终为真,除非循环中发生了中断,否则会创建一个无限循环,在本例中就是BREAK命令。

当文件光标不在EOF处时,#END-FILE变量包含FALSE;当文件光标位于EOF处时,#END- file变量包含TRUE。

另一种方法使用更少的代码行,更容易理解,可能如下所示:

代码语言:javascript
复制
if $path != ''
  let $Archive_File = $path || 'ARCHIVE\' || $filename || $Curr_Date || '.dat'
  open $Out_File  as 1  for-reading record=450:vary status=#fileread
  open $Archive_File as 2  for-writing record=450:vary status=#filewrite
  While Not #END-FILE
    read 1 into $Current_Line:999
    write 2 from $Current_Line
  End-While
  close 1
  close 2
end-if
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47718696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档