免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3905 | 回复: 7
打印 上一主题 下一主题

如何把一個LIB的"PF-SRC”寫到一個FILE文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-13 12:57 |只看该作者 |倒序浏览
我想找出一個LIB所有的PF-SRC文件,然后把PF-SRC的名稱寫到一個FILE里面,看一过些指令,有OUTFILE的参数,是可以把所得到的结果放在FILE里面,请问有没有想关的指令,可以得到我想要的结果,我不想用WRKOBJPDM找出来后,一个一个手动记录。谢谢!

论坛徽章:
0
2 [报告]
发表于 2011-10-13 13:29 |只看该作者
回复 1# wuxing164


    你这个没法直接使用命令实现的,需要自己写个程序处理;
提供基本的处理思路:先收集lib下的信息dspfd,然后使用程序处理,将非src-pf的信息delete掉,然后可以显示在subfile也可以使用qry显示。

论坛徽章:
0
3 [报告]
发表于 2011-10-13 16:53 |只看该作者
回复 2# huangxkst


    dspfd是看FILE的信息吧。和LIB有關係嗎?

论坛徽章:
0
4 [报告]
发表于 2011-10-13 17:09 |只看该作者
本帖最后由 xjromance 于 2011-10-13 17:12 编辑

dspfd 可以列出来一个库下所有文件的信息。

论坛徽章:
0
5 [报告]
发表于 2011-10-13 20:26 |只看该作者
C语言编程方式,看看 QUSLOBJ API
  /*-------------------------------------------------------------------*/
  /* Call API to load the object names to the user space.              */
  /*-------------------------------------------------------------------*/
  QUSLOBJ(spc_name,            /* User space name and library    */
          fmt_name,            /* Format name                    */
          obj_lib,             /* Object name and library        */
          obj_type,            /* Object type                    */
          error_code);         /* Optional Parameter Group 1:
                                    void *   Error code          */
  if(error_code.ec_fields.Bytes_Available > 0)
  {
    strmovcpy(ErrMsgId, error_code.ec_fields.Exception_Id, 7);
    printf("Error: QUSLOBJ() MsgId='%s'\n", ErrMsgId);
    return ERR_QUSLOBJ;
  }

  /*-------------------------------------------------------------------*/
  /* Call API to return the starting position of the first block, the  */
  /* length of each data block, and the number of blocks are returned. */
  /*-------------------------------------------------------------------*/
  rc = ReadUserSpace4ListAPIsGenericHeaderFmt0100(spc_name,
                                                  &Offset_to_header_section,
                                                  &Size_header_section,
                                                  &entrypos,
                                                  &numentries,
                                                  &entrylen,
                                                  ErrMsgId);

  if(rc < 0)
    return rc;

  /****************************************************************/
  /* Loop through the entries and get fld of the list             */
  /****************************************************************/
  rc = ReadUserSpace_QUSLOBJ_OBJL0700(spc_name,
                                      entrypos,
                                      numentries,
                                      entrylen,
                                      printMode,
                                      fp,
                                      ErrMsgId);
。。。。。。

论坛徽章:
0
6 [报告]
发表于 2011-10-21 14:44 |只看该作者
写cl程序去实现。
主要命令   RTVMBRD  FILE(&LIB/&PF-SRC)  MBR(*FIRST) RTNMBR(&MBR)
                得到的 &MBR 既是,写入你指定的表中去。还可以取出别的信息,请看参考书。

不断循环,直到取出  (&LIB/&PF-SRC)下的最后一个PF成员。

论坛徽章:
0
7 [报告]
发表于 2011-10-21 17:00 |只看该作者
===> DSPFD FILE(LIB/*ALL) TYPE(*MBR) OUTPUT(*OUTFILE) FILEATR(*ALL) OUTFIL
E(QTEMP/BB)                 

输出文件中有个字段:MBDTAT,可以区分PF-SRC 、PF-DTA
Field                 Text                                
MBDTAT            File type:  D=*DATA, S=*SRC

论坛徽章:
0
8 [报告]
发表于 2012-08-13 17:30 |只看该作者
本帖最后由 iCloud400 于 2012-08-13 17:39 编辑

RTVMBRD返回的只是PF, 没法区分PF-SRC还是PF-DTA

所有区分PF-SRC, PF-DTA的API或命令最终调用的都是这个API:  QDBRTVFD

最好的办法就是直接调用这个。但是操蛋的是其信息存放位置:API接口参数的第9个字符的第5个 bit, 如果为1,就是SRC,如果为0就是DTA
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP