输入要查找的文件名及库名,查找用到此文件名的程式名称

发布于 2022-08-24 19:19:24 字数 17492 浏览 12 评论 9

以下是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这个表里查找即可得到想要的程式名称。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

扭转时空 2022-08-26 19:07:45

好东东,
收藏先.

[ 本帖最后由 fusl520 于 2009-5-25 16:29 编辑 ]

杀手六號 2022-08-26 18:25:09

从object考虑 正确性和保险性是不错 我考虑的好像有点理想化了  但是我们公司

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

谷夏 2022-08-26 18:23:26

我也是用DSPPGMREF,毕竟不会随便更改文件结构的.
程序改了的话,其他程序一般是不需要重新编译的.

桃扇骨 2022-08-26 17:14:32

不是用一个命令就可以达到了么?
DSPPGMREF把所有的程序引用的OBJ放到一个OUTFILE里,在用SQL去找好了,多简单

两人的回忆 2022-08-26 16:58:01

原帖由 goodbilly 于 2009-5-22 14:59 发表
(1)假如有一个表,你不知它会在什么样的程式中使用到。而当你把这个表给修改了。那用到的程式都要重新编译。
(2)假如有一个程式,可能会有几个或多个程式用到。如果把这个程式的代码给修改了。那其他的程式 ...

这个程序写的想法很不错

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

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

青柠芒果 2022-08-26 12:16:28

原帖由 oldv 于 2009-5-22 15:03 发表
好像qingzhou版主有一个精华帖里介绍过怎样看交叉引用。

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

疯到世界奔溃 2022-08-26 06:34:22

好像qingzhou版主有一个精华帖里介绍过怎样看交叉引用。

眉目亦如画i 2022-08-26 04:13:55

(1)假如有一个表,你不知它会在什么样的程式中使用到。而当你把这个表给修改了。那用到的程式都要重新编译。
(2)假如有一个程式,可能会有几个或多个程式用到。如果把这个程式的代码给修改了。那其他的程式也要重新编译。

内心旳酸楚 2022-08-25 22:08:00

这个程序的意义是什么呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文