代码之家  ›  专栏  ›  技术社区  ›  Mustapha George

偶然发现了fmtdata(ibm i)

  •  3
  • Mustapha George  · 技术社区  · 7 年前

    我偶然发现了一些fmtdata,它似乎是一种查询/排序语言,比旧RPG系统中的SQL早。我正试图解开它的用法。

    例子:

    物理文件布局:

    ORNO         S      9 0     1     9 Order No       
    ORCSTNO      A     10      10    19 Custno        
    ORDAT        S      6 0    20    25 Order Date     
    ORAMT        S     12 2    26    37 Order Amt  
    

    pf源成员ordsrt中的排序条件:

    HSORTR    25A                      Keyfields are 25 characters long - Sort Ascending
    FNC  20  25                        KEY 1: ORDER DATE              
    FNC   1   9                        KEY 2: ORDERNO                 
    FNC  10  19                        KEY 3:  CUST NO                 
    FDC   1  37                        Take whole record (1-37)       
    

    排序命令

    FMTDTA INFILE((MYLIB/ORDHED)) OUTFILE(QTEMP/ORDHED)          
    SRCFILE(MYLIB/MYSRC) SRCMBR(ORDSRT) OPTION(*NOPRT)       
    

    结果:

    按日期/订单/客户成功排序#

    但是,在FMTSRC中还有一些其他的线路,我不确定它们的用途。示例:

    FOU 
    FOC
    FNU
    O C   1   1EQCD                    CANCELLED  
    I C   8   8EQCB                    CREDIT NOTE
    O C   1   1EQCX                    OMIT CANCELLED
    
    2 回复  |  直到 7 年前
        1
  •  6
  •   Benny Hill Mark Plumridge    7 年前

    这六行的意思是:

    FOU
    

    第6栏:F表示是现场陈述

    col 7:o表示字段是相反的控制字段

    第8列:u表示该字段包含区域格式的有符号十进制数据。

    FOC
    

    第6栏:F表示是现场陈述

    col 7:o表示字段是相反的控制字段

    第8列:c表示该字段包含字符数据

    FNU
    

    第6栏:F表示是现场陈述

    第7栏:n表示该字段为正常控制字段。

    第8列:u表示该字段包含区域格式的有符号十进制数据。

    O C   1   1EQCD                    CANCELLED
    

    第6栏:o表示省略

    第8列:c表示因子1和因子2必须包含字符数据

    第9栏:1是系数1的起始位置

    第13栏:1是因子1的结束位置

    第17列:eq表示因子1必须等于因子2

    第19列:c表示系数2为常数

    第20列:d是与因子1比较的常量或关键字。

    第40栏:取消是评论

    I C   8   8EQCB                    CREDIT NOTE
    

    第6栏:我的意思是包括

    第8列:c表示因子1和因子2必须包含字符数据

    第9列:8是系数1的起始位置

    第13栏:8是因子1的结束位置

    第17列:eq表示因子1必须等于因子2

    第19列:c表示系数2为常数

    第20列:b是与因子1比较的常量或关键字。

    第40栏:贷方通知单是注释

    O C   1   1EQCX                    OMIT CANCELLED
    

    第6栏:o表示省略

    第8列:c表示因子1和因子2必须包含字符数据

    第9栏:1是系数1的起始位置

    第13栏:1是因子1的结束位置

    第17列:eq表示因子1必须等于因子2

    第19列:c表示系数2为常数

    第20列:x是与因子1比较的常量或关键字。

    第40列:省略取消是注释

    Reference

        2
  •  1
  •   danny117    7 年前

    更多关于绊倒。 在SEU的控制线上。 知识产权?您可以在下面显示排序提示行。排序中有rf f行,在起始位置按f1。当我今天按F4键或输入错误的内容时,它不会自动提示我,但当提示打开时,您可以按F1帮助。然后你把它翻译成更现代的东西。

    在开始位置按F1。当我今天按F4键或输入错误的内容时,它不会自动提示我,但当提示打开时,您可以按F1帮助。然后你把它翻译成更现代的东西。 select prompt prompt rf help

    推荐文章