我正在尝试创建一个telnet客户端,我可以使用它将绿屏RPGLE应用程序转移到更高级的客户端应用程序.我能够建立一个套接字连接,并且我已经发送默认的"enter"命令来访问登录屏幕,但我不知道从哪里开始解释字段的位置,会话的服务器ID存储在何处,如何发回评论,以及如何识别字段的类型.有没有人知道描述telnet客户端与其服务器之间通信的一些好的文档?我尝试在线查找无济于事.
我正在使用Microsoft Visual Studio 2010(vb.net)编写此代码.
我需要创建as400"逻辑文件".
我的应用程序使用jdbc连接到数据库.
是否可以使用sql语句创建"逻辑文件"?
如果是的话,我希望得到一份样本声明.
谢谢
我不是AS400的专家,只知道一些命令,我将AS400(iSeries)中的一些文件导出到SQL Server 2005中.
实际上我需要知道哪个RPG程序在库中创建了一个文件.这是因为该文件包含存储在其他AS400库中的其他文件的统计数据.
此屏幕截图显示了STTMVF库中的文件DAT_4DWH(by DSPLIB DAT_4DWH)

所以有一个命令让我知道哪个RPG程序创建了文件STTMVF?
如果是,我需要打开源RPG或CL并尝试了解哪些物理文件用于组成此统计文件.
提前致谢!
如何防止用户在AS400中的文本字段(字符类型)中输入特殊字符(如键盘中不可见的符号)?显然,大多数时候iseries/as400在接受它并将其保存到文件中时没有问题,但有时当数据在下游报告系统中处理时,它会被系统中的不同错误拒绝.有没有办法防止入口点本身?
例如:在客户的地址字段中,最终用户复制粘贴(ctrl + c ctrl + v)来自网页或文档的详细信息,导致垃圾字符或空值的输入,这些存储没有问题但后来导致其他报告应用程序出现问题.
我正在运行DB2 for i,V7R2 TR3.
我被告知打开游标会提供很多开销,应该尽可能避免.从我所读到的,使用EXECUTE INTO var1 USING var2是另一种选择,但我不能让它工作.我收到SQL0104错误.
这是我的存储过程:
BEGIN
DECLARE STMT1 VARCHAR ( 500 ) ;
SET STMT1 = 'SELECT SUBSTR (''' || TRIM(ITEM) || ''' , ( LENGTH ( TRIM ( PREFIX ) ) + 1 ) , ( 20 - LENGTH ( TRIM ( PREFIX ) ) ) ) ' ||
'FROM MYLIB.MYTABLE ' ||
'WHERE PREFIX = SUBSTR(''' || TRIM(ITEM) || ''', 0,LENGTH ( TRIM ( PREFIX ) ) + 1 …Run Code Online (Sandbox Code Playgroud) 我试图在存储过程中声明并设置变量的值,该变量通过游标返回结果集.我这样做是因为我计划变量来帮助过滤结果.
当我只用光标发表声明时,一切正常.这是代码:
CREATE OR REPLACE PROCEDURE MYLIB.MYTEST()
DYNAMIC RESULT SETS 1
LANGUAGE SQL
SPECIFIC MYTEST
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
BEGIN
DECLARE C1 CURSOR WITH RETURN FOR
SELECT * FROM SOMELIB.SOMEFILE
FETCH FIRST 100 ROWS ONLY;
OPEN C1;
END;
Run Code Online (Sandbox Code Playgroud)
当我尝试声明并设置变量时,我得到一个错误.这是代码:
CREATE OR REPLACE PROCEDURE MYLIB.MYTEST()
DYNAMIC RESULT SETS 1
LANGUAGE SQL
SPECIFIC MYTEST
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
BEGIN
DECLARE SOMENAME VARCHAR(10);
SET SOMENAME = 'JOHN';
DECLARE C1 CURSOR WITH RETURN FOR …Run Code Online (Sandbox Code Playgroud) 如何清除(重置)定义为类型的字段TIME?
我已经尝试MOVEL *BLANKS或者Z-ADD *ZEROS,但我总是得到一个错误.使用*ZEROS编译器时告诉我该字段不是数字.在使用时,MOVEL *BLANKS我得到一个错误,即因子2对此操作无效.
在RDi中,
然后在另一个会话中从命令行启动程序。
RDi确认“调试”透视开关。但是,我没有选择使用更新生产文件= *是开始调试的选项,所以我收到了DBGP0003E消息。
通过作业日志检查的根本原因似乎是:
UPDPROD(* NO)时无法打开成员myfile
美好的一天,
我正在编写一个程序来构建一个报告,我在其中构建SQL语句以将所选记录插入到文件中,然后在该插入之后我想对文件进行简单更新以更改某些记录中的选择字段.
问题是在插入运行后,每当我尝试更新文件时,我都会收到一个记录或文件正在使用错误.
我尝试用sqlrpgle和I/O读取和设置函数以编程方式更新它,我甚至尝试在运行程序后只更新STRSQL中的文件,我都遇到了同样的错误.
我怀疑我没有正确关闭,但我不确定是什么.
代码如下
// Assign SQL Query
sqlstmt = 'insert into jallib/orhsrpt ('+
'oacctd, oacmp, oaord, oacust, o8type, ' +
'o8text, o8date, o8time ) ' +
'select oacctd, oacmp, oaord, oacust, ' +
'o8type, o8text, o8date, o8time ' +
'from r50files.vcohead ' +
'join r50files.vcopkct ' +
'on oacmp = o8cmp and oaord = o8ord ' +
'where oacmp = 1 ' +
'and o8type not in (' +
'''C'',''a'',''H'',''E'',''F'', '+
'''A'',''1'',''N'',''M'') ' +
'and oacctd = …Run Code Online (Sandbox Code Playgroud) 我有许多CL程序,这些程序当前正在将文件FTP发送到生产服务器。
我们已经引入了用于测试目的的新iSeries测试服务器,并且这些程序需要从该新服务器上运行。但是,从测试服务器运行时的目标FTP地址应该不同。文件需要发送到相应的测试服务器。
为此,添加了一个简单的程序调用,如下所示:
PGM PARM(&FTPERR)
DCL VAR(&SUCCES) TYPE(*CHAR) LEN(1)
DCL VAR(&FTPERR) TYPE(*CHAR) LEN(1)
DCL VAR(&TARGIP) TYPE(*CHAR) LEN(20) VALUE(' ')
DCL VAR(&ATTEMP) TYPE(*DEC) LEN(2 0) VALUE(0)
CALL PGM(GETFTPRPG) PARM('FTPMRCL' &TARGIP)
Run Code Online (Sandbox Code Playgroud)
从上面可以看出,GETFTPRPG程序是新引入的程序调用,它基于程序名和程序运行所在的服务器检索IP地址。
这很好,但是问题在于程序中声明的其他变量(具体来说,是程序中声明的第一个Decimal变量)正在更改。在上面的示例中,&ATTEMP变量的值更改为04。有人可以建议可能的原因吗?