编码帮助(KeyBasic)

时间:2013-03-19 12:51:46

标签: unix translate basic

我有这个文件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”?不是FileSystem,因为它不存在,或者它可能是某种DataBase?

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

找到查看所有内容的源代码并重新创建它的方法极为有用,我们在名为BE的命令(批量输入)下执行INPUT。我试图通过FTP将整个操作系统下载到USB驱动器(我不知道为什么机器不会启动UBUNTU LIVE USB,主板允许你启动它,但是没有发生,所以唯一的选择是通过FTP下载并尝试在某个虚拟机下运行它...

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

Northgate购买Microdata(SovereignX的创造者),然后麦当劳道格拉斯购买了北门......这项研究正在扼杀我......似乎一切都在某种数据库下,用DATA / BASIC和PROC编写

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

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

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

4 个答案:

答案 0 :(得分:5)

绝对是一种基本方言。相当古老的代码,所以没有什么太晦涩难懂。一个IF ...那么是一个IF ......然后。

编号为590的行之间的代码(pastebin中的第10行到第38行)是您的主要处理循环。行50009000的{​​{3}}是从主循环调用的子程序。

我在这里看到的几个更神秘的功能,无论方言如何:

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

<强>更新

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

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

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

<强>更新

我和你在一起,并不是所有的格式化字符串都在doc中解释。但我怀疑Z9,的工作方式与他们在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中OPEN语句的语法与CachéMultiValueBasic和UniBasic的文档不完全匹配。但是,我可以推测字符串'1/1/FSNC0128S'的一部分代表频道号1,而这是

中出现的相同频道号。
5    READ R FROM 1 ELSE GOTO 90

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

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

答案 1 :(得分:2)

Cache MultiValue Basic是我能找到的最佳选择。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

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

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

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