偶然发现FMTDTA(IBM i)

Mus*_*rge 3 rpgle ibm-midrange

我偶然发现了一些FMTDTA,它似乎是一种在旧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  
Run Code Online (Sandbox Code Playgroud)

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)       
Run Code Online (Sandbox Code Playgroud)

排序命令

FMTDTA INFILE((MYLIB/ORDHED)) OUTFILE(QTEMP/ORDHED)          
SRCFILE(MYLIB/MYSRC) SRCMBR(ORDSRT) OPTION(*NOPRT)       
Run Code Online (Sandbox Code Playgroud)

结果:

成功按DATE/ORD排序#/ CUST#

但是,FMTSRC还有其他几条线路,我不确定它们的用途.例子:

FOU 
FOC
FNU
O C   1   1EQCD                    CANCELLED  
I C   8   8EQCB                    CREDIT NOTE
O C   1   1EQCX                    OMIT CANCELLED
Run Code Online (Sandbox Code Playgroud)

Ben*_*ill 6

以下是这六行的含义:

FOU
Run Code Online (Sandbox Code Playgroud)

第6列:F表示它是Field声明

第7列:O表示该字段是相反的控制字段

第8列:U表示该字段包含分区格式的带符号十进制数据

FOC
Run Code Online (Sandbox Code Playgroud)

第6列:F表示它是Field声明

第7列:O表示该字段是相反的控制字段

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

FNU
Run Code Online (Sandbox Code Playgroud)

第6列:F表示它是Field声明

第7列:N表示该字段是正常控制字段

第8列:U表示该字段包含分区格式的带符号十进制数据

O C   1   1EQCD                    CANCELLED
Run Code Online (Sandbox Code Playgroud)

第6栏:O表示OMIT

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

第9:1列是因子1的起始位置

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

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

第19列:C表示因子2是常数

第20列:D是与因子1进行比较的常数或关键字

Col 40:CANCELED是评论

I C   8   8EQCB                    CREDIT NOTE
Run Code Online (Sandbox Code Playgroud)

第6栏:我的意思是包括

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

第9:8列是因子1的起始位置

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

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

第19列:C表示因子2是常数

第20列:B是与因子1进行比较的常数或关键字

第40栏:CREDIT NOTE是一条评论

O C   1   1EQCX                    OMIT CANCELLED
Run Code Online (Sandbox Code Playgroud)

第6栏:O表示OMIT

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

第9:1列是因子1的起始位置

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

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

第19列:C表示因子2是常数

第20列:X是与因子1进行比较的常数或关键字

第40栏:OMIT CANCELED是评论

参考