M 编程语言也称为 MUMPS。 代表 *麻萨诸塞州综合医院实用多程序设计系统*。 阅读我之前的文章,其中介绍了用于操作和控制大型数据库的多用户、强命令式语言。 然后按照本教程开始使用它。
目前有两种主要的软件环境可用于 M 编程
您可以下载 Intersystems Caché 的评估版本,但由于 FIS GT.M 是免费和开源的,我们将在此处使用它作为本教程的参考系统。
M 语言有一套明确的标准
“每一个工具都是一种武器——如果你正确地握住它。”
- Ani DiFranco
我们将在本教程的练习中坚持 M 标准,因此源代码示例应该在 GT.M 和 Caché 环境中都能工作。
现在让我们专注于安装 GT.M 并使其在您最喜欢的 Linux 安装中工作。
步骤 1:下载并安装 GT.M
下载并安装 GT.M
$ wget http://download.sourceforge.net/project/fis-gtm/GT.M%20Installer/v0.11/gtminstall
$ chmod +x gtminstall
$ sudo ./gtminstall --utf8 default
正在进行为 GT.M 创建 Debian 软件包的工作 (debian-med fis-gtm),它们应该很快可用。 同时,以上说明是在 Linux 环境中安装 GT.M 的最直接方法。 请注意,此安装将使用简单的默认设置。 这样的环境非常适合试用 GT.M 和运行本教程的练习,但可能不足以满足生产系统的需求。 将此安装视为学习 M 的安全沙箱。
默认情况下,安装的可执行文件将转到以下目录之一(具体取决于您是 32 位还是 64 位架构)
/usr/lib/fis-gtm/V5.5-000_x86/
/usr/lib/fis-gtm/V5.5-000_x86_64/
现在,我们通过执行 gtmprofile 文件来设置 GT.M 的环境变量。
从您的 shell 中,执行以下操作
$ source /usr/lib/fis-gtm/V5.5-000_x86/gtmprofile
您将看到类似于以下的输出
%GDE-I-GDUSEDEFS, Using defaults for Global Directory
/home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.gld
GDE>
%GDE-I-EXECOM, Executing command file /usr/lib/fis-gtm/V5.5-000_x86_64/gdedefaults
GDE>
%GDE-I-VERIFY, Verification OK
%GDE-I-GDCREATE, Creating Global Directory file
/home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.gld
Created file /home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.dat
%GTM-I-JNLCREATE, Journal file /home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.mjl created for region DEFAULT with BEFORE_IMAGES
%GTM-I-JNLSTATE, Journaling state for region DEFAULT is now ON
从长远来看,最好从您喜欢的 shell 的初始化文件中执行此操作。 例如,在 bash 中,将以下行添加到您的 $HOME/.bashrc 文件中
# Set up GT.M environment.
source /usr/lib/fis-gtm/V5.5-000_x86/gtmprofile
这会将一组与 GT.M 相关的变量添加到您的环境中,并将 GT.M 可执行文件添加到您的 PATH 中。 如果您好奇,您可能想通过在 bash shell 的提示符中执行以下操作来查看这些更改
$ env | grep gtm
现在,您可以通过简单地在 shell 提示符下键入 gtm 来首次运行 GT.M。
$ gtm
这应该会打开 GT.M 提示符
GTM>
此时,您可以键入几个验证命令。 例如
GTM>write $zversion
GT.M V5.5-000 Linux x86
GTM>halt
“内在特殊变量”$zversion 返回已安装的 M 环境的版本。halt 命令停止 gtm 解释器并将控制权返回给操作系统,因此您将返回到 shell 的提示符。
初始化过程会在您的主目录下创建一个本地安装
$HOME/.fis-gtm
带有子目录
$HOME/.fis-gtm/r
$HOME/.fis-gtm/V5.5-000_x86 (if in a 32bits architecture)
$HOME/.fis-gtm/V5.5-000_x86_64 (if in a 64bits architecture)
当我们编写代码示例时,这些是代码将转到的目录。
这里需要注意的是,M/MUMPS 是编程语言和数据库的组合(正如我们之前帖子的第一批评论者之一指出的那样)。 在我们提及语言与提及数据库时,我们将尝试更加明确。
步骤 2:测试安装
我们现在可以编写一个“hello world”程序。
首先,在 shell 的“EDITOR”环境变量中设置您喜欢的编辑器的路径。 例如在 bash 中
EDITOR=/usr/bin/emacs
或
EDITOR=/usr/bin/gvim
然后从同一个 shell 中,调用 gtm,并在提示符下,请求编辑“Hello.m”文件
GTM>ZEDIT “Hello.m”
这应该会打开您刚刚在 EDITOR 环境变量中设置的编辑器程序,现在您可以在其中键入以下 M 代码
MYLABEL ; This is a comment
WRITE !,”Hello World”
QUIT
请注意,后两行在第一列中留一个空格,而第一行(包含标签)从第一列开始。
然后保存文件并退出编辑器。 返回 gtm 提示符后,键入
GTM>ZLINK “Hello”
并使用 DO 命令执行该程序
GTM>DO MYLABEL^Hello
Hello World
现在让我们通过键入再次编辑程序
GTM>ZEDIT “Hello.m”
并在编辑器中,让我们插入另一行
MYLABEL ; This is a comment
WRITE !,”Hello World”
WRITE !,$HOROLOG
QUIT
然后保存文件并使用命令再次链接它
GTM>ZLINK “Hello”
每次修改源代码时都调用 ZLINK 非常重要,因为它会重新编译它并将当前环境中的先前代码替换掉。 现在你可以用以下命令执行新版本
GTM>DO MYLABEL^Hello
Hello World
62520,56765
$HOROLOG 特殊变量返回日期和时间,作为自 1840 年 12 月 31 日以来的天数和自当天午夜以来的秒数的字符串值。(阅读为什么选择该日期。)
步骤 3:查看内部结构
您可能会发现查看源代码和已编译版本的例程的去向很有趣。 查看目录
$HOME/.fis-gtm/V5.5-000_x86_64/r/
$HOME/.fis-gtm/V5.5-000_x86_64/o/
您将在其中找到文件
$HOME/.fis-gtm/V5.5-000_x86_64/r/Hello.m
$HOME/.fis-gtm/V5.5-000_x86_64/o/Hello.o
致谢
非常感谢 K.S. Bhaskar(Fidelity National Information Services, Inc. 的开发总监)对 fis-gtm 的指导以及提供本教程中呈现的大部分材料。 当然,上面可能出现的任何错误都由我独自承担。
参考资料
M 语言的完整参考资料可在以下网址获得
http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/index.html
MUMPS 袖珍指南可在以下网址获得
http://www.vistaexpertise.net/docs/pocket_guide.pdf
1 条评论