ChinaUnix首页 > 精华文章 > AS400 > 正文

[精华] 求小写的金额转成大写金额的程式~


http://www.chinaunix.net 作者:sater84  发表于:2009-05-26 17:33:53
发表评论】 【查看原文】 【AS400讨论区】【关闭

请高手给发一个把   小写的金额转成大写金额的程式,非常感谢

如:小写金额为 8888.88
转化为  大写 捌仟捌百捌十捌点捌捌元

谢谢大侠~



 qingzhou 回复于:2007-01-02 15:14:04

参考以下帖子应该可以得到启发:
http://bbs.chinaunix.net/viewthread.php?tid=765079&extra=&page=1


 qingzhou 回复于:2007-01-02 15:21:55

(转)小写金额转换为大写金额(C实现)

  大多的算法都是直接分析字符串生成大写金额,即存在一个假设:源字符串的格式是正确的。在我的过程中,用状态机的方法分析源字符串,错误时,返回空指针(我可不敢保证传给我的过程的都是##.##)。 分析出源字符串中整数部有多少个数字,是否有小数,统计结果放在一个结构体中,整数和小数部分的数字分别放在两个整形数组里。

  有了统计数据就可以生成大写金额了。转换过程有个难点:要区分万、亿等“段”,特别是个位这个“段”,这个概念是在《小写转大写金额在C++中的实现》文章中提到的。在下面的程序中用j=(size-i-1)&0x3,实际上是j=(size-i-1)%4取模,j==0时为段尾,需要特殊处理。所有的处理都是围绕0来进行的,也就是说,0才是难点。

  特殊位置的0,按段分,段中第一个非0数字前的0,可能有多个;段中两个非0数字间的0;段尾的0;个位的0;十分位,角位置的0。

  另外,转换的一个重点是大写金额的写法,好像大多的算法都注重转换过程而对这个问题没有深究。我在文章后面附上转换规则。

  有一点,从低耦合的角度说,这个过程应该再细分一下。输入可以是标准格式的字符串或数字,验证的过程可以放到另一个模块中。我就不再分了,总体上,while语句整体是格式分析过程,可以单独拿出来。后面的代码是生成大写读法。需要的自己处理下吧,很简单。

下面是代码

/**

 * @brief 将源字符串中的小写金额转换为大写格式
 *
 * @param dest 目的字符串
 * @param src  小写金额字符串
 * @return 
 * - NULL 源字符串的格式错误,返回NULL
 * - 非NULL 目的字符串的首地址
 * @note 转换根据:中国人民银行会计司编写的最新《企业、银行正确办理支付结算
 *       指南》的第114页-第115页
 */
char* chineseFee( char* dest, char* src )
{
    enum
    {
        START,                 //开始
        MINUS,                 //负号
        ZEROINT,               //0整数
        INTEGER,               //整数
        DECIMAL,               //小数点
        DECIMALfRACTION,       //小数位
        END,                   //结束
        ERROR                  //错误
    } status = START;

    struct
    {
        int minus;             //0为正,1为负
        int sizeInt;
        int sizeDecimal;
        int integer[10];
        int decimal[10];
    } feeInfo;

    char* NumberChar[] = 
        { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
    char* UnitChar[] = 
        { "整", "圆", "拾", "佰","仟", "万", "拾", "佰", "仟", "亿", 
          "拾", "佰", "仟", "万亿", "拾", "佰", "仟", "亿亿", 
          "角", "分", "负", "人民币" };
          
    int      i, j,size;             //循环变量
    int      zeroTag        = 0,    //0标志
             decZeroTag     = 0;
      
    char*    pDest          = dest;
    char*    pSrc           = src;
    
    int*     pInt           = feeInfo.integer;
    int*     pDec           = feeInfo.decimal;
    
    //初始化
    feeInfo.sizeInt        = 0;
    feeInfo.sizeDecimal    = 0;
    feeInfo.minus          = 0;
    
    //分析字符串
    while( 1 )
    {
        switch ( *pSrc )
        {
            case '-' :
                status = ( status == START ) ? MINUS : ERROR;
                feeInfo.minus = ( status == MINUS ) ? 1 : 0;
                break;
            case '1' :
            case '2' :
            case '3' :
            case '4' :
            case '5' :
            case '6' :
            case '7' :
            case '8' :
            case '9' :
            case '0' :
                if ( *pSrc == '0' && status == ZEROINT )//|| status == START ) )
                {
                    status = ERROR;
                    break;
                }
                if ( status == MINUS || status == START || status == INTEGER )
                {
                    if ( *pSrc == '0' && ( status == MINUS || status == START ) )
                        status = ZEROINT;
                    else
                        status = INTEGER;
                    *pInt = (*pSrc) - 48;
                    ++pInt;
                    ++feeInfo.sizeInt;
                }
                else if ( status == DECIMAL || status == DECIMALfRACTION )
                {
                    status = DECIMALfRACTION;
                    *pDec = (*pSrc) - 48;
                    ++pDec;
                    ++feeInfo.sizeDecimal;
                }
                else
                {
                    status =ERROR;
                }
                break;
            case '.' :
                status = ( status == INTEGER || status == ZEROINT ) 
                         ? DECIMAL : ERROR;
                break;
            case '' :
                status = ( status == INTEGER || status == DECIMALfRACTION 
                           || status == ZEROINT ) ? END : ERROR;
                break;
            default :
                status = ERROR;
        }
        if ( status == END ) 
            break;
        else if ( status == ERROR )
            return NULL;
        
        ++pSrc;
    }
    
    //只有1位小数时,设置百分位为0,使下面代码不需要区分这两种情况
    if ( feeInfo.sizeDecimal == 1 )
    {
        feeInfo.decimal[ 1 ] = 0;
        ++feeInfo.sizeDecimal;
    }

    //判断是否需要打印小数部分,有小数部且十分位和百分位不都为0
    //需要打印小数部时,zeroTag设为0,否则设为1
    if ( feeInfo.sizeDecimal == 0                                 //没有小数
        || ( !feeInfo.decimal[ 0 ] && !feeInfo.decimal[ 1 ] ) )   //小数部都为0
        decZeroTag = 1;
    else
        decZeroTag = 0;
        
    //printf( "int size: %d    decimal size: %d ", feeInfo.sizeInt, feeInfo.sizeDecimal );
    
    strcpy( pDest, UnitChar[ 21 ] );                  //初始化目标字符串-人民币
    
    if ( feeInfo.minus ) strcat( pDest, UnitChar[ 20 ] );    //负号
        
    //处理整数部分
    size = feeInfo.sizeInt;
    for( i = 0; i < size; ++i )
    {
        j = size - i - 1 & 0x3;                              //j = 0时为段尾
        if ( feeInfo.integer[ i ] == 0 && j )                //处理非段尾0
        {
            zeroTag = 1;
        }
        else if ( feeInfo.integer[ i ] == 0 && !j )          //处理段尾0
        {
            if ( feeInfo.sizeInt == 1 && decZeroTag )        //特殊处理个位0
                strcat( pDest, NumberChar[ feeInfo.integer[ i ] ] );
            if ( feeInfo.sizeInt != 1 || decZeroTag )
                strcat( pDest, UnitChar[ size - i ] );
            zeroTag = 0;
        }
        else                                                 //处理非0
        {
            if ( zeroTag )
            {
                strcat( pDest, NumberChar[ 0 ] );
                zeroTag = 0;
            }
            strcat( pDest, NumberChar[ feeInfo.integer[ i ] ] );
            strcat( pDest, UnitChar[ size - i ] );
            if ( !j ) zeroTag = 0;                      //如果是段尾,设为非标志
        }
    }
    
    if ( decZeroTag )
    {
        strcat( pDest, UnitChar[ 0 ] );//没有小数部,打印"整"字符
    }
    else
    {
        //十分位
        if ( feeInfo.decimal[ 0 ] )
        {
            strcat( pDest, NumberChar[ feeInfo.decimal[ 0 ] ] );
            strcat( pDest, UnitChar[ 18 ] );
        }
        else if ( feeInfo.sizeInt != 1 || feeInfo.integer[ 0 ] )
        {
            strcat( pDest, NumberChar[ feeInfo.decimal[ 0 ] ] );
        }
        
        //百分位不为0时
        if ( feeInfo.decimal[ 1 ] )    
        {
            strcat( pDest, NumberChar[ feeInfo.decimal[ 1 ] ] );
            strcat( pDest, UnitChar[ 19 ] );
        }
    }
    return dest;
}



 xiaofish82 回复于:2007-01-02 16:44:13

这应该不是什么难题吧.

rpg实现起来,也应该不是什么问题,就是麻烦。

简单说下方法,仅供参考:
1,做个tab,值是0~9的大写,写程序的时候,对于金额的每一位,你都要到tab里面去做
检索,检索到后,将tab里面的值取出。
2,然后就是区分万,千,百位的问题了。可不可以这么考虑,你先找出小数点的位子,然后
确定小数点前面的个数,然后,百,千,万这些单位就好确定了吧。
3,剩下的任务就应该是把每一个字符连接起来,做成字符串,这样应该就可以了。

说的比较泛泛,但是我觉得如果是rpg程序,这样肯定可以实现。
有个命令,不知道你知道不,chckr查询字符串的,用这个命令,可能简单些。


 sater84 回复于:2007-01-02 17:03:47

谢谢轻舟老大和楼上的那位兄弟,谢谢,刚刚接触400,所以技术很菜


我程式有自己写出一点点出来, 编译也错了,但是就是显示不出大写拉,执行之后出现的是乱码,我也不知道是哪里搞错了,请朋友们帮我看一下,请轻舟老大和楼上的兄弟帮帮忙,谢谢你们了.程式如下:
                                  
  H                                                  1         
  FSF02F   IF  E           K        DISK                       
  FSF02FP  IF  E           K        DISK                      A
  E                    TAB01   1  10  1 0 TAB02  13            
  I*RSF02F                                                     
  I*             SUDPT                           SUDPTA        
  I            DS                                              
  I                                        1  132SUDPT         
  I                                        1   10SUDP1         
  I                                        2   20SUDP2         
  I                                        3   30SUDP3         
  I                                        4   40SUDP4         
  I                                        5   50SUDP5         
  I                                        6   60SUDP6         
  I                                        7   70SUDP7       
  I                                        8   80SUDP8 
  I                                        9   90SUDP9 
  I                                       10  100SUDP10
  I                                       11  110SUDP11
  I                                       12  120SUDP12
  I                                       13  130SUDP13
  I            DS                                      
  I                                        1  13 FZKK  
  I                                        1   1 FZK1  
  I                                        2   2 FZK2   
  I                                        3   3 FZK3   
  I                                        4   4 FZK4   
  I                                        5   5 FZK5   
  I                                        6   6 FZK6   
  I                                        7   7 FZK7   
  I                                        8   8 FZK8   
  I                                        9   9 FZK9   
  I                                       10  10 FZK10  
  I                                       11  11 FZK11  
  I                                       12  12 FZK12  
  I                                       13  13 FZK13  
  C                     MOVE *BLANK    FZKK   13        
  C           *LOVAL    SETLLSF02F                40    
  C           *IN40     DOWEQ'0'                        
  C                     READ SF02F                    40
  C           *IN40     IFEQ '0'                        
  C           SIVNO     CHAINRSF02FP              88    
  C           SUDP1     LOKUPTAB01     TAB02          91 
  C   91                MOVE TAB02     FZK1              
  C           SUDP2     LOKUPTAB01     TAB02          91 
  C   91                MOVE TAB02     FZK2              
  C           SUDP3     LOKUPTAB01     TAB02          91 
  C   91                MOVE TAB02     FZK3              
  C           SUDP4     LOKUPTAB01     TAB02          91 
  C   91                MOVE TAB02     FZK4              
  C           SUDP5     LOKUPTAB01     TAB02          91 
  C   91                MOVE TAB02     FZK5             
  C           SUDP6     LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK6             
  C           SUDP7     LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK7             
  C           SUDP8     LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK8             
  C           SUDP9     LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK9             
  C           SUDP10    LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK10            
  C           SUDP11    LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK11            
  C           SUDP12    LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK12            
  C           SUDP13    LOKUPTAB01     TAB02          91
  C   91                MOVE TAB02     FZK13            
  C                     MOVELSIVNO     SIVNN            
  C                     MOVELFZKK      FZK              
  C   88                WRITERSF02FP                    
  C                     ENDIF                           
  C                     ENDDO                           
  C                     SETON                     LR    
**   
**   
0 零 
1 壹 
2 贰 
3 叁
4 肆 
5 伍
6 陆 
7 柒
8 捌 
9 玖


 pantierui 回复于:2007-01-03 08:53:20

你可以做个关联表试一试

0001.00      E                    TAB1    1   9  1   TAB2    2                               061230  
0002.00      C                     MOVEL'B'       AA      1                                  061219  
0003.00      C                     MOVEL*BLANK    BB      1                                  061219  
0004.00      C                     Z-ADD1         X       20                                 061219  
0005.00      C           AA        LOKUPTAB1      TAB2           90                          061230  
0012.00      C   90      TAB2      DSPLY                                                     061230  
0015.00      C                     SETON                     LR                              061214  
0016.00      C                     RETRN                                                     061214  
0017.00 ** TAB1 TAB2                                                                         061230  
0018.00 A1A                                                                                  061219  
0019.00 B2B                                                                                  061219  
0020.00 C3C                                                                                  061219  
0021.00 D4D                                                                                  061219  
0022.00 E5E                                                                                  061219  
0023.00 F6F                                                                                  061219  
0024.00 G7G                                                                                  061219  
0025.00 H8H                                                                                  061219  
0026.00 I9I

[ 本帖最后由 pantierui 于 2007-1-3 08:54 编辑 ]


 pantierui 回复于:2007-01-03 13:50:22

你把我给你的上面的代码写到你的程序内
当AA=1的时候它就等于大写的壹
可以参见http://blog.chinaunix.net/u/20092/showart_218296.html
0001.00      E                    TAB1    1   10  1   TAB2    4                               061230  
0002.00      C                     MOVEL'1'       AA      1                                  061219  
0003.00      C                     MOVEL*BLANK    BB      1                                  061219  
0004.00      C                     Z-ADD1         X       20                                 061219  
0005.00      C           AA        LOKUPTAB1      TAB2           90                          061230  
0012.00      C   90      TAB2      DSPLY                                                     061230  
0015.00      C                     SETON                     LR                              061214  
0016.00      C                     RETRN                                                     061214  
0017.00 ** TAB1 TAB2                                                                         061230  
0018.00 0 零                                                                                  061219  
0019.00 1 壹                                                                                  061219  
0020.00 2 贰                                                                                  061219  
0021.00 3 叁                                                                                  061219  
0022.00 4 肆                                                                                  061219  
0023.00 5 伍                                                                                  061219  
0024.00 6 陆                                                                                  061219  
0025.00 7 柒                                                                                  061219  
0026.00 8 捌                                     
0026.00 9 玖

[ 本帖最后由 pantierui 于 2007-1-3 13:52 编辑 ]


 sater84 回复于:2007-01-03 16:19:28

对不起啊,大哥,我不知道您发的程式应该加在我程式的那里啊,而且您给我发的两段程式是不一样的,两个都要吗?


您能和我讲解下嘛,麻烦您了,谢谢您~~~


 sater84 回复于:2007-01-04 15:04:58

55555555555555,别让他沉啊,还没解决啊~


 sater84 回复于:2007-01-08 08:51:10

真的很不好意思啊,这个问题我真的解决不了,所以才不停的发,不停的发

现在上面催的很紧,请会的大侠们帮下忙嘛,小弟不盛感激~谢谢了~


 大肥肥 回复于:2007-01-08 14:44:26

COBOL写的,编译出来就可以直接用了,编译方法和rpg一样。
  
    * FUNCTION: CGANHE NUMBER INTO CHINESE                                  *
      *     INPUT : STRING                                                    *
      *     OUTPUT : PRINT                                                    *
       *************************************************************************
       IDENTIFICATION   DIVISION.
       PROGRAM-ID.   CONVERT.
 

       ENVIRONMENT DIVISION.
       DATA DIVISION.

       WORKING-STORAGE SECTION.
       77   MIDDATA    PIC X(15).
       77   I          PIC 99 .
       77   K          PIC 99.
       77   PD         PIC 99.
       77   PP         PIC 99.
       77   PM         PIC 99.
       77   LEN        PIC 99.
       77   ZSLEN      PIC 99.
       77   MIDLEN     PIC 99.
       77   MIDNUM     PIC X.
       77   J          PIC 99.
       77   YI         PIC X(4) VALUE '壹'.
       77   ER         PIC X(4) VALUE '贰'.
       77   SHAN       PIC X(4) VALUE '叁'.
       77   SHI        PIC X(4) VALUE '肆'.
       77   WU         PIC X(4) VALUE '伍'.
       77   LIU        PIC X(4) VALUE '陆'.
       77   QI         PIC X(4) VALUE '柒'.
       77   BA         PIC X(4) VALUE '捌'.
       77   JIU        PIC X(4) VALUE '玖'.
       77   LING       PIC X(4) VALUE '零'.
       77   YUAN       PIC X(4) VALUE '元'.
       77   JIAO       PIC X(4) VALUE '角'.
       77   FEN        PIC X(4) VALUE '分'.
       77   YIYI       PIC X(4) VALUE '亿'.
       77   WAN        PIC X(4) VALUE '万'.
       77   QIAN       PIC X(4) VALUE '仟'.
       77   BAI        PIC X(4) VALUE '佰'.
       77   SI         PIC X(4) VALUE '拾'.
       77   ZHENG      PIC X(4) VALUE '整'.
       77   ZHONWEN    PIC X(2) VALUE SPACE.

            01   MIDSTR     PIC X(40) VALUE SPACE.

          01   RSTSTR     PIC X(40) VALUE SPACE.
       77   XIAOSHU    PIC 99   VALUE 0.
       77   XSHU       PIC 99   VALUE 0.
       77   TESTTMP    PIC X    VALUE SPACE.
       77   L          PIC 99 .
       77   TMPV       PIC X(4) VALUE SPACE.

       LINKAGE SECTION.

  77   INPUTDATA  PIC X(15) VALUE SPACE.
  77   OUTDATA    PIC X(40).

       PROCEDURE DIVISION USING INPUTDATA, OUTDATA.
       MAIN-PROGRAM.
            PERFORM INITIAL-PHASE.
            PERFORM DETAIL-PHASE THRU END-DETAIL-PHASE.
            PERFORM END-PHASE.
       INITIAL-PHASE.
            MOVE 0  TO XIAOSHU.
            MOVE 0 TO XSHU.
            MOVE SPACE TO OUTDATA.
            MOVE SPACE TO MIDDATA.
            MOVE SPACE TO MIDSTR.
            MOVE SPACE TO RSTSTR.
            MOVE SPACE TO MIDNUM.
       DETAIL-PHASE.
            MOVE 1 TO I .
            MOVE INPUTDATA TO MIDDATA.
            PERFORM COUNT-LENGTH THRU C-END UNTIL MIDDATA(I:1) = SPACE.
            IF LEN = 1
               GO TO END-DETAIL-PHASE
            END-IF.

            IF MIDDATA(1:1) = '0' AND MIDDATA = '0.00'
 
               MOVE LING TO OUTDATA
               GO TO END-DETAIL-PHASE
            END-IF.
            SUBTRACT 2 FROM LEN GIVING MIDLEN.
            MOVE MIDDATA(MIDLEN:1) TO TESTTMP.
            IF MIDDATA(MIDLEN:1) = '.'
                 SUBTRACT 3 FROM LEN GIVING ZSLEN
            ELSE
                 MOVE LEN TO ZSLEN
            END-IF.
            MOVE 1 TO J.
            MOVE YI(1:1) TO MIDSTR(J:1) .
            ADD 1 TO J .
            EVALUATE ZSLEN
               WHEN  1
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO  MIDSTR(J:4)
               WHEN  2
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2)  TO MIDSTR(J:2)
              WHEN 3
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2)  TO MIDSTR(J:2)
              WHEN 4
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(4:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO MIDSTR(J:2)
             WHEN 5
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE WAN(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(4:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(5:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO MIDSTR(J:2)
             WHEN 6
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE WAN(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(4:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(5:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(6:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO MIDSTR(J:2)


 大肥肥 回复于:2007-01-08 14:46:22

WHEN 7
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE WAN(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(4:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(5:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(6:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(7:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO MIDSTR(J:2)
             WHEN 8
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(4:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE WAN(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(5:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(6:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(7:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(8:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO MIDSTR(J:2)
             WHEN 9
                 MOVE MIDDATA(1:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YIYI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(2:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(3:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(4:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(5:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE WAN(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(6:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE QIAN(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(7:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE BAI(2:2)  TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(8:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE SI(2:2) TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE MIDDATA(9:1) TO MIDNUM
                 PERFORM CHANGE-PHASE
                 MOVE ZHONWEN TO MIDSTR(J:2)
                 ADD 2 TO J
                 MOVE YUAN(2:2) TO MIDSTR(J:2)
            END-EVALUATE.
            IF ZSLEN < LEN
                 PERFORM TRANS-XIAOSHU THRU TRANS-XIAOSHU-END
            END-IF.
                 ADD 2 TO J.
                 MOVE YI(4:1) TO MIDSTR(J:1).
      * MOVE AWAY ZERO
                 PERFORM MOVE-AWAY-ZERO THRU MOVE-AWAY-ZERO-END.
                 MOVE RSTSTR TO OUTDATA.
       END-DETAIL-PHASE.
       TRANS-XIAOSHU.
                 MOVE ZSLEN TO XIAOSHU.
                 ADD 2 TO XIAOSHU.
                 MOVE XIAOSHU TO XSHU.
                 ADD 2 TO J   .
                 IF MIDDATA(XIAOSHU:2) = '00'
                   SUBTRACT 2 FROM J
                   GO TO TRANS-XIAOSHU-END
                 END-IF.
                 IF MIDDATA(XIAOSHU:1) = '0'
                     MOVE MIDDATA(XIAOSHU:1) TO MIDNUM
                     PERFORM CHANGE-PHASE
                     MOVE ZHONWEN  TO MIDSTR(J:2)
                     ADD 2 TO J
                     ADD 1 TO XIAOSHU
                     MOVE MIDDATA(XIAOSHU:1) TO MIDNUM
                     PERFORM CHANGE-PHASE
                     MOVE ZHONWEN TO MIDSTR(J:2)
                     ADD 2 TO J
                     MOVE FEN(2:2) TO MIDSTR(J:2)
                 ELSE
      *          IF MIDDATA(XIAOSHU:1) NOT EQUAL '0'
                     MOVE MIDDATA(XIAOSHU:1) TO MIDNUM
                     PERFORM CHANGE-PHASE
                     MOVE ZHONWEN TO MIDSTR(J:2)
                     ADD 2 TO J
                     MOVE JIAO(2:2) TO MIDSTR(J:2)
      *              ADD 2 TO J
                     ADD 1 TO XIAOSHU
                     IF MIDDATA(XIAOSHU:1) = '0'
                        GO TO  TRANS-XIAOSHU-END
                     END-IF
                     ADD 2 TO J
                     MOVE MIDDATA(XIAOSHU:1) TO MIDNUM
                     PERFORM CHANGE-PHASE
                     MOVE ZHONWEN TO MIDSTR(J:2)
                     ADD 2 TO J
                     MOVE FEN(2:2) TO MIDSTR(J:2)
                END-IF.
       TRANS-XIAOSHU-END.
       COUNT-LENGTH.
            MOVE I TO LEN.
            ADD 1 TO I.
       C-END.
       END-PHASE.
            GOBACK.
      *     EXIT PROGRAM.
       CHANGE-PHASE.
            EVALUATE MIDNUM
               WHEN '1'
                 MOVE YI(2:2) TO ZHONWEN
               WHEN '2'
                 MOVE ER(2:2) TO ZHONWEN
               WHEN '3'
                 MOVE SHAN(2:2) TO ZHONWEN
               WHEN '4'
                 MOVE SHI(2:2) TO ZHONWEN
               WHEN '5'
                 MOVE WU(2:2) TO ZHONWEN
               WHEN '6'
                 MOVE LIU(2:2) TO ZHONWEN
               WHEN '7'
                 MOVE QI(2:2) TO ZHONWEN
               WHEN '8'
                 MOVE BA(2:2) TO ZHONWEN
               WHEN '9'
                 MOVE JIU(2:2) TO ZHONWEN
               WHEN '0'
                 MOVE LING(2:2) TO ZHONWEN
            END-EVALUATE.
       MOVE-AWAY-ZERO.
           MOVE MIDSTR(1:5) TO RSTSTR(1:5).
           IF MIDSTR(6:1) = YI(4:1)
              MOVE ZHENG(2:2) TO RSTSTR(6:2)
              MOVE YI(4:1) TO RSTSTR(8:1)
           ELSE
              MOVE 6 TO K
              MOVE 6 TO L
              PERFORM CHECK-ZERO THRU CHECK-ZERO-END UNTIL K = J
           END-IF.
       MOVE-AWAY-ZERO-END.
       CHECK-ZERO.
           IF MIDSTR(K:2) = LING(2:2)
                PERFORM WRITE-ZERO THRU WRITE-ZERO-END
                UNTIL MIDSTR(K:2) NOT EQUAL LING(2:2)
                IF MIDSTR(K:2) = YI(4:1)
                   MOVE YI(4:1) TO RSTSTR(L:1)
                   GO TO CHECK-ZERO-END
                END-IF

                IF MIDSTR(K:2) = FEN(2:2)
                    SUBTRACT 2 FROM K GIVING PD
                    MOVE MIDSTR(PD:2) TO RSTSTR(L:2)
                    ADD 2 TO L
                    MOVE FEN(2:2) TO RSTSTR(L:2)
                    ADD 2 TO L
                    MOVE YI(4:1) TO RSTSTR(L:1)
                    MOVE J TO K
                    GO TO CHECK-ZERO-END
                END-IF
                MOVE LING(2:2) TO RSTSTR(L:2)
                ADD 2 TO L
                MOVE YI(1:1) TO TMPV(1:1)
                MOVE MIDSTR(K:2) TO TMPV(2:2)
                MOVE YI(4:1) TO TMPV(4:1)
                MOVE MIDSTR(K:2) TO RSTSTR(L:2)
                ADD 2 TO K
                ADD 2 TO L
                MOVE YI(1:1) TO TMPV(1:1)
                MOVE MIDSTR(K:2) TO TMPV(2:2)
                MOVE YI(4:1)  TO TMPV(4:1)
                MOVE MIDSTR(K:2) TO RSTSTR(L:2)

                ADD 2 TO K
                ADD 2 TO L
                IF MIDSTR(K:2) = YI(4:1) AND TMPV(2:2) = YUAN(2:2)
                   MOVE ZHENG(2:2) TO RSTSTR(L:2)
                   ADD 2 TO L
                   MOVE YI(4:1) TO RSTSTR(L:1)
                   GO TO CHECK-ZERO-END
            ELSE
E90631             MOVE YI(4:1) TO RSTSTR(L:1)
                END-IF
           ELSE
                IF MIDSTR(K:1) = YI(4:1)
                    MOVE YI(4:1) TO RSTSTR(L:1)
                    GO TO CHECK-ZERO-END
                END-IF

                MOVE MIDSTR(K:2)  TO RSTSTR(L:2)
                ADD 2 TO K
                ADD 2 TO L
                MOVE MIDSTR(K:2) TO RSTSTR(L:2)
                IF  MIDSTR(K:2) = YUAN(2:2) AND MIDDATA(XSHU:2) = '00'
                   ADD 2 TO L
                   MOVE ZHENG(2:2) TO RSTSTR(L:2)
                   ADD 2 TO L
                   MOVE YI(4:1) TO RSTSTR(L:1)
                   MOVE J TO K
                   GO TO CHECK-ZERO-END
                END-IF
                IF MIDSTR(K:2) = FEN(2:2)
                   ADD 2 TO L
                   MOVE YI(4:1) TO RSTSTR(L:1)
                   MOVE J TO K
                   GO TO CHECK-ZERO-END
                END-IF
                ADD 2 TO K
                ADD 2 TO L
                IF MIDSTR(K:1) = YI(4:1)
                   MOVE YI(4:1) TO RSTSTR(L:1)
                   GO TO CHECK-ZERO-END
                END-IF
           END-IF.
       CHECK-ZERO-END.

       WRITE-ZERO.
                 SUBTRACT 2 FROM K GIVING PP.
                 ADD 2, K GIVING PM.
                 IF MIDSTR(PP:2) = SI(2:2) AND MIDSTR(PM:2) = YUAN(2:2)
                     MOVE YUAN(2:2) TO RSTSTR(L:2)
                     ADD 2 TO L
                     IF  MIDDATA(XSHU:2) = '00'
                        MOVE ZHENG(2:2) TO RSTSTR(L:2)
                        ADD 2 TO L
                     END-IF
                 END-IF.
                 IF MIDSTR(PP:2) = SI(2:2) AND MIDSTR(PM:2) = WAN(2:2)
                     MOVE WAN(2:2)  TO RSTSTR(L:2)
                     ADD 2 TO L
                 END-IF.
                 ADD 4 TO K.
       WRITE-ZERO-END.


 wyvern050 回复于:2007-01-08 16:17:45

和你说下算法 你就能弄出来了
首先你要先把现有的数字截位
eg: 5678  首先要把5取出 判断其位置是 十位 百位 还是 千位 怎么判断千百十呢 取出5之后用原来的值除以取出来的5 得出的结构肯定是大于等于1000 小于10000的 这样就把除以之后的结果给为1000 tab 这样建立
     zhi      weishu
       10          十
    100         百
   1000        千
   。。。   。。。
用这个结果chain db   取值
然后用5去查找库 在库中应该这样写出tab
       alb     hanzi 
         0         零
      1         壹
    。。。  。。。
然后用5去chain 这个tab 取出hanzi 段的值 给一个中间变量 在把上面取出的位置 例如 千 (这个千取值方法和取hanzi一样)   如此类推 最后程序结束怎们判断就不用我说了
----------------------------------------------------------------------------- 
其实这个算法很简单 估计是楼主一时没想到吧


 sater84 回复于:2007-01-09 09:40:59

谢谢前辈,我明白您的意思了,谢谢您,我去试一试先~


 uglyneo 回复于:2007-03-22 09:23:33

不知道你有没有完成。最近才上论坛,看到这个觉得有点意思。闲来没事,就试了下。

一个汉字在400里面占用4个字节,第一个字节表示汉字开始,第二第三个字节表示该汉字,第四个字节表示汉字结束。

所以我自己写了个程序,希望对你有所帮助。(RPG3)
小写金额 14P 2
实现功能:输入小写金额:10010.11  大写金额“壹零壹十元壹角壹分”(这个零我是揣摸别人读数字时的习惯,所以不是正规的大写写法,关于这个习惯,N多人有N多种读法,本想改为大写写法,可我确实不知是不是应该写成“壹万零仟零百壹拾零元壹角一分”)
没有从LF READ,而是选择屏幕输入输出,相信改成READ 也比较简单。

写完没经过严密测试,可能会有不少BUG,欢迎指出。

显示文件(XZD010W)很简单,就一个小写金额字段:W1XX  14Y 2   大写金额字段:W1DX  58O 
0000.30      A                                      DSPSIZ(24 80 *DS3)           
0000.31      A                                      CF01                         
0000.40      A          R XZD010W1                                               
0000.60      A                                  3 31' 小写金额转大写金额 '       
0000.70      A                                      DSPATR(RI)                   
0000.80      A                                  9 11' 请输入小写金额: '         
0000.90      A            W1XX          14Y 2B  9 30EDTCDE(1)                    
0001.00      A          R XZD010W2                                               
0001.20      A                                  3 31' 小写金额转大写金额 '       
0001.30      A                                      DSPATR(RI)                   
0001.40      A                                  9  3' 请输入小写金额: '         
0001.50      A            W1XX          14Y 2O  9 22EDTCDE(1)                    
0001.60      A                                 12  9' 大写金额: '               
0001.70      A            W1DX          58O  O 12 22DSPATR(UL)               

程序(XZD010)    
     FXZD010W CF  E                    WORKSTN               
     F*------------------------------------------            
     E                    TTT     1   9  4                   
     E                    TAB1    1  10  1 0 TAB2    4       
     E*----------------------------------------------------  
     I            DS                                         
     I                                        1   4 HZ       
     I                                        1   1 HB       
     I                                        2   3 HH       
     I                                        4   4 HE       
     I            DS                                         
     I                                        1   40SR       
     I                                        1   10QIAN     
     I                                        2   20BAI      
     I                                        3   30SHI      
     I                                        4   40GE       
     I            DS                                         
     I                                        1  142W1XX     
     I                                        1   40YD       
     I                                        5   80WD      
     I                                        9  120GD      
     I                                       13  140FD      
     I                                        1   10QY      
     I                                        2   20BY      
     I                                        3   30SY      
     I                                        4   40Y       
     I                                        5   50QW      
     I                                        6   60BW      
     I                                        7   70SW      
     I                                        8   80W       
     I                                        9   90Q       
     I                                       10  100B       
     I                                       11  110S       
     I                                       12  120G       
     I                                       13  130J       
     I                                       14  140F       
     I*-----------------------------------------------------
     C                     MOVEL*BLANK    W1XX              
     C           STEP01    TAG                              
     C                     EXFMTXZD010W1                         
     C   KA                GOTO END                              
     C                     MOVEL*BLANK    W1DX                   
     C           W1XX      IFEQ 0                                
     C           0         LOKUPTAB1      TAB2           90      
     C                     MOVELTAB2      HZ                     
     C                     MOVELHB        W1DX                   
     C                     CAT  HH:0      W1DX                   
     C                     MOVELTTT,3     HZ                     
     C                     CAT  HH:0      W1DX                   
     C                     MOVELTTT,9     HZ                     
     C                     CAT  HH:0      W1DX                   
     C                     CAT  HE:0      W1DX                   
     C                     GOTO STEP03                           
     C                     ENDIF                                 
     C                     MOVELTTT,3     HZ                     
     C                     MOVELHB        W1DX                   
     C           YD        CABEQ0                        70      
     C           WD        CABEQ0                        60      
     C           GD        CABEQ0                        50      
     C  N70                DO                                   
     C                     Z-ADDYD        SR                    
     C                     EXSR XZD                             
     C                     MOVELTTT,8     HZ                    
     C                     CAT  HH:0      W1DX                  
     C                     ENDDO                                
     C  N60                DO                                   
     C                     Z-ADDWD        SR                    
     C                     EXSR XZD                             
     C                     MOVELTTT,7     HZ                    
     C                     CAT  HH:0      W1DX                  
     C                     ENDDO                                
     C  N50                DO                                   
     C                     Z-ADDGD        SR                    
     C                     EXSR XZD                             
     C                     ENDDO                                
     C           *IN50     IFEQ '0'                             
     C           *IN60     OREQ '0'                             
     C           *IN70     OREQ '0'                             
     C                     MOVELTTT,3     HZ                    
     C                     CAT  HH:0      W1DX                 
     C                     ENDIF                               
     C           FD        IFEQ 0                              
     C                     MOVELTTT,9     HZ                   
     C                     CAT  HH:0      W1DX                 
     C                     ENDIF                               
     C           J         CABEQ0         TAGF                 
     C           J         LOKUPTAB1      TAB2           90    
     C   90                MOVELTAB2      HZ                   
     C                     CAT  HH:0      W1DX                 
     C                     MOVELTTT,2     HZ                   
     C                     CAT  HH:0      W1DX                 
     C           TAGF      TAG                                 
     C           F         CABEQ0         STEP02               
     C           F         LOKUPTAB1      TAB2           90    
     C                     MOVELTAB2      HZ                   
     C                     CAT  HH:0      W1DX                 
     C                     MOVELTTT,1     HZ                   
     C                     CAT  HH:0      W1DX                 
     C           STEP02    TAG                                 
     C                     CAT  HE:0      W1DX                   
     C           STEP03    TAG                                   
     C                     EXFMTXZD010W2                         
     C                     GOTO STEP01                           
     C           END       TAG                                   
     C                     SETON                     LR          
     C                     RETRN                                 
     C*-------------------------------------------------------   
     C           XZD       BEGSR                                 
     C           QIAN      CABNE0                    51          
     C           BAI       CABNE0                    52          
     C           SHI       CABNE0                    53          
     C           GE        CABNE0                    54          
     C           SR        IFEQ GD                               
     C           YD        IFNE 0                                
     C           WD        ORNE 0                                
     C  N51                DO                                    
     C           QIAN      LOKUPTAB1      TAB2           90      
     C                     MOVELTAB2      HZ                     
     C                     CAT  HH:0      W1DX                   
     C                     GOTO TAGB                          
     C                     ENDDO                              
     C                     ENDIF                              
     C                     ENDIF                              
     C  N51                GOTO TAGB                          
     C           QIAN      LOKUPTAB1      TAB2           90   
     C                     MOVELTAB2      HZ                  
     C                     CAT  HH:0      W1DX                
     C                     MOVELTTT,6     HZ                  
     C                     CAT  HH:0      W1DX                
     C           TAGB      TAG                                
     C  N52N53N54          GOTO XZDEND                        
     C  N51N52             GOTO TAGS                          
     C           BAI       LOKUPTAB1      TAB2           90   
     C                     MOVELTAB2      HZ                  
     C                     CAT  HH:0      W1DX                
     C  N52                GOTO TAGS                          
     C                     MOVELTTT,5     HZ                  
     C                     CAT  HH:0      W1DX                
     C           TAGS      TAG                                
     C  N53N54             GOTO XZDEND                       
     C  N52N53             GOTO TAGG                         
     C           SHI       LOKUPTAB1      TAB2           90  
     C                     MOVELTAB2      HZ                 
     C                     CAT  HH:0      W1DX               
     C  N53                GOTO TAGG                         
     C                     MOVELTTT,4     HZ                 
     C                     CAT  HH:0      W1DX               
     C           TAGG      TAG                               
     C  N54                GOTO XZDEND                       
     C           GE        LOKUPTAB1      TAB2           90  
     C                     MOVELTAB2      HZ                 
     C                     CAT  HH:0      W1DX               
     C           XZDEND    ENDSR                             
** TTT                                                       
 分                                                          
 角                                                          
 元                                                          
 拾                                                          
 佰                                                          
 仟                                      
 万                                      
 亿                                      
 整                                      
** TAB1 TAB2                             
0 零                                     
1 壹                                     
2 贰                                     
3 叁                                     
4 肆                                     
5 伍                                     
6 陆                                     
7 柒                                     
8 捌                                     
9 玖

[ 本帖最后由 uglyneo 于 2007-3-22 11:06 编辑 ]



程序运行图



XZD010.rar


 pantierui 回复于:2007-03-22 09:44:32

顶一下.


 icefirer 回复于:2007-03-22 11:55:31

你可以借鉴一下


      *=====================================================================
      *
     D yMsgRtnDDS    E DS                  EXTNAME( CMMsgStrPZ )
     D                                     PREFIX ( y :1 )
     D                                     BASED  ( iMsgRtnPtr )
      *
      *=====================================================================
      *
     D wDigDim         S              1A   DIM(18)
      *
      *---------------------------------------------------------------------
     ? 中文数字
      *---------------------------------------------------------------------
      *
     D wChnChaNbr      S             40A   INZ(X'-
     D                                     0E51840F0E59BB0F0E4C410F0E54FD0F-
     D                                     0E56610F0E57E80F0E51BC0F0E53E10F-
     D                                     0E48C50F0E4FC00F')
      *
     D wChnDim         S              4A   DIM(10)
      *---------------------------------------------------------------------
     ? 中文单位
      *---------------------------------------------------------------------
     D wChnChaUnt      S             72A   INZ(X'-
     D                                     0E4C760F0E4F670F0E5AB10F0E55AF0F-
     D                                     0E48DA0F0E544A0F0E57930F0E55AF0F-
     D                                     0E48DA0F0E544A0F0E59D90F0E55AF0F-
     D                                     0E48DA0F0E544A0F0E57930F0E55AF0F-
     D                                     0E48DA0F0E544A0F')
      *
     D wUntDim         S              4A   DIM(18)
      *
      *=====================================================================
      *
     D wSfxTst         S              8A
      *
      *=====================================================================
      *
     D wInpDigAmt      S             18S 0
     D wOutChrAmt      S            200A
      *
     D wInpLen         S              2S 0
     D wRpcLen         S              2S 0
     D wRpcPos         S              3S 0
      *
     D X               S              2S 0
     D Y               S              1S 0
     D Z               S              1S 0
      *
      *---------------------------------------------------------------------
     ? 中文字符
      *---------------------------------------------------------------------
      *
     D wLinLin         S              8A   INZ('零零')
     D wLinYuan        S              8A   INZ('零圆')
     D wLinWan         S              8A   INZ('零万')
     D wLinYi          S              8A   INZ('零亿')
     D wJiaoLin        S              8A   INZ('角零')
     D wJZ             S              8A   INZ('角整')
     D wYuanLin        S              8A   INZ('圆零')
     D wYZ             S              8A   INZ('圆整')
     D wYiWan          S              8A   INZ('亿万')
      *
     D wLin            S              4A   INZ('零')
     D wYuan           S              4A   INZ('圆')
     D wWan            S              4A   INZ('万')
     D wYi             S              4A   INZ('亿')
      *
      *=====================================================================
      *
      *
      *
     C                   EXSR      #InParm
      *
     C                   EXSR      #Main
      *
     C                   EXSR      #OutParm
      *
     C                   EVAL      *INLR       = *ON
     C                   RETURN
      *
      *
      *
     CSR   #Main         BEGSR
      *---------------------------------------------------------------------
     ?    检查输入
      *---------------------------------------------------------------------
     C     ' 0123456789' CHECK     xInpDigAmt                             90
      *
     C                   IF        *IN90       = *ON
     C                   EVAL      yMsgRtnCod  = 'FI30671'
     C                   EXSR      #ErrRtn
     C                   ENDIF
      *
     C                   MOVE      xInpDigAmt    wInpDigAmt
      *
     C                   SELECT
     C                   WHEN      wInpDigAmt  = *ZERO
     C                   EVAL      zOutChrAmt  = '零圆整'
      *                  EXSR      #ErrRtn
     C                   ENDSL
      *
     C                   EXSR      #IniChnInf
     CSR                 ENDSR
      *
      *
      *
     CSR   #IniChnInf    BEGSR
      *---------------------------------------------------------------------
     ?   初始化中文信息
      *---------------------------------------------------------------------
     C                   EVAL      wInpLen     = %LEN(%TRIM(
     C                                           %CHAR(wInpDigAmt)))
      *
     C                   MOVEA     wChnChaNbr    wChnDim
     C                   MOVEA     wChnChaUnt    wUntDim
      *
     C                   MOVEA     xInpDigAmt    wDigDim
      *
     C     1             DO        wInpLen       X
     C                   EVAL      Z           = %DEC(wDigDim(18 - X + 1):1:0)
     C                   SELECT
      *---------------------------------------------------------------------
     ?该位为零,为一般位
      *---------------------------------------------------------------------
     C                   WHEN      Z           = 0                 AND
     C                             X          <> 3                 AND
     C                             X          <> 7                 AND
     C                             X          <> 11                AND
     C                             X          <> 15
     C                   EVAL      wOutChrAmt  = wChnDim(Z + 1)
     C                                         + %TRIM(wOutChrAmt)
      *---------------------------------------------------------------------
     ?该位为零,为敏感位,要添零
      *---------------------------------------------------------------------
     C                   WHEN      Z           = 0                 AND
     C                             (X          = 3                 OR
     C                              X          = 7                 OR
     C                              X          = 11                OR
     C                              X          = 15)
     C                   EVAL      wOutChrAmt  = wUntDim(X)
     C                                         + wChnDim(Z + 1)
     C                                         + %TRIM(wOutChrAmt)
      *---------------------------------------------------------------------
     ?该位不为零
      *---------------------------------------------------------------------
     C                   WHEN      Z          <> 0
     C                   EVAL      wOutChrAmt  = wChnDim(Z + 1)
     C                                         + wUntDim(X)
     C                                         + %TRIM(wOutChrAmt)
     C                   ENDSL
     C                   ENDDO
      *
     C                   EXSR      #ChgSpcInf
     CSR                 ENDSR
      *
      *
      *
     CSR   #ChgSpcInf    BEGSR
      *---------------------------------------------------------------------
     ?转换特殊情况
      *---------------------------------------------------------------------
      *
      *---------------------------------------------------------------------
     ?零零->零
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(wLinLin:wOutChrAmt)
     C                   EVAL      wRpcLen     = %SIZE(wLinLin)
      *
     C                   DOW       wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wLin:wOutChrAmt   :
     C                                                  wRpcPos:wRpcLen)
     C                   EVAL      wRpcPos     = %SCAN(wLinLin:wOutChrAmt)
     C                   ENDDO
      *---------------------------------------------------------------------
     ?零圆->圆
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(wLinYuan:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wYuan:wOutChrAmt:
     C                                                  wRpcPos:wRpcLen)
     C                   ENDIF
      *---------------------------------------------------------------------
     ?零万->零
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(wLinWan:wOutChrAmt)
     C                   DOW       wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wWan:wOutChrAmt   :
     C                                                 wRpcPos:wRpcLen)
     C                   EVAL      wRpcPos     = %SCAN(wLinWan:wOutChrAmt)
     C                   ENDDO
      *---------------------------------------------------------------------
     ?零亿->亿
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(wLinYi:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wYi:wOutChrAmt:
     C                                               wRpcPos:wRpcLen)
     C                   ENDIF
      *---------------------------------------------------------------------
     ?角零->角整
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(wJiaoLin:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wJZ  :wOutChrAmt:
     C                                                 wRpcPos:wRpcLen)
     C                   ENDIF
      *---------------------------------------------------------------------
     ?圆零->圆整
      *---------------------------------------------------------------------
     C                   EVALR     wSfxTst     = %TRIM(wOutChrAmt)
     C                   IF        wSfxTst     = wYuanLin
     C                   EVALR     wOutChrAmt  = %TRIM(wOutChrAmt)
     C                   MOVE      wYZ           wOutChrAmt
     C                   EVAL      wOutChrAmt  = %TRIM(wOutChrAmt)
     C                   ENDIF
      *---------------------------------------------------------------------
     ?亿万->亿
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(wYiWan:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wYi:wOutChrAmt:
     C                                                wRpcPos:wRpcLen)
     C                   ENDIF
      *---------------------------------------------------------------------
     ?去除0F0E
      *---------------------------------------------------------------------
     C                   EVAL      wRpcPos     = %SCAN(X'0F0E':wOutChrAmt)
     C                   DOW       wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(''  :wOutChrAmt:
     C                                                 wRpcPos:2)
     C                   EVAL      wRpcPos     = %SCAN(X'0F0E':wOutChrAmt)
     C                   ENDDO
     CSR                 ENDSR
      *
      *
      *
     CSR   #ErrRtn       BEGSR
     C                   EVAL      *INLR       = *ON
     C                   RETURN
     CSR                 ENDSR
      *
      *
      *
     CSR   #OutParm      BEGSR
     C                   EVAL      zOutChrAmt  = wOutChrAmt
     CSR                 ENDSR
      *
      *
      *
     CSR   #InParm       BEGSR
     C                   EVAL      yMsgRtnCod  = 'SUC9999'
     CSR                 ENDSR


 qingzhou 回复于:2007-03-22 12:39:23

存档备查.


 wnai 回复于:2007-03-22 13:23:47

RPGLE代码中咋写中文啊?
俺试了试,键盘就锁住了,DSPF中倒是没问题


 uglyneo 回复于:2007-03-23 08:11:39

建立SRCPF时,按F9,将该选项改为*YES
User specified DBCS data . . . .   *YES           *NO, *YES


 wnai 回复于:2007-03-23 12:57:13

谢谢楼上的!


 sater84 回复于:2009-05-18 15:35:23

好久没来了,今天上来看了一下,发现我以前发的这个帖子在众多大侠的指导留言下竟然加精了,谢谢各位大侠们的帮助~~~
那个问题我已经解决了,我也把我写的代码发上来,大家一起讨论讨论~


H                                                  1
E                    AA         36  4               
E                    BB         36  2               
E                    TAB01   1   9  1 0 TAB01X  4   
E                    TAB02   1   3  1 0 TAB02X  4   
 *  NVLU  原数值                                    
 *  RM    余数                                      
 *  LV   10除的阶数                                
 *  CT   ARRAY 指标                                 
C           *ENTRY    PLIST                         
C                     PARM           NVLU   100     
C                     PARM           BD1    60      
C                     CLEARAA                       
C                     Z-ADD0         RM      10     
C                     Z-ADD0         LV      10     
C                     Z-ADD0         LVQ     20     
C                     Z-ADD1         CT      30       
C                     Z-ADD0         LS      20       
C                     Z-ADD0         CT0     10       
C                     MOVE ' 整 '    AA,CT            
C                     MOVE *BLANK    BD1              
C           NVLU      DOWNE0                          
C           NVLU      DIV  10        NVLU             
C                     MVR            RM               
C                     ADD  1         LS               
 C           LS        DIV  4         LVQ                
 C                     MVR            LV                 
  *                                                      
 C           RM        IFNE 0                            
 C           LV        IFEQ 1                            
 C                     EXSR FLV                          
 C                     ELSE                              
 C           LV        LOKUPTAB02     TAB02X         41  
 C   41                ADD  1         CT                 
C   41                MOVE TAB02X    AA,CT              
C                     END                               
 *                                                      
C           RM        LOKUPTAB01     TAB01X         41  
C   41                ADD  1         CT                 
C   41                MOVE TAB01X    AA,CT              
C                     ELSE                              
C           LV        IFEQ 1                            
C                     EXSR FLV                          
C                     END                       
C   62                ADD  1         CT0        
C                     END                       
C                     END                       
C                     Z-ADDCT        CJC     20 
C                     DO   CT        N       20 
C                     MOVE *BLANK    BC      3  
C                     MOVE AA,N      BC         
C                     MOVELBC        BB,CJC     
C                     SUB  1         CJC            
C*          'AA'      DSPLY          AA,N           
C                     END                           
C                     MOVEABB        BD     78      
C           BD        IFNE *BLANK                   
C                     MOVEL'  '      IT0E    1     (这个" "是耳朵) 
C                     MOVE '  '      IT0F    1      
C                     MOVELIT0E      BD1            
C           BD1       CAT  BD:0      BD1            
 C           BD1       CAT  IT0F:0    BD1               
 C                     ENDIF                            
 C                     SETON                     LR     
  *                                                     
 CSR         FLV       BEGSR                            
 C                     ADD  1         CT                
 C                     SELEC                            
 C           LVQ       WHEQ 0                           
 C                     MOVE ' 元'    AA,CT       
C           LVQ       WHEQ 1                          
C                     MOVE ' 万 '    AA,CT            
C                     SETON                     62    
C           LVQ       WHEQ 2                          
C           CT0       COMP 4                        61
C   61                SUB  1         CT               
C                     MOVE ' 亿 '    AA,CT            
C                     ENDSL                           
C                     ENDSR               
      *                                                           
**                                                                
1 壹                                                              
2 贰                                                              
3 叁                                                              
4 肆                                                              
5 伍                                                             
6 陆                                                              
7 柒                                                                                
8 捌  
9 玖  
**    
2 拾  
3 佰  
0 仟




以上!!!
再次谢谢大侠们,谢谢~~~  :-)


 afeng8848 回复于:2009-05-22 00:42:21

耳朵这个词,乃是CPT一脉相承的说法哦!我也发一个当时看了这个帖子后参考其中的一个代码改的程序,因为当时运行发现不能完全正确,就改了改,供各位参考:

     H DATEDIT(*YMD) OPTION(*SRCSTMT:*NODEBUGIO)
      *=====================================================================
     D wDigDim         S              1A   DIM(18)
      *---------------------------------------------------------------------
      *中文数字
      *---------------------------------------------------------------------
     D wChnChaNbr      S             40A   INZ(X'-
     D                                     0E51840F0E59BB0F0E4C410F0E54FD0F-
     D                                     0E56610F0E57E80F0E51BC0F0E53E10F-
     D                                     0E48C50F0E4FC00F')
      *
     D wChnDim         S              4A   DIM(10)
      *---------------------------------------------------------------------
      *中文单位
      *---------------------------------------------------------------------
     D wChnChaUnt      S             72A   INZ(X'-
     D                                     0E4C760F0E4F670F0E5AB10F0E55AF0F-
     D                                     0E48DA0F0E544A0F0E57930F0E55AF0F-
     D                                     0E48DA0F0E544A0F0E59D90F0E55AF0F-
     D                                     0E48DA0F0E544A0F0E57930F0E55AF0F-
     D                                     0E48DA0F0E544A0F')
      *
     D wUntDim         S              4A   DIM(18)
      *=====================================================================
     D wSfxTst         S              8A
     D yMsgRtnCod      S             10A
      *=====================================================================
     D wInpDigAmt      S             18S 0
     D wOutChrAmt      S            200A
      *
     D wInpLen         S              2S 0
     D wRpcLen         S              2S 0
     D wRpcPos         S              3S 0
      *
     D X               S              2S 0
     D Y               S              1S 0
     D Z               S              1S 0
      *---------------------------------------------------------------------
      *中文字符
      *---------------------------------------------------------------------
     D wLinLin         S              8A   INZ('零零')
     D wLinYuan        S              8A   INZ('零圆')
     D wLinWan         S              8A   INZ('零万')
     D wLinYi          S              8A   INZ('零亿')
     D wJiaoLin        S              8A   INZ('角零')
     D wJZ             S              8A   INZ('角整')
     D wYuanLin        S              8A   INZ('圆零')
     D wYZ             S              8A   INZ('圆整')
     D wYiWan          S              8A   INZ('亿万')
      *
     D wLin            S              4A   INZ('零')
     D wYuan           S              4A   INZ('圆')
     D wWan            S              4A   INZ('万')
     D wYi             S              4A   INZ('亿')
     C*
     C     *ENTRY        PLIST
     C                   PARM                    xInpDigAmt       18
     C                   PARM                    zOutChrAmt       50
     C*                  MOVE      '1001010000'  xInpDigAmt       18
     C*                  MOVE      ' '           zOutChrAmt       50
      *=====================================================================
     C                   EXSR      #InParm
      *
     C                   EXSR      #Main
      *
     C                   EXSR      #OutParm
      *
     C                   EVAL      *INLR       = *ON
     C                   RETURN
      *=====================================================================
     CSR   #Main         BEGSR
     C*检查输入
     C     ' 0123456789' CHECK     xInpDigAmt                             90
     C                   IF        *IN90       = *ON
     C                   EVAL      yMsgRtnCod  = 'FI30671'
     C                   EXSR      #ErrRtn
     C                   ENDIF
     C*
     C                   MOVE      xInpDigAmt    wInpDigAmt
     C*
     C                   SELECT
     C                   WHEN      wInpDigAmt  = *ZERO
     C                   EVAL      zOutChrAmt  = '零圆整'
     C                   ENDSL
     C*
     C                   EXSR      #IniChnInf
     CSR                 ENDSR
     C*===================================================================
     CSR   #IniChnInf    BEGSR
     C*初始化中文信息
     C                   EVAL      wInpLen     = %LEN(%TRIM(
     C                                           %CHAR(wInpDigAmt)))
     C                   MOVEA     wChnChaNbr    wChnDim
     C                   MOVEA     wChnChaUnt    wUntDim
     C*
     C                   MOVEA     xInpDigAmt    wDigDim
     C     1             DO        wInpLen       X
     C                   EVAL      Z=%DEC(wDigDim(18 - X + 1):1:0)
     C                   SELECT
     C*该位为零,为一般位
     C                   WHEN      Z= 0 AND
     C                             X<>3 AND
     C                             X<>7 AND
     C                             X<>11 AND
     C                             X<>15
     C                   EVAL      wOutChrAmt = wChnDim(Z + 1)
     C                             + %TRIM(wOutChrAmt)
     C*该位为零,为敏感位,要添零
     C                   WHEN      Z=0 AND
     C                             (X=3 OR
     C                              X=7 OR
     C                              X=11 OR
     C                              X=15)
     C                   EVAL      wOutChrAmt=wUntDim(X)
     C                             + wChnDim(Z + 1)
     C                             + %TRIM(wOutChrAmt)
     C*该位不为零
     C                   WHEN      Z<>0
     C                   EVAL      wOutChrAmt  = wChnDim(Z + 1)
     C                             + wUntDim(X)
     C                             + %TRIM(wOutChrAmt)
     C                   ENDSL
     C                   ENDDO
     C*
     C                   EXSR      #ChgSpcInf
     CSR                 ENDSR
     C*===============================================================
     CSR   #ChgSpcInf    BEGSR
     C*转换特殊情况
     C*零零->零
     C                   EVAL      wRpcPos     = %SCAN(wLinLin:wOutChrAmt)
     C                   EVAL      wRpcLen     = %SIZE(wLinLin)
     C*
     C                   DOW       wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt = %REPLACE(wLin:wOutChrAmt:
     C                                                  wRpcPos:wRpcLen)
     C                   EVAL      wRpcPos     = %SCAN(wLinLin:wOutChrAmt)
     C                   ENDDO
     C*零圆->圆
     C                   EVAL      wRpcPos     = %SCAN(wLinYuan:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wYuan:wOutChrAmt:
     C                                                  wRpcPos:wRpcLen)
     C                   ENDIF
     C*零万->零
     C                   EVAL      wRpcPos     = %SCAN(wLinWan:wOutChrAmt)
     C                   DOW       wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wWan:wOutChrAmt:
     C                                                 wRpcPos:wRpcLen)
     C                   EVAL      wRpcPos     = %SCAN(wLinWan:wOutChrAmt)
     C                   ENDDO
     C*零亿->亿
     C                   EVAL      wRpcPos     = %SCAN(wLinYi:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wYi:wOutChrAmt:
     C                                               wRpcPos:wRpcLen)
     C                   ENDIF
     C*角零->角整
     C                   EVAL      wRpcPos     = %SCAN(wJiaoLin:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wJZ:wOutChrAmt:
     C                                                 wRpcPos:wRpcLen)
     C                   ENDIF
     C*圆零->圆整
     C                   EVALR     wSfxTst     = %TRIM(wOutChrAmt)
     C                   IF        wSfxTst     = wYuanLin
     C                   EVALR     wOutChrAmt  = %TRIM(wOutChrAmt)
     C                   MOVE      wYZ           wOutChrAmt
     C                   EVAL      wOutChrAmt  = %TRIM(wOutChrAmt)
     C                   ENDIF
     C*亿万->亿
     C                   EVAL      wRpcPos     = %SCAN(wYiWan:wOutChrAmt)
     C                   IF        wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(wYi:wOutChrAmt:
     C                                                wRpcPos:wRpcLen)
     C                   ENDIF
     C*去除0F0E
     C                   EVAL      wRpcPos     = %SCAN(X'0F0E':wOutChrAmt)
     C                   DOW       wRpcPos     > *ZERO
     C                   EVAL      wOutChrAmt  = %REPLACE(''  :wOutChrAmt:
     C                                                 wRpcPos:2)
     C                   EVAL      wRpcPos     = %SCAN(X'0F0E':wOutChrAmt)
     C                   ENDDO
     CSR                 ENDSR
     C*=============================================================
     CSR   #ErrRtn       BEGSR
     C                   EVAL      *INLR       = *ON
     C                   RETURN
     CSR                 ENDSR
     C*=============================================================
     CSR   #OutParm      BEGSR
     C                   EVAL      zOutChrAmt  = wOutChrAmt
     CSR                 ENDSR
     C*=============================================================
     CSR   #InParm       BEGSR
     C                   EVAL      yMsgRtnCod  = 'SUC9999'
     CSR                 ENDSR


 tibcoo 回复于:2009-05-26 17:33:53

RPG IV教程第六章不就有这个例题?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=880056
转载请注明作者名及原文出处