D0I:10.13374/j.issn1001-053x.1986.s2.004 1986年9月 北京钢铁学院学报 Special issue Journal of Beijing University 专翔2 of Iron and Steel Technology No2,1986.9 冶金热力学数据库应用系统怎样检 查用户命令 王秀美 沈怡平 摘 要 本文介绍了M已THEDAS.怎样检查用户命令。根据用户命令的语法结构,对其进行三方面检查, (1)命令关健字及格式。 (2)参数关键字及格式,参数的数据类型。 (3)命令与参数的搭配关系。 上述任务由用户命令解释程序的换时模块和语法检查梭块元成。 METHEDAS的用户命令解释程序用FORTRAN-IV实现。它简单、实用、使F移他。在编制程序过程中较 地快拟了FORTRAN77的字符处理功能。 Checking of User's Commands in METHEDAS Wang Xiumei Shen Yiping abstract Checking of user's commands in METHEDAS is the main subject in this paper,On basis of the syntactic structures of user's com mands,the checking on following items, 1.command keywords and formats 2.parameter keywords,formats and their data types 3.rules of jointing commands with parameters is completed by means of a code conversion module and a syntax parsing mo- dule,which compose an interpreter. This interpreter,constructedwithin the FORTRAN-4 framework,is very successful in its simplicity,usefulness,and ability of simulating the string processing function,possessed by FORTRAN-77. ·14
年 。 月 北 京 钢 铁 学 院 学 报 犷 ,, 专辑 , 。 匀 , 二二二二二二戈二二二二二二二 二 一 二 冶金热力学数据库应用系统怎样检 查 用户命令 王 秀美 摘 之干 私 军 , 刀 口 要 本 文介绍了 已 怎样检 查 用 户 命令 。 根据用 户 命令的 语 法结 构 , 对其 进 行三 方面 检查 命 令关键字及格式 。 名 参数 关键 字 及格式 , 参数的 数 据 类型 。 命 令 与参数的 搭 配关 系 。 上 述任 务由用 户 命 令解 释程序的 换 码 模块 和语 法检查模块 完 成 。 的 用 户 命 令解释程序 用 一 实现 。 它 简 单 、 实 用 、 便 于移值 。 在 编 制 程序 过 程 中较 杠 地 按拟 了 的 字 符处理 功 能 。 ‘ ’ 王 , 。 尸 , , , 华 , 二 一 吐 。 , 、 , , , , 一 DOI :10.13374/j .issn1001-053x.1986.s2.004
前 言 研制治金热力学数据库应用系统(METHEDAS)是为了满足用户的使用要求,而 以 用户的使用要求是用命令来体现的。使用METHEDAS时,首先启动它,然后根据使用 要求从终端投入相应的命令。命令是正确的,系统正常运行,能得出予期结果。如果命 令是错的,系统则不能正常运行。因此保证所投人的命令正确,是使用METHEDAS的 首要条件。METHEDAS主要的用户是治金物理化学方面的专业人员,不能要求他们都 具备良好的计算机知识。即使用户精通计算机技术,一时疏忽,输错命令也在所难免。 因而,执行命令前系统对其进行检查,尽可能保证它的正确性,这是系统的用户友好性 的重要标志之一。 1 METHEDAS的命令形式 METHEDAS命令形式如下: 命令关键字/{N1=a们,CN2=bJ,…,[Nj=<C,c2,>]}/ 其中N1,N2…Nj为参数关键字,a1,b1,c1,c2,…为参数值。图(1)是命 令的语法图。 w Parameter Command Paraneter Parameter keyword keyword Parameter 一 图1 METHEDAS命令的语法图 Fig.1 Syntax chart of command of METHEDAS 命令关键字:GET,MOD,DELTA,BINARY,EOUICOMP等共二十个。 参数关键字:STF,ZPH,TU,JOULE,SYSTEMM等共六十个。 参数值可以是整型数,实型数,逻辑型或字符型。 2怎样检查命令 METHEDAS从三方面入手检查用户投入的命令。(1),命令关键字和命今格式。(2)、 参数关键字、参数格式以及参数值的类型。(3)、命令与参数之间的搭配关系。其实质是 检查命令的语法结构是否正确。下面是一条METHEDAS命令: DELTA/TU=1200.,TO=1600.,CONCNS=<.0008,.000016>/ 怎样检查这条命令呢?DELTA是命令关键字,TU、TO、CONCNS是参数关键字。 符号“/”是规定的命今格式,“=”,“=<”是规定的参数格式。TO、TU、CO- N、NS的参数值都是实型数。 15
前 言 研制冶金热力学数据库应 用系统 是 为 了满足用 户的使 用要求 , 而 用户的使用要 求是 用命令来体现的 。 使用 时 , 首先 启动它 , 然后根据 使 用 要 求从终端 投 入 相应的命令 。 命 令是正确的 , 系统 正常运行 , 能得 出予 期结果 。 如果 命 令是错的 , 系统 则不能正常运行 。 因此保证 所 投人的命令正 确 , 是 使 用 的 首要条件 。 主要 的用 户是 冶金 物理化学方 面的 专业 人 员 , 不 能要 求 他们 都 具备良好的计算机知 识 。 即使用户精通计算机技术 , 一时疏忽 , 输错命 令也 在所难 免 。 因 而 , 执行命令前系统 对其进行检 查 , 尽 可 能保证 它的正 确性 , 这是 系统的 用 户 友好性 的重要 标志之一 。 的命令形式 命令 形式 如 下 命令关 键字 〔 , 〕 , 〔 , 〕 , · 一 , 〔 , , … … 〕 其 中 , ” … 为参 数关 键 字 , , , , , , · ” 一 为参 数 值 。 图 是 命 令的 语法 图 。 图 命令的语法图 命 令关 键 字 , , , , 公 等共二十个 。 参 数关 键字 , , , , 等共六十个 。 参 数值 可以是 整型数 , 实型 数 、 逻辑型或字符型 。 怎样检查命令 从三方面人 手检 查 用户 投入的命令 。 , 命令关键字和 命令格式 。 、 参数关键字 、 参 数格式 以及参 数值的 类型 。 、 命令与参数之 间的搭配关 系 。 其实质是 检 查 命令的 语 法结构是 否正确 。 下 面是一 条 命令 , , , 怎样检 查这 条命令呢 是命令关键字 , 、 、 是参数关键字 。 符 号 “ ” 是 规定的 命令格式 , “ 二 ” , “ 二 ” 是 规 定 的 参 数格式 。 、 、 、 的参数值 都是 实 型数
对于这样一条命令,首先检查DELTA是不是METHEDAS的命令关键字,TU、TO、 CON:NS是不是METHEDAS的参数关键字。然后检查TU、TO、CON.NS的数值是不是 实型数。进一步则检查TU、TO、CONCNS是不是DELTA命令允许使用的参数。此外, 规定的格式也列为检查项目。DELTA后,命令结束时都为符号“/”,TU、TO后为 “=”,而CON NS后为“=<”等。 ·要完成上述任务,需要编写一个简化了的解释程序。作为高级语言的解释程序,一 般包括换码,语句编辑、语法检查,命令处理,键盘运算,解释执行等功能。METHE- DAS的解释程序(它隶属于监控系统部分,参见本专辑文章《冶金热力学数据库应用系 统的系统构成》)具有换码,语法检查、解释执行等功能。检查用户命令的任务,正是 由解释程序中换码模块和语法检查模块具体完成。 换码和语法检查都已是成熟的技术。研制METHEAS时,在这一方面所做的工作是: 用FORTRAN-V语言书写的简单易行,便于移植的解释程序。目前FORTRAN-V在我 国是最普便使用的应用于科研计算的高级程序设计语言之一。许多复杂的应用程序需用 它编写。用FORTRAN-V编写解释程序能使大型的计算机应用软件在语言工具上保持 一致性。避免了用多种语言工具设计一个应用软件系统所造成的一些问题。 编写程序实现换码和语法检查的功能,要大量进行字符处理,因而选用具有字符处 理功能的语言较为合适,例如FORTRAN77。迫于北京钢铁学院M-150计算机的软件环 境所限,我们选用了FORTRAN.-V作为语宫工具。用FORTRAN-V实现换码和语法检 查的功能,必须设法解决字符变量定义、位字符的处理,字符型数据换成整型数据,字 符型数据换成实型数据等一系列问题。简言之,要用FORTRAN-W模拟FORTRAN77的 字符处理功能。这正是METHEDAS在换码和语法检查过程中努力解决的问题。 3怎样实现换码功能 METHEDAS的用户命令包括命令关键字,参数关键字,参数值等,其中命令关键字 参数关键字为字符型,而参数值有整型数,实型数,布尔型数。系统从终端读入命令时 只能把整条命令统-一作为字符型一次读入。命令的读人若采用FORTRAN77语言是很简 单的。因为它可以定义CHARACTER型变量和变量的长度。读人一条不超过150个字符 的命令程序如下: CHARA(TER◆150(SB WRITE (9,516) 516 FORMAT(12×,'*#COMMAND,PLEASE···') READ (8,400,END=10)CSB 400 FORMAT (150A1) 而FORTRAN N语言不能定义(HARA(TER型变量,不得不通过定义整型数组变 量或实型数组变量做为字符变量。在定义变量时尽可能用最少字节数变量。具体到M- 150计算机为半字长(一字长为4字节)的变量。如此可得出FORTRAN-V等价的命令 ·16
对于这样一 条命令 , 首先检查 是 不 是 的命令关键字 , 、 、 一 是不是 的参 数关键字 。 然 后检查 、 、 · 的 数值是不是 实型 数 。 进一步 则检查 、 、 州 是不是 命令允许使 用的参数 。 此 外 , 规定的 格式也 列 为检查 项 目 。 后 , 、 命令 结束 时 都 为 符号 “ ” , 、 后 为 “ ” , 而 后 为 “ 、 ” 等 。 一 要完成 上述任 务 , 需要编 写 一个简化了的解释程 序 。 作为 高级 语言的解释程 序 , 一 般包括换码 , 语句编辑 、 语 法检 查 , 命令处理 , 键盘运算 , 解释执行等功 能 。 的解释程 序 它隶属 于监控 系统部分 , 参 见本专辑文 章 《 冶金 热 力学数据库应用系 统的 系统构成》 具 有换 码 , 语法检查 、 解释执 行等功 能 。 检查 用户命令的 任务 , 正是 由解释程 序 中换 码模块和 语 法检查 模块具体 完成 。 换 码和 语法检查都 已 是 成熟的 技术 。 研制 时 , 在这一方 面 所做的工作是 用 一 语言 书写的简单易行 , 便 于移植 的解释程 序 。 目前 一 在我 国是 最普便 使 用的 应 用 于科 研计算的 高级程 序设计 语言之一 。 许 多复杂的应 用程序需 用 它编写 。 用 一 编 写解释程 序能 使大 型的计算机应 用软件在 语 言 工具上保持 一致性 。 避 免 了用 多种语 言工 具设计一个应 用软件 系统 所 造成 的一些 问题 。 编 写程 序实 现换 码和 语法检查 的功 能 , 要 大 量进行 字符处理 , 因而选 用具 有字符处 理功 能 的语 言较 为合 适 , 例 如 。 迫 于北 京钢铁 学院 一 计算机的软件环 境所 限 , 我们选 用 了 一 作为语言 工具 。 用 一 实 现换码和语法检 查 的功 能 , 必 须设法解决 字符 变量 定义 、 位字 符的处理 , 字符型数据换成 整型 数据 , 字 符 型 数据换成实型数据等一 系列 问题 。 简言之 , 要 用 一 模拟 的 字符处理功 能 。 这 正是 在换码和 语法检查 过程 中努 力解决 的 问题 。 怎样实现换码功能 的用户命 令包括 命令关 键字 , 参数关键字 , 参数值等 。 其 中 命令关 键字 , 参 数关 键 字为 字 符型 , 而 参 数值 有整型 数 , 实 型 数 , 布尔 型 数 。 系统 从终 端读 人 命令时 只能把整 条命令统一 作 为字符 型一次读 人 。 命令的读人若采用 语言是很简 单 的 。 因为它可 以定义 人 型变量和变量 的长 度 。 读 人一 条不超过 个字符 的命 令程 序如 下 〔 〔 · , , 产 , 二 , , 。 · 尸 , , 而 语言 不能 定义〔 仁 型 变量 , 不 得不 通 过定义 整 型 数组 变 量或 实 型 数组变 量做为 字符 变量 。 在 定义 变量时尽可能用 最 少 字节 数变量 。 具体到 计算机为半 字 长 一 字 长为 字 节 的 变量 。 如此 可得 出 一 等价的命令
读人程序。 INTEGER◆2CSB(150) : WRITE (9,516) 516 FORMAT(12X,'··COMMAND,PLEASE·*◆') READ (8,400,END=10)(SB 400 FORMAT (150A1) 这样处理的缺点是,内存空间有一定的浪费。比相应的FORTRAN?7程序多使用 (血-1)1字节的空间(n为计算机允许使用的最小变量字节数,1为要读入的字符数), 1不太大时,空间浪费是微不足到的。 用户命令以字符型读入后,需要把它改造成另一种比较便于处理的中间形式,这就是 换码的主要任务。经换码以后,作为“字符串”的用户命令,变成了“单词申”,并且按 照单词的类别(命令关键字,参数关健字,参数值)分别用一定的内部码表示,使之便 于进一步解释执行。 例如把字符串‘CONCNS=<.0008,000016>’,换码,以“=<”,“,”,">” 为界,把字符串分解成“单词串”,进而识别出它们的数据类型,并生成内部码。结果 是,由该字符串被分解且生成“(ONNS”,“·0008”,“·000016”个内部码。 并标识出“、ON(NS”为字符型,“·0008”和“·000016”为实型数。 METHEDAS用TXTDEC子程序完成换码任务,先将它作简单介绍。 (1)功能:把字符串依次分解成唯个宁符,按要求再拼装成“单词串”,标识出 它的数据类型,并生成内部码。 (2)输入: (SB:存放命令字符串的数组 N:命令字符串的长度 (3)输出, PAK:存放.“单词串”的数组 INT,存放整型数 REAL,存放实型数 Kind,标识数据类型的变量 Kind=1,为整型数 Kind=2,为实型数 Kind=9。为字符型 Kind=22,为出错标志 一 在换码过程中,频繁地进行字符处理,把一个指定字符从字符串中分解出米,再将 它写入另一变量中指定位置。用FORTRAN77做这种处理是轻而易举的事情。例CSB与 PAK都是字符型变量。把SB中第K个字符写入PA'K中第1位置上。 PA:K(l:1)=SB(k:k) ,17·
读人 程序 。 , , , ‘ · 一 , · , · ’ , , 〔 这样处理 的缺 点是 , 内存空 间有一定 的浪 费 。 比 相应的 程 序 多 使 用 一 字节的空 间 为计算机 允许使 用 的最小 变量 字节 数 , 为要读入 的字符 数 , ‘场 不太大 时 , 空 间浪 费是微不足 到的 。 用户命令 以字符 型读入 后 , 需 要把它改造 成 另一 种 比较便于处理 的 中间形式 , 这就是 换码 的主要任 务 。 经换码 以后 , 作为 “ 字符 串 ” 的用 户命令 , 变成 了 “ 单词串 ” , 少 按 照 单词 的类别 命令关键字 , 参数关键 字 , 参 数值 分 别 用一 定 的 内部码 表示 , 使之便 于进一 步解释执行 。 例 如把 字符 串 ‘ 二 , ’ , 换码 , 以 “ 二 , “ , ” , ” ” 为界 , 把字符 串分解成 “ 单词 串 ” , 进而识别 出它们 的 数据类 型 , 并 生成 内部码 。 结果 是 , 由该 字符 串被分解且 生成 ‘气 ” , “ · ” , “ · ” 三个 内部码 。 并标识 出 “ 、 , 为字符型 , ,’ · , 和 “ · ” 为实 型 数 。 用 子程 序完成换码任务 , 先将它作简 单介绍 。 功能 把字符 串依次分 解成 单个 字符 , 按要求再拼装 成 “ 单词 串 ” , 标 识 出 它的 数据类 型 , 并生成 内部 码 。 输入 。 存 放命令字符 串的 数红 命令 字符 串的长度 输 出 存 放 “ 单词 串 ” 的 数组 存放整型 数 存放实 型 数 标 识 数据类 型的 变量 , 为整型 数 “ , 为实 型 数 “ 。 为 字符 型 二 , 为 出错 标志 在换码 过程 中 , 频 繁地进行 字符处理 , 把一 个指定字符从 字符 串 中分解 出来 , 再 将 它写人 另一 变量 中指定位 置 。 用 做 这种处理是 轻而 易 举 的事情 。 例 与 都是 字符型 变量 。 把 中第 个字符写人 ’ 中第 位 置 上 。
用F(ORTRAN-Y完成这个任务,则必须模棋FORTRAN7?的字位处理功能。 INTEGER SB·2(150),PAK·4(33),END,(OUNT : K=1 I=1 片 DO 90 J1,OUNT G0T0(10,20,30,40),I 10 EN ODE (4,15,PACK(K))SB (END) 15 FORMAT (A1) I=2 G0T01000 20ENCODE (4,25,PACK(K))SB (END) 25 FORMAT (2A1) I=3 G0T01000 30 ENCODE (4,35,PAK(K))PA"K (K),SB (END) 35 FORMAT (A2,A1) I=4 G0T01000 40 EN:ODE (4,45,PAK(K))PA'K(K),(SB (END) 45 FORMAT (A3,A1) I=1 K=K+1 1000 END=END+1 90 CONTILNUE 该程序完成把SB中第END字符写入PAK的第K个数组元素中的第I字节位置上。 有了字位处理功能,把“单词串”从命令字符串中分离出来就不困难了。“单词串”仍 是字符型数据,还需进一步处理,分析并标识出每个“单词串”所含信息的数据类型, 并将其换成相应类型的数据。 INTEGER+2 NO,N9,SYB,(SB (8) DATA NO/2H0/,N9/2H9/,SYB/2H./ D010I=1,8 IF (CSB(I).LT.NO,OR,(SB (I).GT.N9. ·18·
用 ’ 完成 这 个任 务 , 贝小必须 模拟 的 字位处 理功 能 。 · , · , , 心 ,月几盈几 ‘︸夕口 八 八勺 任 八 二 , ‘ 一 , , , , , , 七 飞 二 、 , , 二 , , ‘ 、 一 ’ , ‘ , 二 几 , , 一 , 〔 , “ 〔 该 程 序完成把 中第 字符写 入 的第 个 数组元素 中的第 字节位 置 。 有 了字位处理功 能 , 把 “ 单词 串” 从 命令字符 串中分 离 出来就 不 困难 了 。 “ 单词 串 ” 仍 是 字符型 数据 , 还需进一 步处理 , 分析并标识 出侮 个 “ 单词 串” 所 含信 息的 数据 类型 , 并将其换成 相应类 型 的 数据 。 一 , , , , , , 〔 , 。