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

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设备40 2015年12月2日17:08:33,699347 QTAERR QSYS 00EA QSRVALDV QSYS * STMT
                                       目标模块。 。 。 :QSRVALDV
                                       采购目的地。 :OPENVOLUME
                                       指示。 。 。 。 。 。 。 。 :3716
                                       信息 。 。 。 。 :Cartouche PPRD05不可侵犯
                                       原因。 。 。 。 。 :La cartouche PPRD05是一个独立的单位。
                                         Bandoth妐ue TAPVTL01,巴黎圣母院。 e
                                         放任。 。 。 :效果特效勋章,雷诺维兹
                                         投票要求:-正确识别汽车
                                         ins俽ez la cartouche dans la biblioth妐ue。 La cartouche en peut-坱re伥。
                                         retir俥。 -Si vous avezindiqu�VOL(* MOUNT),l'identificateur de la
                                         cartouche n'a peut-坱pas伥.dermin。印染工业
                                         参数音量-发生事故的情况持续不断,梅特斯州立部队
                                         remettez-la en fonction�l'aidede la commande VRYCFG(Changer l'伥at d'une
                                         配置)参数重置(*是)。 -司拉突击队
                                         ADDTAPCTG(Ajouter une cartouche de bande)俶ise,il se peut que la
                                         cartouche ait伥retir俥du guichet免费服务先锋儿子的使用。


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

有人可以解释我如何知道我需要哪个参数吗?

最佳答案

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

我这样修改我的功能:

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附件40 16/02/15 08:55:14,184776 QTAERR QSYS 00EA QSRVALDV QSYS * STMT
                                       目标模块。 。 。 :QSRVALDV
                                       目的地程序。 :OPENVOLUME
                                       指示。 。 。 。 。 。 。 。 :3716
                                       信息 。 。 。 。 :Cartouche SCOH07不可侵犯
                                       原因。 。 。 。 。 :香格里拉cartouche SCOH07 aétéindiquéepour l'unitéde
                                         班德索克TAPVTL01,巴黎圣母院TAPVTL01。

关于java - JT400-显示SpooledFile的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28483348/

10-08 22:59