免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9144 | 回复: 17

方便开发的工具之七 [复制链接]

论坛徽章:
0
发表于 2005-03-25 15:39 |显示全部楼层
该程序是用于SOURCE的注释功能,在代码行中按下F7在注释和非注释行之间进行切换.

添加方式如图所示:

代码如下:

     H**********************************************************************
     H*        RPGLE - SEUCMT  - ADD COMMENT IN SEU                        *
     H*                                                                    *
     H*    COPYRIGHT (C) 2005 YAO ZHONGGUANG.  ALL RIGHTS RESERVED.        *
     H**********************************************************************
     H DATEDIT(*YMD)
     H TIMFMT(*HMS)
      **********************************************************************
      *    DEFINITION SPECIFICATIONS
      **********************************************************************
      **********************************************************************
      * Entry Parameters declarations
      **********************************************************************
     D ParmSeuInput    S               *
     D ParmSeuOut      S               *
     D ParmSeuLine     S               *
      **********************************************************************
      * Header information
      **********************************************************************
     D HeaderInfo      DS                  BASED(ParmSeuInput)
     D  RecLength              1      4B 0
     D  CursorRRN              5      8B 0
     D  CursorPos              9     12B 0
     D  CCSID                 13     16B 0
     D  InRecords             17     20B 0
     D  MemberName            21     30
     D  FileName              31     40
     D  LibraryName           41     50
     D  MemberType            51     60
     D  CmdKey                61     61
     D  Mode                  62     62
     D  SplitSess             63     63
     D  Res                   64     64
      **********************************************************************
      * Return Codes
      **********************************************************************
     D ReturnInfo      DS                  BASED(ParmSeuOut)
     D  RetCode                1      1
     D  Res2                   2      4
     D  OutRecords             5      8B 0
     D  InsertSeq              9     15
     D  Res3                  16     37
      **********************************************************************
      * Line Command and Text
      **********************************************************************
     D LineInfo        DS                  BASED(ParmSeuLine)
     D  LineCmd                       7
     D  LineRetCode                   1
     D  SourceSeq                     6
     D  SourceDate                    6
     D  SourceStmt                  256
      **********************************************************************
      * Send message API
      **********************************************************************
     D SndPgmMsg       PR                  ExtPgm('QMHSNDPM')
     D  MsgID                         7    Const
     D  MsgFile                      20    Const
     D  MsgData                     256    Const
     D  MsgDataLen                   10i 0 Const
     D  MsgType                      10    Const
     D  MsgStackEnt                  10    Const
     D  MsgStackCnt                  10i 0 Const
     D  MsgKey                        4    Const
     D  MsgAPIError                        like(APIError)
      **********************************************************************
      * API error structure
      **********************************************************************
     D APIError        DS                  inz
     D  ErrSSize                     10i 0 inz(%len(APIError))
     D  ErrSUse                      10i 0
     D  ErrSMsgID                     7
     D  ErrSResrv                     1
     D  ErrSData                     80
      **********************************************************************
      * Work Variables
      **********************************************************************
     D wMsgID          S              7
     D wSource         S            256    Varying
     D wPos            S              3S 0
     D wSourceLen      S             10i 0
     D wBlankLine      S                   Like(LineCmd)
     D wFirstLine      S               *
     D wWorkLine       S               *
      **********************************************************************
      *    Work Const
      **********************************************************************
     D wCmtS           C                   Const('/*')
     D wCmtE           C                   Const('*/')
      **********************************************************************
      *    CALCULATION SPECIFICATIONS
      **********************************************************************
      *
     C     *Entry        Plist
     C                   Parm                    ParmSeuInput
     C                   Parm                    ParmSeuOut
     C                   Parm                    ParmSeuLine
      *
      **********************************************************************
      *    M A I N - R O U T I N E
      **********************************************************************
     C*
     C* Update Mode
     C                   If        Mode = 'U'
     C*
     C     CmdKey        CasNE     '0'           SubLineKey
     C                   Endcs
     C*
     C                   Else
     C* Browse Mode
     C                   Eval      RetCode = '1'
     C                   Eval      wMsgID  = 'EDT1202'
     C                   Exsr      SubSndMsg
     C*
     C                   Endif
     C* Return
     C                   Eval      *InLr = *On
     C                   Eval      *InRt = *On
     C*
      **********************************************************************
      *
      **********************************************************************
     C     SubLineKey    Begsr
     C*
     C                   If        CmdKey    = '7'
     C*
     C                   If        CursorPos = 0
     C                   Eval      RetCode   = '1'
     C                   Eval      wMsgID    = 'EDT2010'
     C                   Exsr      SubSndMsg
     C                   Else
     C                   Exsr      SubSltType
     C                   Endif
     C*
     C                   Else
     C*
     C                   Eval      RetCode   = '1'
     C                   Eval      wMsgID    = 'EDT0001'
     C                   Exsr      SubSndMsg
     C*
     C                   Endif
     C*
     C                   Endsr
      **********************************************************************
      *
      **********************************************************************
     C     SubSltType    Begsr
     C*
     C                   Select
     C*
     C                   When      %Subst(MemberType:1:3) = 'CLP'
     C                   Exsr      SubClpCmt
     C                   When      %Subst(MemberType:1:3) = 'RPG'  Or
     C                             %Subst(MemberType:4:3) = 'RPG'  Or
     C                             %Subst(MemberType:1:2) = 'PF'   Or
     C                             %Subst(MemberType:1:2) = 'LF'   Or
     C                             %Subst(MemberType:1:4) = 'DSPF' Or
     C                             %Subst(MemberType:1:4) = 'PRTF'
     C                   Exsr      SubRpgCmt
     C*
     C                   Endsl
     C*
     C                   Endsr
      **********************************************************************
      *
      **********************************************************************
     C     SubClpCmt     Begsr
     C*
     C                   Eval      SourceStmt = %Subst(SourceStmt:1:RecLength)
     C                   Eval      %Len(wSource) = RecLength
     C                   Eval      wSource = %Trim(SourceStmt)
     C*
     C                   If        wSource = *Blanks
     C                   Eval      RetCode = '1'
     C                   Goto      SubClpCmtEnd
     C                   Endif
     C*
     C* Remove Comment
     C                   If        %Subst(wSource:1:2) = wCmtS
     C*
     C                   Eval      wPos = %Scan(wCmtS:SourceStmt)
     C                   Eval      %Subst(SourceStmt:wPos:2) = '  '
     C                   Eval      wPos = %Scan(wCmtE:SourceStmt)
     C                   Eval      %Subst(SourceStmt:wPos:2) = '  '
     C* Add Comment
     C                   Else
     C*
     C                   Eval      wSource = wCmtS
     C                                     + ' '
     C                                     + %Trim(wSource)
     C                                     + ' '
     C                                     + wCmtE
     C*
     C     ' '           Check     SourceStmt    wPos
     C*
     C                   If        wPos < 4
     C                   Eval      SourceStmt = wSource
     C                   Else
     C                   Eval      SourceStmt = *Blanks
     C                   Eval      %Subst(SourceStmt:wPos-3) = wSource
     C                   Endif
     C*
     C                   Endif
     C*
     C                   Exsr      SubUpd
     C*
     C     SubClpCmtEnd  Endsr
      **********************************************************************
      *
      **********************************************************************
     C     SubRpgCmt     Begsr
     C*
     C                   If        %Subst(SourceStmt:7:1) = '*'
     C                   EVAL      %Subst(SourceStmt:7:1) = ' '
     C                   Else
     C                   EVAL      %Subst(SourceStmt:7:1) = '*'
     C                   Endif
     C*
     C                   Exsr      SubUpd
     C*
     C                   Endsr
      **********************************************************************
      *
      **********************************************************************
     C     SubSndMsg     Begsr
     C*
     C                   Callp     SndPgmMsg(wMsgID:
     C                                       'QEDTMSG   QPDA      ':
     C                                       *Blanks:
     C                                       *Zero:
     C                                       '*INFO':
     C                                       '*':
     C                                       2:
     C                                       *Blanks:
     C                                       APIError)
     C*
     C                   Endsr
      **********************************************************************
      *
      **********************************************************************
     C     SubUpd        Begsr
     C*
     C                   Eval      Retcode = '0'
     C                   Eval      OutRecords = 1
     C*
     C                   Endsr
