问题标签 [ibm-ifs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
character-encoding - 复制到 IFS 时,Java 源代码中的标点符号更改为重音字母
我正在尝试运行一个使用 java 方法的 RPGLE 程序。我正在通过 FTP 将 java 代码(xxxx.java 文件)从我的系统(Windows XP)传输到 AS/400 IFS 目录。将其传输到 IFS 后,文件 CCSID 显示为 819。
我在 QSH 中编译 .java 文件,没有显示错误。但是会生成两个类文件。即
Mailer.java
→Mailer.class
和Mailer$1.class
但是当我调用我的 RPGLE 程序时,会显示一个 java 异常......
Mailer.java
当我通过按选项 5 在 IFS 中看到该文件时,像{
, }
, [
, ]
, !
,/
等\
符号将更改为其他一些符号。
所以请给我一些解决方案,这样我就可以运行这个程序。如何在不将字符更改为不同字符的情况下将 .java 文件传输到 IFS?
这里有一些细节......
系统 CCSID 值 - 819
工作 CCSID - 273
我在 IFS 目录中的 Java 源代码:
显示运行 RPGLE 程序的 Java 异常:
java - 在代码中使用 JT400 复制 IFS 文件
我有这段代码可以将文件从 IFS 复制到本地驱动器。我想就如何使它变得更好提出一些建议。
在哪里
- 源 = 完整的 IFS 路径 + 文件名和
- 目的地 = 完整的本地路径 + 文件名
我想就以下问题提出一些问题:
一个。性能注意事项
- 这会对主机 AS400 系统的 CPU 使用率产生重大影响吗?
- 这会对要使用的 JVM 产生很大影响吗(就内存使用而言)
- 将其包含在 Web 应用程序中会影响应用程序服务器的性能(这是否是一项繁重的任务)?
- 使用它来复制多个文件(冗余运行)会对所有相关资源造成很大负担吗?
湾。代码质量
- 我的 IFSFileInputStream 实现是否足够,或者一个简单的 FileInputStream 对象能很好地完成这项工作?
AFAIK,我只需要 AS400 对象来确保引用的源文件是来自 IFS 的文件。
我是 AS400 和 IFS 的菜鸟,我想向有经验的人征求诚实的意见。
c - 在 iSeries 上从 CL 调用 write() C API
我正在尝试用控制语言编写一个程序,该程序在调用使用它的 Java 实用程序之前在 IFS 中创建和填充配置文件。
我已成功调用 open() 和 close() API 来(重新)创建文件,但对于我来说,我无法通过 write() 将某些内容放入文件中。到目前为止,这一切都是一次学习经历,但是在 write() 调用上没有错误消息,我无法看到我的问题所在。
这几乎肯定是我处理变量的方式,但调试会话表明它们应该是它们应该是的。
我曾尝试以与 &ERRNO 和 &ERRNO_PTR 相同的方式声明 &LINE 和 &LINE_PTR 变量,但是当我尝试将值分配给 &LINE 时,这给了我一个指针未设置错误。我认为这是因为首先访问了 &ERRNO_PTR,而 &LINE_PTR 并非如此。无论如何,这可能是一个红鲱鱼。
RTVMSG 命令是一种查找字符串长度(不包括尾随空格)的技巧。
我已经在调试中运行了代码,在调用 write() 之前 &LINE 包含我所期望的内容,&LINELEN 也是 35。然后调用 write() 并且不会导致错误,但行中也不存在文件。该文件仍然是空的。
最后一点。该程序的所有参数当前都未使用,但为了完整性,我已将其保留,以防我对它们做了一些愚蠢的事情。所以本质上,可以忽略前两个声明块。
任何帮助表示赞赏。
ibm-midrange - 将流文件复制到打印机文件
我需要使用 IBM i 系统。该任务包括将存储的文件(PCL 格式)存储到 IFS 并将其(完全二进制)复制到输出队列。
为此,我遵循 4 个步骤:
但是在第二步中,文件似乎被系统截断了。
有谁知道如何复制流文件而不被截断?
我运行的命令如下:
谢谢!
ibm-midrange - 如何以编程方式确定 IFS 中文件的 CCSID?
我在 IFS 中有许多具有多种 CCSID(0、37、819、1200、1252 等)的文件,我的任务是编写一个简单的 RPGLE [1] 程序,该程序将允许用户查看任何这些文件的内容。
我们的系统 (V6R1) CCSID (DSPSYSVAL QCCSID) 是 65535 [2],我们的作业的默认 CCSID 是 37,这意味着当我尝试显示 CCSID 819 (ASCII) 时,我看到了垃圾——符号、随机颜色等。
我熟悉通过QtqIconvOpen API 将数据从一个 CCSID 转换为另一个,所以如果我知道一个文件的 CCSID 与我们的默认 CCSID 不同,我可以转换它。我几年前编写了代码来做到这一点,它工作得很好。
我的问题是以编程方式找出 IFS 文件的 CCSID。谷歌搜索后,我发现的唯一相关信息是来自 JamesA 的 Stackoverflow(如何确定 CPYFRMIMPF 命令中使用的 CCSID?),他指出您可以在 QSHELL 中执行“ls -S”以获取显示其 CCSID 的文件列表和文件名。
所以理论上我可以执行ls -S filename
,解析输出以获取 CCSID,然后在必要时使用该 CCSID 执行数据转换。虽然这是一个丑陋的黑客,但如果可能的话,我更喜欢使用 IBM API。
有谁知道这样的 API 或更优雅的 hack,而不是从 解析列表ls -S filename
?
[1] 我使用 C API's open()
,read()
并close()
进行数据的实际读取。
[2] 我知道 65535 是一个糟糕的选择,但我对此无能为力。
view - Crystal 报表未连接到来自 AS/400 IFS 的视图
我这里有一个奇怪的案例。我在 AS/400 中创建了一个视图。我需要查看不符合逻辑的视图,因为我需要执行 UNION ALL。视图已创建,我去了 IFS 并授予了所有权限。但是,当我打开 Crystal Reports,连接到 iSeries,然后转到视图的那个库时,它没有显示,所以我不能使用。
还有什么我需要做的吗?
我只是尝试了别的东西。这是视图:
现在在 Crystal 报表中还有 COMMAND 用于获取您的数据,在那里您可以进行相同的查询,但是尽管出于时间考虑我希望它在 AS/400 上,但需要联合,否则我必须通过 CL all 运行查询天。所以我从 SELECT 点获取了上面的代码,并得到了这个错误:
未能从数据库中检索数据。详细信息:HY000 IBM ISeries ACCESS ODBC DRIVER (DB2 UDB) sql 5016 - 限定对象名称 ICLOCMLM 无效。供应商代码 5016。
不确定那是什么意思。
shell - 在大目录中查找文件 - 非常慢
我有一个包含文件的目录。存档非常大,里面有 150 万个 pdf 文件。
该目录存储在具有 OS V7R1 的 IBM i 服务器上,并且机器是新的并且速度非常快。
这些文件的名称如下:
不,我尝试使用 Shell 使用 find 命令查找文件。
该命令花费了很长时间,因此我中止了该操作,但没有任何结果。
如果我尝试使用较小的目录,一切正常。
后来我想要一份每天运行的工作,并找到过去 24 小时创建的文件,但我运行速度太慢了,我忘记了这一点。
xml - DB2 将 CLOB (>16Mb) 保存到 IFS
我正在尝试将字段(CLOB)的内容保存到 IFS(iSeries)上的文件中。
该文件在保存内容之前不存在并且文件被完美地创建,但我不知道为什么在开始时(总是位置 1 和 2)文件包含两个奇数字符。这些字符并不总是相同的。
我认为这是 clob 字段和文件之间的转换问题(ifs - smtf) 有人如何解决这个问题吗?
提前致谢!!
PD.:抱歉,我无法附上图片,因为我需要至少 10 个声望才能发布图片。
RPGLE 中的变量定义
ibm-midrange - AS/400 IFS 权威问题
我对管理 AS/400 IFS 权限感到有些头疼。IFS 文件是使用 CLE 或 ILE-COBOL 通过调用 CPYTOIMPF 创建的。默认情况下,IFS 下的权限设置为 700。问题是我用来创建文件的 ID (A),而使用它的人将是另一个 ID (B)。因此,即使 A 和 B 在同一组 GP01 中,B 也无法读取该文件。
我已经尝试将 IFS 根目录 /RootDir/MyDir CHGPGP 放到同一个组中,比如 GP01。另外,我还CHGAUT OBJ('/RootDir/MyDir') USER(*PUBLIC) DTAAUT(*RW) OBJAUT(*NONE)。但是,我仍然无法通过 ID B 访问该文件。
请帮忙!提前致谢。
shell - 递归搜索 IBMi IFS 上目录中每个文件的目录
我正在尝试编写两个(编辑:shell)脚本并且遇到了一些困难。我将解释目的,然后提供脚本和当前输出。
1:递归获取目录中每个文件名的列表。然后在该目录中的所有文件的内容中搜索每个文件名。应返回特定文件名每次出现的路径、文件名和行号。
2:递归获取目录中每个文件名的列表。然后为每个文件名搜索目录中所有文件的内容。应该返回在目录中的任何文件中都没有找到的每个文件的路径和文件名。
我最终想使用脚本 2 来查找和删除(实际上将它们移动到另一个目录进行归档)网站中未使用的文件。然后我想使用脚本 1 查看每次出现并过滤任何重复的文件名。
我知道我可以让脚本 2 在运行时移动每个文件,而不是作为第二步,但我想在执行任何操作之前确认脚本功能是否正确。我会在确认它运行正常后对其进行修改。
我目前正在 strqsh 中的 IMBi 系统上对此进行测试。
我的测试文件夹结构是:
我在一些包含现有文件名的文件中有文本。
这是我当前的脚本 1:
现在它可以正常工作,但提供匹配文件的路径除外。grep 默认不返回文件路径吗?
我离脚本 2 有点远:
我不知道如何将字符串$i
拆分为数组。我在第 6 行不断收到错误消息
我打算在一个实际的 linux 发行版上尝试这个,看看我是否得到不同的结果。
我很欣赏任何先进的见解。