- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用控制语言编写一个程序,该程序在调用使用它的 Java 实用程序之前在 IFS 中创建和填充配置文件。
我已成功调用 open() 和 close() API 来(重新)创建文件,但在我的一生中,我无法获得 write() 将某些内容放入文件中。到目前为止,这都是一次学习经历,但是在 write() 调用上没有错误消息,我无法看到我的问题出在哪里。
这几乎可以肯定是我处理变量的方式,但是调试 session 表明它们应该是这样。
/* ========================================================================= */
/* Processing for the PRCMQMSG command */
/* ========================================================================= */
PGM PARM(&ACTION &SRCMQ &TGTMQ)
/* Input parameters */
DCL VAR(&ACTION) TYPE(*CHAR) LEN(5)
DCL VAR(&SRCMQ) TYPE(*CHAR) LEN(125)
DCL VAR(&TGTMQ) TYPE(*CHAR) LEN(125)
/* Parameter elements */
DCL VAR(&SRCHOST) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&SRCMQ 3)
DCL VAR(&SRCPORT) TYPE(*DEC) STG(*DEFINED) +
LEN(5) DEFVAR(&SRCMQ 33)
DCL VAR(&SRCQMGR) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&SRCMQ 36)
DCL VAR(&SRCCHNL) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&SRCMQ 66)
DCL VAR(&SRCQUE) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&SRCMQ 96)
DCL VAR(&TGTHOST) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&TGTMQ 3)
DCL VAR(&TGTPORT) TYPE(*DEC) STG(*DEFINED) +
LEN(5) DEFVAR(&TGTMQ 33)
DCL VAR(&TGTQMGR) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&TGTMQ 36)
DCL VAR(&TGTCHNL) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&TGTMQ 66)
DCL VAR(&TGTQUE) TYPE(*CHAR) STG(*DEFINED) +
LEN(30) DEFVAR(&TGTMQ 96)
/* IFS details */
DCL VAR(&PATH) TYPE(*CHAR) LEN(128) +
VALUE('/mqutil')
DCL VAR(&CFGFILE) TYPE(*CHAR) LEN(20)
DCL VAR(&JOB) TYPE(*CHAR) LEN(6)
/* IFS API flags */
DCL VAR(&O_RDONLY) TYPE(*INT) VALUE(1)
DCL VAR(&O_WRONLY) TYPE(*INT) VALUE(2)
DCL VAR(&O_RDWR) TYPE(*INT) VALUE(4)
DCL VAR(&O_CREAT) TYPE(*INT) VALUE(8)
DCL VAR(&O_EXCL) TYPE(*INT) VALUE(16)
DCL VAR(&O_TRUNC) TYPE(*INT) VALUE(64)
DCL VAR(&O_APPEND) TYPE(*INT) VALUE(256)
DCL VAR(&O_CODEPAGE) TYPE(*INT) VALUE(8388608)
DCL VAR(&O_TEXTDATA) TYPE(*INT) VALUE(16777216)
DCL VAR(&S_IRUSR) TYPE(*INT) VALUE(256)
DCL VAR(&S_IWUSR) TYPE(*INT) VALUE(128)
DCL VAR(&S_IXUSR) TYPE(*INT) VALUE(64)
DCL VAR(&S_IRWXU) TYPE(*INT) VALUE(448)
DCL VAR(&S_IRGRP) TYPE(*INT) VALUE(32)
DCL VAR(&S_IWGRP) TYPE(*INT) VALUE(16)
DCL VAR(&S_IXGRP) TYPE(*INT) VALUE(8)
DCL VAR(&S_IRWXG) TYPE(*INT) VALUE(56)
DCL VAR(&S_IROTH) TYPE(*INT) VALUE(4)
DCL VAR(&S_IWOTH) TYPE(*INT) VALUE(2)
DCL VAR(&S_IXOTH) TYPE(*INT) VALUE(1)
DCL VAR(&S_IRWXO) TYPE(*INT) VALUE(7)
/* IFS API parameters */
DCL VAR(&STROPN) TYPE(*INT) /* Open flags */
DCL VAR(&STRMODE) TYPE(*INT) /* Mode flags */
DCL VAR(&STRPATH) TYPE(*CHAR) LEN(149)
DCL VAR(&STRCODEP) TYPE(*INT) VALUE(819)
DCL VAR(&STRHAND) TYPE(*INT)
DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')
DCL VAR(&CRLF) TYPE(*CHAR) LEN(2) VALUE(X'0D25')
DCL VAR(&ERRNO_PTR) TYPE(*PTR)
DCL VAR(&ERRNO) TYPE(*INT) STG(*BASED) +
BASPTR(&ERRNO_PTR)
DCL VAR(&ERRNO_CHR) TYPE(*CHAR) LEN(4)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&LINE) TYPE(*CHAR) LEN(250)
DCL VAR(&LINE_PTR) TYPE(*PTR) ADDRESS(&LINE)
DCL VAR(&LINELEN) TYPE(*UINT)
DCL VAR(&LINELEN_D) TYPE(*DEC) LEN(5 0)
/* Create and open a configuration file in the IFS */
RTVJOBA NBR(&JOB)
CHGVAR VAR(&CFGFILE) VALUE('mqconf_' |< &JOB)
CHGVAR VAR(&STRPATH) VALUE(&PATH |< '/' |< &CFGFILE +
|< '.connection' |< &NULL)
CHGVAR VAR(&STROPN) VALUE(&O_WRONLY + &O_CREAT + +
&O_TRUNC + &O_CODEPAGE + &O_TEXTDATA)
CHGVAR VAR(&STRMODE) VALUE(&S_IRWXU + &S_IRWXG + +
&S_IROTH)
CALLPRC PRC('open') PARM((&STRPATH) (&STROPN *BYVAL) +
(&STRMODE *BYVAL) (&STRCODEP *BYVAL)) +
RTNVAL(&STRHAND)
IF COND(&STRHAND = -1) THEN(DO)
CALLPRC PRC('__errno') RTNVAL(&ERRNO_PTR)
CHGVAR VAR(&ERRNO_CHR) VALUE(&ERRNO)
CHGVAR VAR(&MSGID) VALUE('CPE' || &ERRNO_CHR)
SNDPGMMSG MSGID(&MSGID) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
ENDDO
/* Write a line to the file */
CHGVAR VAR(&LINE) VALUE('This is a line of text in +
a file.' |< &CRLF)
RTVMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&LINE) +
MSGLEN(&LINELEN_D)
CHGVAR VAR(&LINELEN) VALUE(&LINELEN_D)
CALLPRC PRC('write') PARM((&STRHAND *BYREF) +
(&LINE_PTR *BYREF) (&LINELEN *BYVAL))
/* Close the configuration file */
CALLPRC PRC('close') PARM((&STRHAND *BYVAL))
ENDPGM
最佳答案
您可以使用 QSH 和重定向来写入 IFS,比尝试使用 C API 容易得多。
/* DISABLE STDOUT */
ADDENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE('NONE') REPLACE(*YES)
/* CREATE THE FILE WITH CCSID 819 */
ADDENVVAR ENVVAR(STRPATH) VALUE(&STRPATH) REPLACE(*YES)
QSH CMD('rm $STRPATH; touch -C 819 $STRPATH')
/* APPEND A LINE TO THE FILE */
ADDENVVAR ENVVAR(LINE) VALUE(&LINE) REPLACE(*YES)
QSH CMD('echo "$LINE">>$STRPATH')
关于在 iSeries 上从 CL 调用 write() C API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11238294/
我在 Linux Centos 服务器上使用 iSeries Access ODBC 驱动程序来使用 PHP/PDO 访问 as/400。 当网页进行 ODBC 查询时,它会写入 QZDASOINIT
是否有将表中的数据导出为 CSV 格式的 iSeries 命令? 我知道 Windows 实用程序,但由于它需要自动运行,我需要从 CL 程序运行它。 最佳答案 您可以使用 CPYTOIMPF 并指定
哪些工具可用于加密或密码保护 IFS 上存储的文件? *集成文件系统,可从 Windows 访问 最佳答案 您可以设置对象安全性,以便只有某些用户可以查看该文件。 有可供购买的加密工具。还有一些内置的
我知道我们很少,我们这些穷人使用 iSeries for DB2/AS400,但我希望有人能回答这个简单的问题。有什么方法可以在不使用两行 SQL 的情况下从插入语句返回标识值?我被迫在 C# 中使用
我有一个包含数千行的 iSeries 表,并且刚刚添加了一个新的数字/整数列作为表键。这基本上是一个整数 id 列 (1,2,3...)。 假设我无法将此列设为自动递增列。有没有一种简单的方法可以为每
我想更改我们在 iseries 服务器上运行的 mysql 服务器。更改将增加 mysql 将使用的内存量。在进行此更改之前,我想知道我们的系列中有多少内存?在任何给定时间点大约有多少可用?我看到了
我的主要语言是 vb/c#.net,我想制作一个带有菜单系统的控制台程序。 如果你们中有人使用过类似“dos”的程序或来自 IBM 的 iSeries,那么这就是我想要的风格。 所以,想知道是否有人知
我花了很多时间试图解决这个问题。所以也许任何人都可以在这里帮助我,请 :(。 我得到了一个 ibm-iaccess64.rpm,然后使用 alien 将它转换为 deb。然后安装它:sudo dpkg
我正在尝试在 iSeries 上创建一个新命令,其中一个参数必须是使用标准 LIBRARY/FILE MEMBER 语法的文件名,例如 MYCMD FILE(MYLIB/MYFILE MYMEMBER
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
谁能给我一个线索,如何在 DB2 iSeries 中创建/调用函数正则表达式语法。 例子: DECLARE VAL VARCHAR (16) DEFAULT 'abcde1235876e' ; DEC
有没有办法从 iSeries 终端发送电子邮件,从 IFS 添加附件?我知道如何使用 SNDDST 实用程序发送普通电子邮件。 最佳答案 有两种主要方法可以做到这一点。 Do-It-Yourselfe
在项目中实现敏捷需要具备重构能力。这并不是必须的,但代码重构已被证明是一种很好的工程实践。 在iSeries平台上的敏捷(Scrum)项目中,需要在RPG、RPG LE中开发(新代码和对遗留代码的修改
我已尝试使用以下脚本向我的列添加非空约束。 ALTER TABLE MYDB.RULES ALTER TYPEID SET NOT NULL; ALTER TABLE MYDB.RULES ALTER
我一直在测试 Java 程序以从 iSeries 连接到 Oracle 数据库。 如果我对连接字符串进行硬编码,一切都会正常。 如果我将连接字符串的详细信息作为参数传递,然后在 Java 程序中构建连
我正在尝试使用 .net 类连接到 AS400 服务器。 我添加了对 IBM.Data.DB.iSeries 的引用,并使用以下代码: var conn = new iDB2Connection("D
我已尝试使用以下脚本向我的列添加非空约束。 ALTER TABLE MYDB.RULES ALTER TYPEID SET NOT NULL; ALTER TABLE MYDB.RULES ALTER
我有一个脚本,如果它试图创建的任何过程已经存在,它就会失败。如果此过程已创建,我如何检查/删除? 最佳答案 我猜是这样的: IF EXISTS ( SELECT * FROM SYSP
有没有办法可以在 QSH 命令中加载属性文件。 问题是我的系统正在 Java 1.4 版本上运行,而我的程序仅在 Java 1.6 版本上运行。所以我写了一个属性文件,上面写着,采用 1.6 版本,但
我有一个 Java 应用程序,我将使用 CommandCall 远程调用它。 目前我是放在/home/username文件夹下,并在JAVA命令的CLASSPATH参数中指定这个文件夹。 但现在我必须
我是一名优秀的程序员,十分优秀!