如何从CL程序运行存储过程?RUNSQLSTM需要一个源成员,但我只想构建一个命令,以便用户可以轻松地传入变量,因此这不起作用.
这是我的情况:我的程序A看起来像这样:
Fmfile IF E K DISK USROPN d grue s like(dhseqn) d C *ENTRY PLIST C PARM grue c open mfile c*** do something with grue c close mfile c eval *inlr = *on
dhseqn是一个2,0 S的领域.
编译清单向我展示了这个:
*RNF7031 DHSEQN P(2,0) 000200 1000002D
GRUE P(2,0) 000200D 000500M 000700 000800M
BASED(_QRNL_PRM+)
当我用一个声明为2.0 S的参数调用程序A时,我得到一个十进制数据错误.
这是预期的,还是这个编译器错误?
GIVEN:我最好是AS400平台的新手
问题:我们需要将可变宽度,管道分隔的ASCII文件从Windows 2003服务器传输到在V6R1上运行的FTP服务器.文件到达并正确转换为EBCDIC,但它们非常庞大.3.5Mb文件成为200+ Mb成员.9Gb文件失败,因为我们碰到某种方式的配额.
有趣的事实:当以二进制模式(无翻译)完成时,文件在服务器端显示为FILENAME.FILE,其中一个成员名为FILENAME.MBR.传输大小是正确的,但由于ASCII编码,本机工具无法读取该文件.
有趣的事实:这已经在三台V6R1机器上尝试过,结果相同.所以我很确定这是我不太了解的正常行为.
我的直觉是,服务器正在扩展文件,因为它向它添加了新行 - 但我真的没有更好的猜测.有没有人见过这种行为,你知道如何避免这种行为吗?
提前感谢任何花时间做出贡献的人.我很感激.
我需要为我的RPG程序中的现有物理文件创建一个新成员。我知道两种方式,我必须说,我都不喜欢:
QCMDEXC拨打电话ADDPFMADDPFM从RPG 调用并调用第一个涉及将必须解析的命令组合在一起,QCMDEXC这对执行者来说听起来并不合理(我知道,这里的扩展部分不是调用,而是成员的创建)-但是真正困扰我的是它不是我觉得很简单,但是相反,它很难遵循并且不是很美观。
第二个程序使用编译的程序,因此不涉及任何摘要和解析。同样,它在您的RPG代码中看起来并不可怕,因为它只是一个正常的过程调用。但是我必须创建一个额外的外部程序,该程序必须转移到将使用我的RPG程序的所有系统上。这也与我的审美意识产生了冲突,创建了一个额外的源代码和二进制文件,仅用于一个API调用。
有没有一种方法可以直接调用api,而无需调用QCMDEXC?或者是创建PF新成员的另一种RPGish方法?Google根本对我没有帮助。
谢谢
SQL预编译器可以为SQLRPGLE源对象处理什么?
我在编译一个25,000行程序时遇到了一些问题,行限制是唯一可以解释我得到的错误的东西
CPF4131出现在程序文件中的可能原因是什么?
我们如何解决这个问题呢?
Message . . . . : Error message CPF4131 appeared during OPEN for file
TEST (C S D F).
Cause . . . . . : RPG procedure TEST2 in program TESTLIB/TEST2
received the message CPF4131 while performing an implicit OPEN operation on
file SOURCE. The actual file is SOURCE.
Run Code Online (Sandbox Code Playgroud) 我正在尝试在where子句中使用列的别名.例如:
SELECT col1 AS alias1, col2 + col3 as sums
FROM my_table
WHERE sums > 10
Run Code Online (Sandbox Code Playgroud)
但后来我收到一条错误消息:
列总和不在指定的表中.
无论如何我能做到吗?
我正在尝试使用PHP的ODBC驱动程序从Ubuntu服务器连接到客户端的IBM AS/400 DB2数据库.我也安装了unixODBC.我的odbcinst.ini看起来像这样:
[IBM DB2 ODBC DRIVER]
Description = ODBC 5.1 Driver for Database
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
FileUsage = 1
Run Code Online (Sandbox Code Playgroud)
我的odbc.ini看起来像这样:
[IBM DB2 ODBC DRIVER]
Driver = IBM DB2 ODBC DRIVER
Description = ODBC 5.1 Driver DSN
Run Code Online (Sandbox Code Playgroud)
现在,我的连接代码是:
$server = '12.345.678.90' //IP
$port = '446' //PORT
$username = 'my_username';
$password = 'my_password';
$connect = odbc_connect("DRIVER = {IBM DB2 ODBC DRIVER};System=$server:$port;Uid=$username;Pwd=$password;", $username, $password);
if(!$connect)
echo 'Cannot Connect!';
else
echo 'Connected!';
Run Code Online (Sandbox Code Playgroud)
我得到的错误是这样的:
Warning: odbc_connect(): …Run Code Online (Sandbox Code Playgroud) 我偶然发现了一些FMTDTA,它似乎是一种在旧RPG系统中早于SQL的查询/排序语言.我试图解开它的用法.
例:
物理文件布局:
ORNO S 9 0 1 9 Order No
ORCSTNO A 10 10 19 Custno
ORDAT S 6 0 20 25 Order Date
ORAMT S 12 2 26 37 Order Amt
Run Code Online (Sandbox Code Playgroud)
PF源成员ORDSRT中的排序标准:
HSORTR 25A Keyfields are 25 characters long - Sort Ascending
FNC 20 25 KEY 1: ORDER DATE
FNC 1 9 KEY 2: ORDERNO
FNC 10 19 KEY 3: CUST NO
FDC 1 37 Take whole record (1-37)
Run Code Online (Sandbox Code Playgroud)
排序命令
FMTDTA INFILE((MYLIB/ORDHED)) OUTFILE(QTEMP/ORDHED)
SRCFILE(MYLIB/MYSRC) SRCMBR(ORDSRT) OPTION(*NOPRT)
Run Code Online (Sandbox Code Playgroud)
结果:
成功按DATE/ORD排序#/ …
我一次又一次地读到IBM i是支持许多编程语言的现代系统。我如何确定除了COBOL和RPG之外还有哪些可用?
维基百科上提供了一份洗衣清单,我会对C,C ++,BASIC,SmallTalk和Pascal特别感兴趣。
https://zh.wikipedia.org/wiki/IBM_System_i#编程
可以运行哪些命令来确定安装了哪种语言?您如何在qshell环境中编辑这些语言的源代码?(Vi输入在qshell中似乎坏了...)