我有一个问题,我必须调用AS400 db2从我的.net调用一系列插入/更新存储过程,然后更新一些SQL2005表,如果AS400数据库中的所有内容都很好.我正在使用的驱动程序没有分布式事务,因此我想知道您是否可以使用任何IBM iSeries Drivers for DB2来创建将参与分布式事务的COM +/.NET组件.请让我知道,如果之前有任何人做过这样的事情或任何指针将不胜感激.
我的AS400应用程序(rpg400)中有一个登录模块.验证了用户名和密码,只有密码匹配,用户才能访问菜单屏幕,菜单屏幕还包含导航到后续模块的RPG程序.
我现在想要实现的是,当用户被验证时,登录的用户名必须出现在每个屏幕或者每个rpg屏幕上.(即必须维护用户会话)请不要指导管理员属性.这是来自低水平的工作点.
以下是用户的PF:
USER PF
A R USRREC
A USER 10A
A PWD 10A
A USRTYP 2A
A K USRTYP
Run Code Online (Sandbox Code Playgroud)
键入用户类型.如何允许所有pgms访问登录的人的变量?
比方说,例如,我有这些表:
USRMF(主物理文件)
User ID User Name
A00001 SAMUEL
A00002 ADAM
Run Code Online (Sandbox Code Playgroud)
USRTS
user id date time in time out
A000001 080812 084555 104545
A000001 080812 120800 150000
A000001 080812 170000 180000
A000001 090812 084555 104545
A000001 090812 170000 180000
A000002 080812 084555 104545
A000002 080812 120800 150000
A000002 080812 170000 190000
A000002 090812 084555 104545
A000002 090812 170000 190000
Run Code Online (Sandbox Code Playgroud)
我的子文件应该看起来像这样:
Option: 5-display
OPT User ID User Name Date TimeIn TimeOut
_ A000001 SAMUEL 090812 084555 180000
_ A000002 ADAM 090812 084555 …Run Code Online (Sandbox Code Playgroud) 使用 IBMDA400 OleDb 提供程序对 AS400 运行 SELECT 似乎将日期作为字符串值返回,当您尝试将日期格式应用于字段时,SSRS 只是嘲笑您。我在 SELECT 中尝试了一个简单的 CAST 无济于事。
如何从 iSeries OleDb 提供程序获取实际的 DBTYPE_DBDATE 结构?
我应该提到,有问题的日期都是由 DATE 类型的 UDF 返回的。IBM 似乎将 DATE 类型映射到 DBTYPE_STR OleDb 类型。
在AS/400上,在RPG中有没有办法将指针地址设置为变量的值而不是变量本身的地址?
例:
variable = 'NewVariable'
Run Code Online (Sandbox Code Playgroud)
其中值将是程序内部使用的实际变量
pointer = %addr('NewVariable') VS pointer = %addr(variable)
address of value VS address of variable
你能解释一下+=这句话中的意思吗?
Eval AssGr2Pun += FinQty#
Run Code Online (Sandbox Code Playgroud)
以下是上下文的其余代码:
Exsr FinItmTot
Eval AssGr2Pun += FinQty#
If OrderAdd = 'N'
Eval Gr2TPass += 1
Eval OrderAdd = 'Y'
Endif
Eval AssGr2Pst += 1
When OhReqd = Today
Exsr FinItmTot
Eval AssGr2Tun += FinQty#
If OrderAdd = 'N'
Eval Gr2TTday += 1
Eval OrderAdd = 'Y'
Endif
Eval AssGr2Tod += 1
When OhReqd = Tomorrow
Exsr FinItmTot
Run Code Online (Sandbox Code Playgroud) 我想将固定文件长度创建为 64000,但它会抛出类似的错误消息
参数 RCDLEN 的数值无效
我问自己,在IBMi中RPGLE和CL之间的数据类型的正确比较是什么.
所以:
*DEC <> Packed numeric (es DCL-S ... PACKED(7:0))
*CHAR <> Fixed length string (es DCL-S ... CHAR(10))
*LGL <> Indicator (es DCL-S ... IND)
*PTR <> Pointer (es DCL-S ... POINTER)
Run Code Online (Sandbox Code Playgroud)
我缺少的是*INT和*UINT.阅读IBM知识中心我发现:
对于字符或整数CL变量,请指定CL变量的字节数.
然后,他们BINDEC(在位置上B)或INT/UNS(I/U)数据类型?
这是DB2 for i在7.3版本上运行.
我目前正在评估我们需要做什么才能将DDS定义的物理和逻辑文件转换为DDL定义的表和视图.作为我测试的一部分,我遇到了一个不同寻常的发现.给定一个列定义为a的表TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,有时当从RPGLE程序写入新行时,该值会正确填充 - 但大多数情况下它不会.SQL INSERT似乎一直很好.
这是来源:
QDDLSRC/SOT
CREATE OR REPLACE TABLE SOT (
ID BIGINT GENERATED ALWAYS AS IDENTITY (START WITH 1),
DESC CHAR(20) NOT NULL DEFAULT '',
CTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
UTS TIMESTAMP NOT NULL FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP,
PRIMARY KEY(ID)
) RCDFMT SOTR;
Run Code Online (Sandbox Code Playgroud)
并编译它:
RUNSQLSTM SRCFILE(MYLIB/QDDLSRC) SRCMBR(SOT) DFTRDBCOL(MYLIB)
Run Code Online (Sandbox Code Playgroud)
这是一个普通的旧RPGLE程序的源代码WRITE:
QRPGLESRC/SOT1(普通旧RPGLE代码)
CTL-OPT Optimize(*full);
CTL-OPT Option(*nodebugio : *noshowcpy : *nounref : *srcstmt); …Run Code Online (Sandbox Code Playgroud) 在RPGLE程序中读取文件时,我遇到了这个奇怪的问题.
fmosdp00 if e k disk prefix(xx:2)
SetLL ('HF':'30':'032':'SK':'0095320':'002':0:0001) mosdp00a;
Reade ('HF':'30':'032':'SK':'0095320':'002':0) mosdp00a;
*Inlr = *On;
Run Code Online (Sandbox Code Playgroud)
上面的SETLL和READE似乎没有根据需要设置MOSDP00文件的字段值.
当我在调试模式下运行该程序并在READE上执行EVAL XXMORD(MOSDP00字段)时,它是空白的.
但是如果我使用任何这些字段添加一些操作,例如DSPLY XXMORD,那么程序似乎设置了这个字段值.
有人可以帮助理解这一点.