当AS400物理文件上发生对象锁定时,是否有可能知道记录锁定发生在哪条记录/数据上?
我正在尝试从 cobol 程序中的 C 程序获取返回值。然而,他们提到了这一点:
“使用链接类型的程序调用的程序不允许使用 GIVING/RETURNING 短语。”
那么还有什么选择呢?如何在cobol程序中获取返回值?找不到。谢谢。-- 编辑我发现这个https://www.ibm.com/docs/en/rdfi/9.6.0?topic=SSAE4W_9.6.0/com.ibm.etools.iseries.ilecbl.doc/LNC2762.htm 他们表示“更改被调用程序的链接”,但我不知道该怎么做。
我有一个 RPGLE 程序。读取并处理完文件中的所有数据后,需要以输入模式处理文件FILE1,并清除文件FILE1。
但是,当我使用 QCMDEXE api 使用命令 CLRPFM 清除文件时,它会抛出文件正在使用中的错误。
我怎样才能克服这个问题并在程序结束时清除文件。任何建议都会很有帮助。
当开始编写这个 RPGLE 程序的 C 表时,我收到此错误:
Compiler directive not recognized; directive ignored
Run Code Online (Sandbox Code Playgroud)
这是我的代码,在最后六行中我收到错误。
HDatedit(*ymd) datfmt(*iso)
FQPRINT O F 132 PRINTER OFLIND(*INOV)
DWCLICLA S 5 0
DWCLINOM S 45
DWCLICEL S 15
DWCLISEX S 1
DWCLIEMAIL S 30
DWCLIESTD S 1
DWCLIDEP S 2 0
C*
C EXCEPT CABECERA
C EXCEPT linea
C*
C/EXEC SQL
C+ DECLARE C1 CURSOR FOR
C+ SELECT CLICLAV, CLINOM, CLICEL, CLISEX, CLIEMAIL
C+ FROM CLIENTES
C+ ORDER BY CLICLAV
C/end-exec
Run Code Online (Sandbox Code Playgroud)
我正在使用 PUB400.com (V7r5) 来学习 RPGLE。
我有一个关于激活组的疑问。
如果我用 DFTACTGRP(*NEW) 声明一个程序,系统会为其创建一个激活组,并在程序结束后销毁该激活组。
假设该程序调用另一个程序,其中激活组定义为 DFTACTGRP(*CALLER)。因此,被调用的程序将使用系统生成的第一个程序的激活组,还是将在其自己的系统生成的新激活组中运行。
任何消除这个疑问的答案都会非常有帮助。
我正在尝试为DB2创建用户定义的函数,但无法弄清楚.我对t-sql感觉更舒服,这将以十几种方式实现.我需要帮助,因为我收到的所有内容都是神秘的错误消息,告诉我没有有效的令牌或其他类似的令牌.
基本前提是我试图将正常日期转换为整个数据库中使用的日期格式(cyymmdd)这里是伪代码:
Get current time;
If YEAR(current time) > 1999 then 1 else 0;
Run Code Online (Sandbox Code Playgroud)
很简单吧?无法让它发挥作用.这是实际的代码:
DECLARE Cn CHAR ( 1 ) ;
CASE
WHEN YEAR(X) > 1999
THEN SET Cn = 1;
ELSE SET Cn = 0;
Run Code Online (Sandbox Code Playgroud)
还尝试过:
DECLARE Cn CHAR ( 1 ) ;
CASE YEAR(X)
WHEN > 1999
THEN SET Cn = 1;
ELSE SET Cn = 0;
Run Code Online (Sandbox Code Playgroud)
而那应该是悲惨的失败.
我真的不知道如何只用SQL将3/25/2014转换为1140325.我想我可以在应用程序逻辑中处理这个问题,但这不是我想要的方式.
提前致谢.
例如,什么是输出?
PROCEDURE DIVISION
MAINPARA
DISPLAY "MAIN".
GO TO PARA1.
DISPLAY "DISPLAY".
STOP RUN.
PARA1.
EXIT.
PARA2.
DISPLAY "I AM IN PARA2"
...
Run Code Online (Sandbox Code Playgroud)
它会执行PARA2吗?
我不是一个COBOL程序员,我需要从一个迁移工具/程序,AMXW COBOL理解的代码.目标系统是IBM AS/400.
因此,假设表 ##TAB 有一列 #VALUE,其中包含“SDM”和“LB”作为条目。列大小为 12 个字符。我想使用固定格式 RPG 查询表,并稍后在 IF 条件下进行比较。逻辑很简单,但我不确定语法。
如果它是自由格式,我可以简单地将记录放入游标中,在循环中获取数据,然后在获得匹配的记录时离开。但是,我不确定我们是否可以使用固定格式的 SQL,否则我将不得不做一个链(仍然不知道语法)。
exec sql
Declare C1 cursor for
Select #VALUE from ##TAB;
exec sql
Open C1;
Dou sqlcod <> 0;
exec sql
Fetch C1 INTO :valueRes;
If (valueRes <> userVal); // userVal is what we get from user
Leave; //or set some flag to 0 to indicate
Endif;
Enddo;
exec sql
Close C1;
Run Code Online (Sandbox Code Playgroud)
或者我们可以通过子例程来完成,并返回 true/false 或 1/0 来指示是否找到记录。
在发布答案时,请同时包含变量声明。
假设两种选择都会产生相同的结果,您通常会做出什么选择?为什么?
dcl-proc test_proc ;
...
dcl-s count int(5) inz ;
...
// use count
end-proc ;
Run Code Online (Sandbox Code Playgroud)
或者
dcl-proc test_proc ;
...
dcl-s count int(5) ;
...
clear count
// use count
end-proc ;
Run Code Online (Sandbox Code Playgroud)
另外,由于变量count的范围是局部的,我们是否需要使用它们中的任何一个?