seu.jpg

论坛徽章:
0
发表于 2005-03-25 15:53 |显示全部楼层

方便开发的工具之七

可否请大侠讲一下原理。

论坛徽章:
0
发表于 2005-03-25 18:36 |显示全部楼层

方便开发的工具之七

^_^  好厉害!

我也想知道原理!

论坛徽章:
0
发表于 2005-03-26 00:34 |显示全部楼层

方便开发的工具之七

这个帖子有水准、设为精华不为过。。。

论坛徽章:
0
发表于 2005-03-26 09:11 |显示全部楼层

方便开发的工具之七

[quote]原帖由 "michael9406"]可否请大侠讲一下原理。[/quote 发表:


恩~    说说原理嘛   

论坛徽章:
0
发表于 2005-03-26 09:31 |显示全部楼层

方便开发的工具之七

真的没注意到这个地方有个exit program.

论坛徽章:
0
发表于 2005-03-26 11:06 |显示全部楼层

方便开发的工具之七

恩~    说说原理嘛

论坛徽章:
0
发表于 2005-03-26 12:09 |显示全部楼层

方便开发的工具之七

关注中

论坛徽章:
0
发表于 2005-03-26 12:29 |显示全部楼层

方便开发的工具之七

原理就是接受三个指针参数,进行处理后返回相应的参数即可.

论坛徽章:
0
发表于 2005-04-21 11:00 |显示全部楼层

方便开发的工具之七

what is this?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP