2

我有这个文件http://pastebin.com/pH4Pk0sf没有扩展名,它可能是 COBOL,因为它托管的计算机使用 BASIC、COBOL 和一个叫做“KEY BASIC”的东西......我不明白这个代码.. .我用一些线条但不是全部......

我想将其转换为 C#,但我不知道如何,如果有人能告诉我它是哪种语言,也许我可以挖掘更多。

该程序读取这个其他文件http://pastebin.com/rdbdappQ并为打印机创建一个输出......我需要知道它是如何工作的,以便让 Windows 程序(通过 C#)做同样的事情...... .

谢谢你。

更新

感谢您的帮助,我正在尝试重新创建代码,我看到这样的事情OPEN '3/1/TABPRESU' FOR RANDOM IO ELSE DISPLAY 'NO ABRE TABPRESU';STOP我不知道什么是“3/1/TABPRESU”当然它是一个文件,我有“TABPRESU”但是什么是“3 /1" ? 不是文件系统,因为它不存在,或者它可能是某种数据库?

我们使用的程序是 SovereignX,在 UNIX 下,它有一个选项UNIXCOPY允许用户将文件从 SovereignX 复制到 UNIX 文件系统,我没有找到任何关于 SovereignX 的信息...

找到一种方法来查看所有内容的源代码并重新创建它会非常有帮助,我们在一个名为BE(Batch Entry) 的命令下执行 INPUT。我正在尝试通过 FTP 将整个操作系统下载到 USB 驱动器(我不知道为什么机器无法启动 UBUNTU LIVE USB,主板允许您启动它,但没有任何反应,所以唯一的选择是通过 FTP 下载并尝试在某个虚拟机下运行它...

http://en.wikipedia.org/wiki/Northgate_Information_Solutions

Northgate 购买了 Microdata(SovereignX 的创建者),然后 Mcdonell Douglas 购买了 northgate...这项研究让我很生气...似乎一切都在某种数据库下,用 DATA/BASIC 和 PROC 编写

http://timmcnulty.iofm.net/realityx.htm

更新 2 它是关键语言...但是如果我用 NP++ 打开文件会有点混乱,我需要从 SovereignX 导出然后才能读取它...但是用 ~100 个文件这样做是极端的...有人知道 KeyBasic IDE 吗?嗯谢谢

更新 3 该程序具有的 .DAT 和 .IDX 文件受密码保护,从控制台它不会要求我输入密码,但如果我使用 DBISAM Viewer 并且没有人知道密码......该死的

4

4 回答 4

5

绝对是 BASIC 方言。相当老的代码,所以没有什么太晦涩难懂的。一个 IF ... THEN 是一个 IF ... THEN。

编号590行之间的代码(您的 pastebin 中的第 10 到 38 行)是您的主要处理循环。行的GOSUB50009000是从主循环调用的子例程。

我在这里看到的一些更神秘的功能,与方言无关:

  • OCONV是一个格式化函数;把它想象成 sprintf()
  • PRINT 语句似乎在每个非空行之前插入一个空格;老式行式打印机通常将打印行的第一个字符解释为控制字符以前进到新页面,例如;空格表示“只打印该行”

更新

我在第一次阅读时错过了一些东西:括号语法正在执行子字符串操作。因此,例如,您的 pastebin 第 12 行的代码,

IF R[26,2]='20' THEN GOSUB 9000;GOTO 5

将缓冲区(与READat 行相关联5)的字符 26 和 27 与 string 进行比较'20'。在下一行中R[26,2]#30#是一个不等于运算符。

更新

我和你在一起,文档中并未解释所有格式字符串。但我怀疑Z, 9, 和,他们在 COBOL 中的工作方式一样。

  • Z: 抑制前导零:如果对应的数字和左边的所有数字都为零,则打印空格,否则打印数字
  • ,:如果左边有一个非空白/非零数字,则打印逗号,否则打印空格
  • 9:打印相应的数字,即使它是零

因此,格式字符串为MDZZ,ZZ9

0     prints as      0
12    prints as     12
123   prints as    123
1234  prints as  1,234
12345 prints as 12,345

更新

您的 pastebin 中的语句语法与OPENCaché MultiValue Basic 和 UniBasic 的文档不完全匹配。但是,我可以推测字符串的一部分'1/1/FSNC0128S'表示通道号 1,并且它与出现在

5    READ R FROM 1 ELSE GOTO 90

将通道号想象为 Perl 中的文件句柄或 C 文件描述符。

我会假设1字符串中的另一个是某种访问修饰符(尽管FOR RANDOM IO这似乎是矛盾的),并且只专注于定位文件FSNC0128S

于 2013-03-19T14:03:54.957 回答
3

我可以告诉你它最初是什么,因为我在 1976/77 年左右实现了 KEYBASIC。我在 CMC 的 Sovereign 系统上工作并实施了他们的数据输入系统。该公司已经有一个相当标准的 Basic 解释器和运行时系统,它在 Sovereign 系统上运行。我首先将其修改为分时共享,因为多个数据输入用户使用一个 Sovereign 处理器,其次添加了一些额外的面向数据输入的功能,这些功能都以“K”为前缀。修改后的语言被称为“KEYBASIC”。

于 2013-07-25T11:58:12.860 回答
2

Cache MultiValue Basic是我能找到的最合适的。

于 2013-03-19T13:35:21.613 回答
0

这绝对是 BASIC 的一些方言。几年前,Data General 有一个基本版本,在当时非常适用于严肃的多用户业务应用程序。维基百科有一篇文章提到了这种方言和一些类似的竞争对手。

http://en.wikipedia.org/wiki/Data_General_Business_Basic

如果代码很旧,您是否检查过它是 CBASIC 的可能性?CBASIC 是在早期微型计算机上开发业务应用程序的流行方式。

http://en.wikipedia.org/wiki/CBASIC

于 2013-03-19T13:55:24.863 回答