正在进行的关键工作4GL的确切用途是什么?我没有从开放边缘的关键字帮助中获得清晰的想法.by和break by关键字之间的主要区别是什么?
我有一个名为 tt 的临时表。我想使用我的临时表创建一个具有相同字段名称和类型的数据库表。
我不知道在Progress-4gl 中该怎么做。这可能吗 ?
谢谢。
每当我尝试"THIS-PROCEDURE:FILE-NAME"来显示我正在使用的当前.p文件时,我总是得到的结果是.ped文件.我想知道.ped文件是什么以及显示文件名的方法,即程序中.p文件的名称.
如何使用OpenEdge ABL(progress-4gl)代码从目录中删除文件?
我找不到任何代表这个问题的代码示例.我知道如何输出值(路径),以及从值(路径)输入,但是如何完成删除?
我发现在Progress 10.1中,当在查询中使用多个索引时,数据库将使用索引列表中的第一个索引,而不是最优化的索引,也不是两个索引的子集。
其他人有没有经历过?
================================================== ===============
定义了几个索引,但我们正在查看的两个索引是:XIE1cac_role_person ownering_entity_mnemonic owning_entity_key role_key
XIE2cac_role_person contract_obj person_role_code Effective_from_date
最初,我的代码如下,它使用的是第一个索引,该索引返回的数据集更大。
FOR EACH cac_role_person NO-LOCK
WHERE cac_role_person.contract_obj = cbm_contract.contract_obj
AND cac_role_person.owning_entity_mnemonic = "BROKER"
AND (
(cac_role_person.effective_to_date > TODAY
AND cac_role_person.effective_to_date >=
cbm_contract_component.contract_component_start_date)
OR (cac_role_person.effective_to_date = ?
AND cac_role_person.effective_from_date <=
cbm_contract_component.contract_component_start_date)
):
Run Code Online (Sandbox Code Playgroud)
所以我现在强迫它使用第二索引:
FOR EACH cac_role_person NO-LOCK USE-INDEX XIE2cac_role_person
WHERE cac_role_person.contract_obj = cbm_contract.contract_obj
AND cac_role_person.owning_entity_mnemonic = "BROKER"
AND (
(cac_role_person.effective_to_date > TODAY
AND cac_role_person.effective_to_date >=
cbm_contract_component.contract_component_start_date)
OR (cac_role_person.effective_to_date = ?
AND cac_role_person.effective_from_date <=
cbm_contract_component.contract_component_start_date)
):
Run Code Online (Sandbox Code Playgroud)
第一个代码在30小时内修复了约4000次,而改进后的12小时内修复了7万次。(循环是更大的部分的一部分,但这只是我需要加快处理17倍的更改
我有一些这样的清单
DEFINE VARIABLE procedurelist AS CHARACTER EXTENT 5
INITIAL [ "1.p", "2.p", "3.p", "4.p", "5.p"].
Run Code Online (Sandbox Code Playgroud)
但这个带输入输出参数的所有程序,我想执行这个程序,我该怎么做?我不知道该怎么做.
我有一个函数GetQuantity返回一个小数。在某些情况下,我不返回任何内容,即返回空字符串,以便显示“”。
实际行为:
所需行为:
在情况3中,我显然可以返回-1.0或其他值,但这不是我所需要的。
FUNCTION GetQuantity RETURNS DECIMAL(INPUT num AS INTEGER):
DEFINE VARIABLE quantity AS DECIMAL NO-UNDO FORMAT "->,>>>,>>9.9<<<<<<<<".
quantity = 3.3. //initialization is neccessary as IRL my value is initialized
IF num = 1 THEN DO:
RETURN 1.0.
END.
ELSE IF num = 2 THEN DO:
RETURN 2.0.
END.
RETURN quantity. //base case return ' '
END.
DISPLAY GetQuantity(3)
Run Code Online (Sandbox Code Playgroud) 我需要一些帮助来理解当前程序之外的程序/程序的事务范围。
假设我有三个程序,程序 A、程序 B 和程序 C。在程序 A 中,我有一个过程,其中有一些行包含在do transaction(非强类型)块中。在那个do transaction块中,它调用另一个程序 B。从程序 B 返回时,有一个撤消,离开命令。在同一个事务块内,它调用程序C并有一个undo,在这个调用之后也离开。
我的问题是,如果在事务块内,程序 B 执行没有错误,但程序 c 返回错误,那么程序 C 调用后的 undo,leave 是否也会撤销程序 B 内部发生的事务?
Procedure do_something:
some processing....
do transaction:
error-message = "".
{run programB.p}
if error-message <> "" then undo, leave.
some further processing...
error-message = "".
{run programC.p}
if error-message <> "" then undo, leave.
end. /* end of do transaction */
end procedure.
Run Code Online (Sandbox Code Playgroud) 我是进步的新手。我只是按照下面的知识库文章,但我没有得到所需的输出。 https://knowledgebase.progress.com/articles/Knowledge/How-to-write-ap-script-to-execute-via-proenv-to-produce-a-stderr-stdout-in-a-file
MESSAGE ENTRY (1, "This is a test") VIEW-AS ALERT-BOX.
MESSAGE "Hello there" VIEW-AS ALERT-BOX.
DISPLAY "hello world".
Run Code Online (Sandbox Code Playgroud)
proenv>proenv -b -p test.p > test.out
Run Code Online (Sandbox Code Playgroud)
$ cat test.out
DLC: /opt/progress/117
WRKDIR: /opt/progress/wrk_117
OEM: /opt/progress/oemgmt_117
OEMWRKDIR: /opt/progress/wrk_oemgmt_117
Inserting /opt/progress/117/bin to beginning of path and
setting the current directory to /opt/progress/wrk_117.
OpenEdge Release 11.7.5 as of Fri Jun 7 08:29:03 EDT 2019
Run Code Online (Sandbox Code Playgroud)
我没有找到,我做错了什么。感谢这方面的帮助。谢谢。