免费注册 查看新帖 |

Chinaunix

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

输入要查找的文件名及库名,查找用到此文件名的程式名称 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-22 13:52 |只看该作者 |倒序浏览
以下是DISPLAY FILE 代码:
     A*%%TS  SD  20090521  122245  ITJLLI      REL-V5R3M0  5722-WDS
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A                                      PRINT
     A                                      CF03(03 'EXIT')
     A******************************************************************
     A          R DSPR1
     A*%%TS  SD  20090521  122245  ITJLLI      REL-V5R3M0  5722-WDS
     A                                      OVERLAY
     A                                      PUTOVR
     A                                      BLINK
     A                                      TEXT('Single Screen')
     A                                  1  2'FIND'
     A            MSGFLD0001    40A  O  1 20MSGID(L01 9301 SSAZ03)
     A                                      COLOR(WHT)
     A            WSID          10A  O  1 62
     A                                  1 73DATE
     A                                      EDTCDE(Y)
     A                                  2  2'SCRN-1'
     A                                  2 21'Find File Or Program Which Program-
     A                                       Use'
     A                                      COLOR(BLU)
     A                                  2 62USER
     A                                  2 73TIME
     A                                  8  8'Find  Strings :'
     A            FINDF         10A  B  8 26
     A                                 10  8'Find  Library :'
     A            FINDL         10A  B 10 26
     A                                 23  2'F3=Exit'
     A                                      COLOR(BLU)
     A                                 23 12'Enter =Process'
     A                                      COLOR(BLU)


以下是CLP 代码:
/*********************************************************************/
/* COPYRIGHT SYSTEM SOFTWARE ASSOCIATES,INC.  CHICAGO,ILL. 1993      */
/*********************************************************************/
/*                                                                   */
/* Program Id   - Find                                               */
/* Program Name - Find File Or Program Which Program Use In The Input*/
/*                Library                                            */
/* Author       - MarkLi                                             */
/*                                                                   */
/* Bmr     Date   Description                                        */
/* ----  -------  -----------------------------------------------    */
/*********************************************************************/
             PGM
             DCLF       FILE(FINDFM)
             DCLF       FILE(ITJLLI/PGMOBJ) OPNID(A)
             DCL        VAR(&WSID)    TYPE(*CHAR) LEN(10)
             DCL        VAR(&USER)    TYPE(*CHAR) LEN(10)
             DCL        VAR(&JBNR)    TYPE(*CHAR) LEN(10)
             DCL        VAR(&PGMNAME) TYPE(*CHAR) LEN(10) /*OBJ NAME*/
             DCL        VAR(&PGMLIB)  TYPE(*CHAR) LEN(10) /*OBJ LIBL*/
             DCL        VAR(&FINDF)   TYPE(*CHAR) LEN(10) /*FIND FILE*/
             DCL        VAR(&FINDL)   TYPE(*CHAR) LEN(10) /*FIND LIB*/
             RTVJOBA    JOB(&WSID) USER(&USER) NBR(&JBNR)

DISPLAY:
             SNDRCVF    RCDFMT(DSPR1)
             RMVMSG     PGMQ(*SAME) CLEAR(*ALL)
/*  Cmd-3 pressed = end program                                      */
/*  Find file eq *blanks = end program                               */
/*  Find library eq *blanks = end program                            */
             IF         COND(&IN03 *EQ '1') THEN(DO)
             SNDPGMMSG  MSG('Program End')
             GOTO EPGM
             ENDDO
             IF         COND(&FINDF *EQ ' ') THEN(DO)
             SNDPGMMSG  MSG('The Find File Can''t Be Blanks!')
             GOTO EPGM
             ENDDO
             IF         COND(&FINDL *EQ ' ') THEN(DO)
             SNDPGMMSG  MSG('The Find Library Can''t Be Blanks!')
             GOTO EPGM
             ENDDO
             IF         COND(&FINDL *NE ' ') THEN(DO)
             CHKOBJ     OBJ(&FINDL) OBJTYPE(*LIB)
             MONMSG     MSGID(CPF9801) EXEC(SNDPGMMSG MSGID(CPF9801) +
                          MSGF(QCPFMSG))
             GOTO DISPLAY
             ENDDO
