首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JT400 -显示SpooledFile的内容

JT400 -显示SpooledFile的内容
EN

Stack Overflow用户
提问于 2015-02-12 16:59:11
回答 2查看 1.3K关注 0票数 1

我尝试用库SpooledFile显示jt40的内容。我使用以下代码:

代码语言:javascript
复制
public static void printJogLog(AS400 as400, Job j) {
    SpooledFile spooledFile = new SpooledFile(as400, "QPJOBLOG", 1, j.getName(), j.getUser(), j.getNumber());

    try {
        PrintParameterList printParms = new PrintParameterList();
        printParms.setParameter(PrintObject.ATTR_WORKSTATION_CUST_OBJECT, "/QSYS.LIB/QWPDEFAULT.WSCST");
        printParms.setParameter(PrintObject.ATTR_MFGTYPE, "*WSCST");
        PrintObjectPageInputStream is = spooledFile.getPageInputStream(printParms);
        PrintObjectTransformedInputStream in = spooledFile.getTransformedInputStream(printParms);

        byte[] buf = new byte[32767];
        StringBuffer sbuf = new StringBuffer();
        int bytesRead = 0;
        do {
            bytesRead = in.read(buf);
            if (bytesRead != -1) { // process the spooled file data.
                sbuf.append(new String(buf, 1, bytesRead, "CP936"));
            }
        } while (bytesRead != -1);
        System.out.println(sbuf.toString());

        BufferedReader d = new BufferedReader(new InputStreamReader(is, "UTF8"));
        String data = "";
        String pageSpool = "";
        while ((data = d.readLine()) != null) {
            pageSpool += data + "\n";
        }
        System.out.println(pageSpool);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

它打印SpooledFile的内容,但我的特殊字符有问题。我得到了这样的东西:

CPF412C Echappement 40 12/02/15 17:08:33,699347 QTAERR QSYS 00EA QSRVALDV *STMT模块de de de.。。::QSRVALDV Proc俤预定目的地。OPENVOLUME指令。。。。。。。。* 3716条信息。。。。* Cartouche PPRD05输入原因。。。。。:La cartouche PPRD05 a倀�indiqu俥pour l‘’unit�de bandoth妐ue TAPVTL01凯费尔。。。::Effectuez l‘ue des op俽ations suivantes,puis renouvelez votre demande:- Sp俢ifiez identificateur de cartouche ez俽ez la cartouche dans la俽妐ue。坱re倀�retir俥.Indiquez une le param妕re vol.p.

我想我需要为PrintObjet设置一些参数,但是我不知道如何选择好的参数和值。

有人能解释我怎么知道我需要哪个参数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-16 08:29:19

我在这里找到了一个解决方案:http://fixunix.com/ibm-as400/258696-java-read-french-spool.html

我修改我的功能如下:

代码语言:javascript
复制
public static void printJobLog2(AS400 as400, Job job) {
    SpooledFile spooledFile = new SpooledFile(as400, "QPJOBLOG", 1, job.getName(), job.getUser(), job.getNumber());
    PrintParameterList printParms = new PrintParameterList();
    printParms.setParameter(PrintObject.ATTR_WORKSTATION_CUST_OBJECT, "/QSYS.LIB/QWPDEFAULT.WSCST");
    printParms.setParameter(PrintObject.ATTR_MFGTYPE, "*WSCST");
    try {
        InputStreamReader in = new
                InputStreamReader(spooledFile.getTransformedInputStream(printParms), "cp850");
        char[] buf = new char[32767];
        StringBuffer sbuf = new StringBuffer();
        if (in.ready()) {
            int bytesRead = 0;
            bytesRead = in.read(buf, 0, buf.length);
            while (bytesRead > 0) {
                sbuf.append(buf, 0, bytesRead);
                bytesRead = in.read(buf, 0, buf.length);
            }
        }
        System.out.println(sbuf.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

现在起作用了。

CPF412C Echappement 40 16/02/15 08:55:14 184776 QTAERR QSYS 00EA QSRVALDV QSYS *STMT模块de de de.。。* QSRVALDV项目。OPENVOLUME指令。。。。。。。。* 3716条信息。。。。* Cartouche SCOH07输入原因。。。。。La cartouche SCOH07 aétéindiquée pour l‘’unitéde bandothèque TAPVTL01,mais elle n‘elle e pas dans l’‘unitéTAPVTL01。

票数 1
EN

Stack Overflow用户

发布于 2015-02-13 14:29:08

看上去是CCSID的匹配。您确定要用InputStreamReader打开UTF8吗?尝试BufferedReader d = new BufferedReader(new InputStreamReader(is));并让机器决定字符集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28483348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档