我试图破译旧DOS程序中的这个文件实际上在做什么。
IDATE EQU I/1/8/0 Date : MM/DD/YY
ITIME EQU I/9/8/0 Time : HH:MM:SS
IUSER EQU I/17/6/0 User ID : XXX999
ITERM EQU I/23/4/0 Terminal ID : ST99
KAREA EQU K/1/64/0
我原以为EQU
是一位经营者要求"等于"。我似乎无法弄清楚它在这里的用途。
字符串看起来像" I/1/8/0
"或" K/1/64/0
"实际上是与ITIME
和KAREA
变量进行比较的值,还是指向存储数据的某个位置?
文件中的其他一些行:
FUNITM EQU X/3001/013/0
F0 EQU W/3001/013/0/ 000000000
F1 EQU *13/0/ASM 000103000
F2 EQU *13/0/ASM,000103000
F3 EQU *13/0/JCR 000104000
F4 EQU *13/0/JCRR000104000
F5 EQU *13/0/JVR 000104000
我希望我知道谷歌的正确用法如何运作......任何线索都会很棒。谢谢
这是程序中的另一个文件,可能是这里写的内容的指示器:
RMK Cash receipts listing in Alpha sequence
RMK
RMK
RMK ***** Data Definition *****
RMK ***** File I/O Area is 1024 bytes *****
RMK "A" Record in SCRN File contains 8 numbers from 01-98
RMK (99 is reserved as the null file pointer)
RMK in positions 11-12, 13-14, ... 25-26 where 11-12
RMK establishes the physical location of file #1,
RMK 13-14 file #2 ... 25-26 file #8 as referenced in this
RMK source code module.
RMK These numbers (01-98) point to the physical file
RMK assignments for files #1 thru #8 used in this source
RMK file.
RMK The actual physical locations of these files (01-98)
RMK appear in positions 3 thru 25 in records 1-98 in the
RMK STxx\FILES.REF file.
RMK
RMK (I/O Area Definitions)
IAREA EQU I/1/1024/0 The "I" area position 1 for a length 1024
RMK
RMK (File #1 I/O Area Definition)
CPY /DB\CHK/
RMK
RMK (File #2 I/O Area Definition)
CPY /DB\CST/
答案 0 :(得分:2)
虽然我从未见过像这样使用的EQU,但它们看起来像某种字段或结构定义。
从IDATE行开始:
I - Integer type.
1 - Offset of the 'IDATE' field.
8 - Length of the 'IDATE' field.
0 - ??? Perhaps # of decimal places?
如果我们取IDATE的偏移量并加上它的长度,那么我们就会得到9,这是ITIME线上的偏移量。同样适用于IUSER,ITERM和KAREA。
显然这与btrieve数据有关。我使用了btrieve(很多年前),并且从未看过使用这种语法定义的表。更常见的是人们使用DDF文件(例如,请参阅this)。如果您仍然难以解析数据,可能需要寻找。
答案 1 :(得分:0)
首先,谢谢大家的意见;它帮助引导我走向正确的方向;
事实证明,EQU
用于为BTRIEVE
数据库创建数据库表定义。
很高兴,我可以通过BUTIL
实用程序轻松操作数据,并编写一些脚本将部分二进制.DAT
文件拆分为逗号分隔列。
特别感谢David Wohlferd(如果您发布有关结构定义的答案,我会将其标记为已接受)。