-1

我将尝试根据以下文件设置选项重新定义 XFD 文件结构

Anaylsis Result:

Max Record length 300
Min record length 61
No of records 466
Blocking factor 1
Preallocation amount 0
Extension amount 1
Compression factor 80
Encrypted ? No
Number of keys 4
Primary key has 1 segments
key size 13 offset 0

key 02 has 3 segments
Duplicates Are allowed
Key size 4 offset 4
Key size 40 offset 21
Key size 4 offset 0

Key 03 has 3 segments
Duplicates Are allowed
Key size 4 offset 4
Key size 8 offset 13
Key size 4 offset 0

Key04 has 1 segment
Duplicates Are allowed
Key size 10 offset 21

另一个给定的 XFD 文件结构已经无法从 AcuODBC 获取数据:我正在通过 ACUODBC 从 pote.XFD 链接到 pote Acu 数据库文件。

XFD,02,POTE,POTE
00026,00018,002
1,0,008,00000
02
INTIND-UNIQ
INTIND-OCC
1,1,010,00008
01
IND16
000
0004,00004
00000,00004,12,00009,+00,000,000,INTIND-UNIQ
00004,00004,12,00009,+00,000,000,INTIND-OCC
00008,00010,16,00010,+00,000,000,IND16
00018,00008,16,00008,+00,000,000,TERM20

我正在通过 ACUODBC 从 pote.XFD 链接到 pote Acu 数据库文件。我的问题是如何根据上面给出的分析更改我的 pote.XFD 结构以形成正确的 XFD 结构。

我知道这个 cobol 表中有四个键,但我仍然不知道如何根据给定的分析信息手动配置这个数据结构。

以下是我已经获得的关于如何在手册中形成XFD正确结构的另一个参考指南,希望专家可以帮助解释如何在正确的XFD结构上形成方法。

# This xfd layout is a generic one suitable for accessing any 
# .DAD file. However, it needs to be copied and amended for each 
# DAD file that you wish to get access to. 
# The simplest scenario is that you copy dad.xfd to a new file 
# with the same name as the database you wish to access and extension .XFD 
# Then edit this new file and replace the two instances of 'FILE' with the 
# filename that you want to access. e.g. if you want to have ODBC access to 
# icvc.dad then copy dad.xfd to new file icvc.xfd and change line 
#   XFD,02,FILE,FILE            to be 
#   XFD,02,ICVC,ICVC 
# 
# If this doesn't work then the database file you are trying to access has 
# probably set different values for search index sizes. The easiest way to 
# check this is to run $list for the database that you want to access and 
# note down all the key information that it gives. If that is different 
# to the key info in this file then you need to modify the xfd file to match 
# In the current xfd there are four indexes defined. In all cases the first 
# index will be correct and so should the third index. However, the other 
# two may need to be modified or removed if not present. 
# Index 4 is optional and is not present if the database is rebuilt without 
# the fast list option. 
# explaining the details of 2nd index. 1 st line consists of 8 values separated 
# by commas. The first value of 3 is how many segments the index consists of. 
# second value 1 means duplicates allowed (0 means NO DUPS). 
# The remaining six fields are three pairs of key size and byte offset, e.g. 
# first index segment is 4 bytes long and starts from byte 4, second index 
# segment is 20 bytes long and starts from byte 21 etc. 
# The second line specifies how many field names there are to follow and lines 3 
# to 5 are the three field names as defined lower in this xfd. For instance 
# if you look at field D1UNIQ you will see it is defined as starting from byte 0 
# and is 4 bytes long. This corresponds to the values entered in the key definition. 
# 
XFD,02,ICVC,ICVC 
00300,00041,004 
# [Key Section] 
# [1st index] 
01,0,013,00000 
04 
D1UNIQ 
D1NAME 
D1NAMX 
D1OCCU 
# [2nd index] 
3,1,004,00004,020,00021,004,00000 
03 
D1NAME 
D1TUPP 
D1UNIQ 
# [3rd index] 
3,1,004,00004,008,00013,004,00000 
03 
D1NAME 
D1NUMB 
D1UNIQ 
# [4th index] 
1,1,020,00021 
01 
D1TUPP 
# [Condition Section] 
000 
# [Field Section] 
0015,00015,00016 
00000,00013,16,00013,+00,000,999,D1KEY 
00000,00004,12,00009,+00,000,000,D1UNIQ 
00004,00004,16,00004,+00,000,000,D1NAME 
00008,00001,16,00001,+00,000,000,D1NAMX 
00009,00004,12,00009,+00,000,000,D1OCCU 
00013,00008,11,00018,-06,000,000,D1NUMB 
00021,00040,16,00040,+00,000,000,D1TUPP 
00061,00001,01,00001,+00,000,000,D1GRAD 
00062,00004,12,00008,+00,000,000,D1DLUP 
00066,00004,12,00008,+00,000,000,D1TLUP 
00070,00004,16,00004,+00,000,000,D1OLUP 
00074,00001,16,00001,+00,000,000,D1TYPE 
00075,00002,16,00002,+00,000,000,D1FORM 
00077,00160,16,00160,+00,000,000,D1TEXT 
00237,00001,16,00001,+00,000,000,D1PRIN 
00238,00062,16,00062,+00,000,000,D1FILL 
4

1 回答 1

0

首先这样做:

'# 此 xfd 布局是一种通用布局,适用于访问任何
'# .DAD 文件。但是,对于
您希望访问的每个 '#DAD 文件,都需要对其进行复制和修改。
'# 最简单的方案是将 dad.xfd 复制到一个新文件中
'# 与要访问的数据库同名,扩展名为 .XFD
'# 然后编辑这个新文件并将 'FILE' 的两个实例替换为
'# 您要访问的文件名。例如,如果您想通过 ODBC 访问
'# icvc.dad 然后将 dad.xfd 复制到新文件 icvc.xfd 并将行
'# XFD,02,FILE,FILE 更改为
'# XFD,02,ICVC,ICVC

如果这不起作用,请按照说明找出有多少键以及第二个键的值。如果您发现只有三个键,请从模板中删除第四个键。如果第二个键的值不同,请在 [FieldSection] 中更改它们。

在更改其他任何内容之前让它工作。

于 2013-09-13T07:31:41.637 回答