Ibm midrange 如何在as400中创建联接逻辑文件

Ibm midrange 如何在as400中创建联接逻辑文件,ibm-midrange,Ibm Midrange,我有一个物理文件包含偶数(2,4,6,8,10),另一个PF包含奇数(1,3,5,7,9)。我们可以创建连接逻辑文件,我必须在RPGLE pgm中使用它来按(1到10)的顺序显示数字 如何为此场景创建联接逻辑文件 将每个物理文件视为一个网格或表格,其中文件中的记录是行,文件中的字段是列。(这些也是SQL中使用的术语。)想象一下将两个表并排放置。联接将在键匹配的位置连接并合并行,以构建新的结果行,每个结果行包含两个表中的值 但这根本不是您描述的场景。您希望将两个表垂直组合,更像是将两堆卡片按所需顺

我有一个物理文件包含偶数(2,4,6,8,10),另一个PF包含奇数(1,3,5,7,9)。我们可以创建连接逻辑文件,我必须在RPGLE pgm中使用它来按(1到10)的顺序显示数字


如何为此场景创建联接逻辑文件

将每个物理文件视为一个网格或表格,其中文件中的记录是行,文件中的字段是列。(这些也是SQL中使用的术语。)想象一下将两个表并排放置。联接将在键匹配的位置连接并合并行,以构建新的结果行,每个结果行包含两个表中的值


但这根本不是您描述的场景。您希望将两个表垂直组合,更像是将两堆卡片按所需顺序排列成一堆。

将每个物理文件视为一个网格或表格,其中文件中的记录为行,文件中的字段为列。(这些也是SQL中使用的术语。)想象一下将两个表并排放置。联接将在键匹配的位置连接并合并行,以构建新的结果行,每个结果行包含两个表中的值


但这根本不是您描述的场景。您希望将两个表垂直组合,更像是将两堆卡片按所需顺序排列成一堆。

将每个物理文件视为一个网格或表格,其中文件中的记录为行,文件中的字段为列。(这些也是SQL中使用的术语。)想象一下将两个表并排放置。联接将在键匹配的位置连接并合并行,以构建新的结果行,每个结果行包含两个表中的值


但这根本不是您描述的场景。您希望将两个表垂直组合,更像是将两堆卡片按所需顺序排列成一堆。

将每个物理文件视为一个网格或表格,其中文件中的记录为行,文件中的字段为列。(这些也是SQL中使用的术语。)想象一下将两个表并排放置。联接将在键匹配的位置连接并合并行,以构建新的结果行,每个结果行包含两个表中的值


但这根本不是您描述的场景。您希望将两个表垂直合并,更像是将两堆卡片按所需顺序排列成一堆。

您不是在描述连接逻辑,它将一个表中的记录连接到另一个表中的一个或多个记录

相反,您描述的是DDS源中的已知记录,其看起来是这样的(假设文件之间的记录格式相同):

但是,如果这两个文件有不同的记录格式,并且您希望每个文件都有不同的字段……那么看起来是这样的:

A          R ODDFILER                  PFILE(ODDFILE)
A            RECNO
A            FLD1
A            FLD3
A          K RECNO
A 
A          R EVENFILER                 PFILE(EVENFILE)
A            RECNO
A            FLD2
A            FLD4
A          K RECNO 
这里有一篇关于使用连接和多格式逻辑的文章。

正如CRPence的回答所提到的,MFLF类似于sqlunionall视图


不同之处在于,在我的第二个示例中,MFLF允许FLD1为字母,FLD2为数字。SQL联合视图不允许这样做;SQL中选择的列必须是相同(或兼容)类型。

您不是在描述连接逻辑,它将一个表中的记录连接到另一个表中的一个或多个记录

相反,您描述的是DDS源中的已知记录,其看起来是这样的(假设文件之间的记录格式相同):

但是,如果这两个文件有不同的记录格式,并且您希望每个文件都有不同的字段……那么看起来是这样的:

A          R ODDFILER                  PFILE(ODDFILE)
A            RECNO
A            FLD1
A            FLD3
A          K RECNO
A 
A          R EVENFILER                 PFILE(EVENFILE)
A            RECNO
A            FLD2
A            FLD4
A          K RECNO 
这里有一篇关于使用连接和多格式逻辑的文章。

正如CRPence的回答所提到的,MFLF类似于sqlunionall视图


不同之处在于,在我的第二个示例中,MFLF允许FLD1为字母,FLD2为数字。SQL联合视图不允许这样做;SQL中选择的列必须是相同(或兼容)类型。

您不是在描述连接逻辑,它将一个表中的记录连接到另一个表中的一个或多个记录

相反,您描述的是DDS源中的已知记录,其看起来是这样的(假设文件之间的记录格式相同):

但是,如果这两个文件有不同的记录格式,并且您希望每个文件都有不同的字段……那么看起来是这样的:

A          R ODDFILER                  PFILE(ODDFILE)
A            RECNO
A            FLD1
A            FLD3
A          K RECNO
A 
A          R EVENFILER                 PFILE(EVENFILE)
A            RECNO
A            FLD2
A            FLD4
A          K RECNO 
这里有一篇关于使用连接和多格式逻辑的文章。

正如CRPence的回答所提到的,MFLF类似于sqlunionall视图


不同之处在于,在我的第二个示例中,MFLF允许FLD1为字母,FLD2为数字。SQL联合视图不允许这样做;SQL中选择的列必须是相同(或兼容)类型。

您不是在描述连接逻辑,它将一个表中的记录连接到另一个表中的一个或多个记录

相反,您描述的是DDS源中的已知记录,其看起来是这样的(假设文件之间的记录格式相同):

但是,如果这两个文件有不同的记录格式,并且您希望每个文件都有不同的字段……那么看起来是这样的:

A          R ODDFILER                  PFILE(ODDFILE)
A            RECNO
A            FLD1
A            FLD3
A          K RECNO
A 
A          R EVENFILER                 PFILE(EVENFILE)
A            RECNO
A            FLD2
A            FLD4
A          K RECNO 
这里有一篇关于使用连接和多格式逻辑的文章。

正如CRPence的回答所提到的,MFLF类似于sqlunionall视图


不同之处在于,在我的第二个示例中,MFLF允许FLD1为字母,FLD2为数字。SQL联合视图不允许这样做;SQL中选择的列必须具有相同(或兼容)的类型。

FWiW,使用与相同容量的联合视图而不是[n隐式]多格式逻辑文件的示例
ovrdbf     the_File tofile(evens_odds) mbr(*first) share(*yes)    
opnqryf    the_File keyfld((nbr))
/* optionally, the next three commands to test and review results: */
cpyfrmqryf the_File *print
dspsplf    qsysprt splnbr(*last)
posdbf     the_File *start
/* call the RPG program that could read by key or sequentially */
call       the_RPGpgm
                R ODDS_EVENS                PFILE(ODD_NBRS EVEN_NBRS)
                  NBR                                                
                  NBRTEXT                                            
                K NBR                                                
cpyf ODDS_EVENS *print fromrcd(*start)
dspsplf qsysprt splnbr(*last)
                R ODDS_EVENS                PFILE(ODD_NBRS EVEN_NBRS)           
                                            TEXT('NBR fld only; 1-digit values')
                  NBR  
                K NBR  
                K *NONE
                K *NONE
                S NBR                       COMP(LT 10)    
                R ODDS_ONLY                 PFILE(ODD_NBRS)
                                            TEXT('NBR,NBRTEXT mapped to zoned')
                  NBR                
                  NBRTEXT        2S00
                K NBR    
                K NBRTEXT
                K *NONE
                R EVENS_ONLY                PFILE(EVEN_NBRS)                    
                                            TEXT('NBR to alpha and more zoned')
                  NBR
                  NBR2S00        2S00       RENAME(NBR) COLHDG('NBR2S00')
                  NBR2A          2A  I      SST(NBR2S00 1 2) COLHDG('NBR2A')
                  NBRTEXT
                K *NONE  
                K *NONE  
                K NBR2S00