/* Process Program                                                  */
             CLRPFM     FILE(ITJLLI/PGMOBJ)
             DSPOBJD    OBJ(&FINDL/*ALL) OBJTYPE(*PGM) +
                          OUTPUT(*OUTFILE) OUTFILE(ITJLLI/PGMOBJ)
             MONMSG     MSGID(CPF2123) EXEC(GOTO EPGM)
             CLRPFM     FILE(ITJLLI/PGMOBJD)
LOOPREAD:   RCVF       OPNID(A)
             MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(EOF))
             CHGVAR     VAR(&PGMNAME) VALUE(&A_ODOBNM)
             CHGVAR     VAR(&PGMLIB) VALUE(&A_ODLBNM)
             DSPPGMREF  PGM(&PGMLIB/&PGMNAME) OUTPUT(*OUTFILE) +
                          OUTFILE(ITJLLI/PGMOBJD) OUTMBR(*FIRST *ADD)
             GOTO       CMDLBL(LOOPREAD)
EOF:        CALL       PGM(FIND01) PARM(&FINDF)
EPGM:       ENDPGM


以下是一个子过程文件代码:
     F***************************************************************
     F* PROGRAM I.D.        : FIND01
     F* PROGRAM DESCRIPTION : FIND FILE OR PROGRAM WHICH PROGRAM USE
     F* WRITED  BY          : MARK LI
     F* DATE                :
     F*
     F*   MOD#    Date     Description
     F* ------- ---------  ------------------------------------------
     F***************************************************************
     FPGMOBJD UF  E           K        DISK
     F***************************************************************
     I*
     I*
     C*****************************************************************
     C*
     C           *ENTRY    PLIST
     C                     PARM           FILEN  10
     C*****************************************************************
     C*
     C                     READ PGMOBJD                  51
     C           *IN51     DOWEQ*OFF
     C*
     C           WHFNAM    IFNE FILEN
     C                     DELETQWHDRPPR
     C                     CLEARQWHDRPPR
     C                     ENDIF
     C*
     C                     READ PGMOBJD                  51
     C                     ENDDO
     C*
     C                     SETON                     LR
     C*


通过运行以上的程式FIND之后,可以到ITJLLI/PGMOBJD这个表里查找即可得到想要的程式名称。

论坛徽章:
0
2 [报告]
发表于 2009-05-22 14:44 |只看该作者
这个程序的意义是什么呢

论坛徽章:
0
3 [报告]
发表于 2009-05-22 14:59 |只看该作者
(1)假如有一个表,你不知它会在什么样的程式中使用到。而当你把这个表给修改了。那用到的程式都要重新编译。
(2)假如有一个程式,可能会有几个或多个程式用到。如果把这个程式的代码给修改了。那其他的程式也要重新编译。

论坛徽章:
0
4 [报告]
发表于 2009-05-22 15:03 |只看该作者
好像qingzhou版主有一个精华帖里介绍过怎样看交叉引用。

论坛徽章:
0
5 [报告]
发表于 2009-05-22 15:11 |只看该作者
原帖由 oldv 于 2009-5-22 15:03 发表
好像qingzhou版主有一个精华帖里介绍过怎样看交叉引用。


呵呵。这个本人经过一些群里的兄弟,集合他们的看法,自己弄的一个小程式。因为我也试过会出现以上所说的问题,而且觉得找得太辛苦。所以就写了一下。

论坛徽章:
0
6 [报告]
发表于 2009-05-22 15:48 |只看该作者
原帖由 goodbilly 于 2009-5-22 14:59 发表
(1)假如有一个表,你不知它会在什么样的程式中使用到。而当你把这个表给修改了。那用到的程式都要重新编译。
(2)假如有一个程式,可能会有几个或多个程式用到。如果把这个程式的代码给修改了。那其他的程式 ...


这个程序写的想法很不错

你说的功能好像可以在代码里面有一个搜索功能吧 搜索对应的字符串 然后对应的程序就逐一显示了

不过你这个方法比较不错 收藏一下

论坛徽章:
0
7 [报告]
发表于 2009-05-22 16:00 |只看该作者
不是用一个命令就可以达到了么?
DSPPGMREF把所有的程序引用的OBJ放到一个OUTFILE里,在用SQL去找好了,多简单

论坛徽章:
0
8 [报告]
发表于 2009-05-23 10:21 |只看该作者
我也是用DSPPGMREF,毕竟不会随便更改文件结构的.
程序改了的话,其他程序一般是不需要重新编译的.

论坛徽章:
0
9 [报告]
发表于 2009-05-25 09:06 |只看该作者
从object考虑 正确性和保险性是不错 我考虑的好像有点理想化了  但是我们公司

只有要重新编译才会改写代码。

论坛徽章:
0
10 [报告]
发表于 2009-05-25 16:27 |只看该作者
好东东,
收藏先.

[ 本帖最后由 fusl520 于 2009-5-25 16:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP