Dyalog APL 中的多行文本值

Multi-line text values in Dyalog APL

如何在 Dyalog APL 中对多行文本值进行编码?

我想编写这样的代码:

query←'
SELECT *
FROM SOME_TABLE
'

能够将此文本复制到 SQL 开发人员并返回。

我知道我可以这样编码:

query←''
query,←'SELECT * '
query,←'FROM SOME_TABLE '

但它不允许我将此文本复制到 SQL 开发人员并轻松返回。

是否可以临时覆盖 Dyalog APL 函数源代码中的换行符?

恐怕多行字符串不存在(但我希望如此)。

解决这个问题的唯一方法是按如下方式编写:

query←ScriptFollows
⍝ SELECT *
⍝ FROM Some_Table

从SQLDev粘贴时,select插入的文本并点击按钮编辑器工具栏以在每一行插入注释符号。

如果使用 IDE,请单击并按住鼠标右键以 select 一个没有注释符号的矩形块。

P.S:您需要定义 fn ScriptFollows - 这是一种方法(由 Brian Becker 提供):

∇ r←ScriptFollows;lines;pgm;from
 ⍝ Treat following commented lines in caller as a script, lines beginning with ⍝⍝ are stripped out
  :If 0∊⍴lines←(from←⎕IO⊃⎕RSI).⎕NR pgm←2⊃⎕SI
      lines←↓from.(180⌶)pgm
  :EndIf
  r←2↓∊CRLF∘,¨{⍵/⍨'⍝'≠⊃¨⍵}{1↓¨⍵/⍨∧\'⍝'=⊃¨⍵}dtlb¨(1+2⊃⎕LC)↓lines
∇
S←{a←⍺⍺⋄,⎕cr'a'}
query←{
 SELECT *
 FROM Some_Table
}S⍬

这个功能实际上在很多年前就可以在基于 APL0 的(大型机)系统上使用,例如 Sharp APL(在 1980 年左右被删除?)、STSC APL*Plus 等。除其他外,不再可能使用普通的 del 编辑器返回编辑带有嵌入式回车 returns 的行(全屏编辑器,因此,还不存在)。它已被删除,因为它可能让用户感到困惑 - 系统需要一个结束语,只是按 return 并没有隐含地提供一个。