OS_390

*os_390.txt*    For Vim version 7.1.  最近更新: 2006年2月


		  VIM 参考手册	  by Ralf Schandl
				译者: Willis
				http://vimcdoc.sf.net

					*zOS* *z/OS* *OS390* *os390* *MVS*
本文包含了 VIM 的 z/OS UNIX 版本的特点。

1. z/OS UNIX 上的开放软件		|zOS-open-source|
2. 期待你的反馈				|zOS-feedback|
3. 在 z/OS UNIX	上构造 VIM		|zOS-building|
4. 依赖于 ASCII/EBCDIC 编码的脚本	|zOS-has-ebcdic|
5. XTerm 的问题				|zOS-xterm|
6. Motif 的问题				|zOS-Motif|
7  漏洞					|zOS-Bugs|
8. 已知弱点				|zOS-weaknesses|
9. 改动					|zOS-changes|

声明: 
我们是 IBM 员工,但是 IBM 不承担此移植版本的任何责任。这是我们的私人兴趣,它的
提供只是希望能对他人有用。

请 注意 本软件并_没有_经过任何正式的 IBM 的测试和而其出版则只按其 "现状 (AS
IS)"。因为它不是任何 IBM 产品的正式部分,请不要联系 IBM 要求为此软件提供支持。
IBM 不 对 此 提 供 支 持、保 证 而 且 绝 对 无 关。

贡献者: 
本 z/OS UNIX 的移植是由 Ralf Schandl 为了下面提到的红皮书完成的。

提供修改、报告漏洞、或者两者都有者:

	David Moore
	Anthony Giorgio <agiorgio@fastmail.fm>
	还有其他

本文档是 Ralf Schandl 撰写,并经 Anthony Giorgio 修改。


1. z/OS UNIX 上的开放软件		*OS390-open-source* *zOS-open-source*

如果你对其他 z/OS UNIX 上的开放软件感兴趣,看看这个红皮书:

    Mike MacIsaac et al
    "Open Source Software for z/OS and OS/390 UNIX"
    IBM Form Number: SG24-5944-01
    ISBN: 0738424633

你可以在以下网址找到更多信息、定购纸质书、或者下载红皮书的 PDF 版本:

	    http://www.redbooks.ibm.com


2. 期待你的反馈				*OS390-feedback* *zOS-feedback*

Vim 应该能一个标准配置的 IBM z/OS UNIX 大型机上直接编译、连接和运行。我个人在
z/OS VIR2 和 VIR3 机器上运行过,毫无问题。

为了把 Vim 移植到 z/OS UNIX 上,源代码上已经作了很多修改。就像许多 UNIX 程序一
样,Vim 对 ASCII 的依赖很重。我可能会漏掉其中的一两个,新功能和漏洞修正里也可
能会增加新的依赖点。许多程序员根本没有意识到 ASCII/EBCDIC 可能引起的转换问题。
如果你碰到了这方面的问题,请通过上面的 email 地址和我们联系。

一个可能出现了 ASCII/EBCDIC 转换问题的标志是屏幕上出现了 "不可显示的" 的乱字
符。比如,在某些意义上,Vim 的错误响铃就有问题。任何时候 Vim 试图响铃的时候就
会输出一个 ASCII 字符 0x07。这对大多数的终端而言都没问题,但在 EBCDIC 的终端就
不行。正确的方法是为 EBCDIC 系统定义一个不同的响铃字符。

要记住,只有大家知道某个问题,才有可能对其修正。不要期待别人去报告!参见
|bug-reports| 一节。


3. 在 z/OS UNIX 上构造 VIM		*OS390-building* *zOS-building*

先关于调试代码说一句: 

正常的运行 configure (配置脚本) 会在编译选项里加上 '-g' 标志位,从而在可执行程
序里增加了调试信息。正常情况下,这些信息在安装的时候会用 strip 命令去掉。在
z/OS UNIX 里,你不能从可执行程序里去掉这些。z/OS UNIX 里有这个 strip 命令,而
且它也会被执行,但是它不干任何事情,只相当于 'touch' 命令。这个行为是由编译器
产生目标代码时存贮调试符号的位置决定的。

如果你想构造不带调试代码的 Vim,在调用 configure 脚本前,汇出 (export) 环境变
量 CFLAGS 为空串。

	export CFLAGS=""


没有 X11 的构造方法: 

注意: 用 cc 来构造 Vim。c89 编译器的语法检查更严格,从而无法顺利地编译 Vim。

要构造没有 X11 支持的 VIM,直接编译和构造之。不要忘了在 configure 和 make 之
前,汇出 _CC_CCMODE=1。

    $ export _CC_CCMODE=1
    $./configure --with-features=big --without-x --enable-gui=no
    $ make
    $ make test

	测试要点 注意:
	如果你没安装 gzip, 第 11 项测试会失败。
	第 42 项测试也会失败,因为 z/OS UNIX 还不支持多字节功能。(David
	Moore: "_还_不能工作!:-) 我会看看能做什么。")


    $ make install


带 X11 的构造方法: 

要构造带 X11 支持的 Vim,有两个方法。你可以静态的和 X11 库连接,或者和 X11 DLL
动态绑定。静态连接的版本会产生一个巨大的可执行文件 (~13MB),而动态连接的版本则
小得多 (~4.5MB)。

如果你用 Motif 的话,这时你应该做的:

  a) 静态连接
	$ configure --with-features=big --enable-gui=motif
	$ make

     VIM 现在和 X11 库静态连接了。

  b) 动态连接:
     用上述静态连接的方法产生 VIM。然后修改 'auto/link.sed' 的内容,附加上:
	s%-lXm  *%/usr/lib/Xm.x %g
	s%-lX11  *%/usr/lib/X11.x %g
	s%-lSM  *%/usr/lib/SM.x %g
	s%-lICE  *%/usr/lib/ICE.x %g

     然后做:
	$ rm vim
	$ make

     现在 Vim 就和 X11 DLL 动态连接了。

参见 Makefile 和 link.sh 文件,了解 link.sed 是如何用的。


4. 依赖于 ASCII/EBCDIC 的脚本		*OS390-has-ebcdic* *zOS-has-ebcdic*

为了内部脚本语言的编写方便,增加了 "ebcdic" 特性。所以你可以用以下方式修正依赖
于ASCII 的脚本:

    if has("ebcdic")
	let space = 64
    else
	let space = 32
    endif


5. XTerm 问题				*OS390-xterm* *zOS-xterm*

注意: 6.1b 版本解决了这个问题。 

我在 z/OS UNIX 上的 XTerm 里发现一个问题。termlib 数据库里的向左移动光标的终端
码不正确。也许没错,但是在 VIM 的语法高亮和命令行的光标移动命令下,它不工作。

如果你输入文本的时候高亮显示不正确,但是按 <C-L> 重新刷新以后又恢复;或者你不
能在命令行里向左移动光标的话,试试在你的 .vimrc 里加上
	:set t_le=^H

注意: '^H' 是一个字符, 可以通过按 <C-V><C-H> 得到。


6. Motif 问题				*OS390-Motif* *zOS-Motif*

看起来,在移植 Motif 库到 z/OS 的时候,忘记把下拉菜单的快捷键从 EBCDIC 翻译成
ASCII 了。即使在我手动修改菜单以后,快捷键也只能打开菜单 (比如 <Alt-F> 打开
文件菜单),但是不能打开菜单项 (比如 <Alt-F>O 打开文件浏览器)。

现在还没有这个问题的解决方法。


7. 漏洞					*OS390-bugs* *zOS-Bugs*

- 在可视块模式,如果选择了大量的文本,Vim 一定会挂起。这可能是由一个内存错误引
  起的。 注意 终端和 GUI 版本都存在这个问题。


8. 已知弱点				*OS390-weaknesses* *zOS-weaknesses*

- tag 文件不能进行二进制查找。
  /bin/sort 程序缺省按照 ASCII 值排序。通常,ctags 调用这个程序来为标签 (tag)
  排序。也许有一个 ctags 版本能够做正确的事情,不过我们不能肯定。看起来,这是
  个永久的限制。

- 还不支持多字节编码 (utf-8),编译时该选项被关闭。 (|multibyte|)

- 在我们的大型机上测试的版本上,cscope 接口 (|cscope|) 不能工作。我们有一个
  15.0b12 版本的。在用 "cscope add" 命令的时候,它使得 Vim 挂起。我猜这是因为
  cscope 数据库的二进制格式和 Vim 期待的不符所致。我试图把最新的 cscope (15.3)
  移植到 z/OS 上,看来成效不大。如果有人有兴趣尝试并有进展,请给我个消息。

- 没有 glib/gtk 支持。我不能成功在 z/OS UNIX 上编译 glib。这意味着你没法用漂亮
  的 gtk 工具栏了。

还未测试:
    - Perl 接口			(|perl|)
    - 韩语 (Hangul) 输入	(|hangul|)
    - 加密支持			(|encryption|)
    - 语言映射			(|'langmap'|)
    - Python 支持		(|Python|)
    - 从右到左模式		(|'rightleft'|)
    - SNiFF+ 接口		(|sniff|)
    - TCL 接口			(|tcl|)
    ...

如果你尝试过这些特性而且成功了,告诉我们!


9. 改动					*OS390-changes*	*zOS-changes*

这里提供 Vim 的 z/OS 已知版本所作改动的小小的一个 (英文) 参考。它还没有完整地
包括代码库中所作的所有改动。

6.1b (beta):
  Changed KS_LE in term.c to be "\b" instead of "\010"  This fixed the
  screen corruption problems in gVim reported by Anthony Giorgio.

  Anthony Giorgio updated this document:
	- Changed OS/390 to z/OS where appropriate. IBM decided to rename
		all of its servers and operating systems.  z/OS and OS/390
		are the same product, but the version numbering system was
		reset for the name change. (e.g. OS/390 V2R11 == z/OS V1R1)
	- Added information about second edition of the Open Source Redbook.
	- Moved Redbook information to a separate section.
	- Various tweaks and changes.
	- Updated testing section.

6.0au:
  Changed configure.in
  Changed documentation.
  Anthony Giorgio fixed the errorbell.

  David Moore found some problems, which were fixed by Bram and/or David for
  6.0au.

6.0q (alpha):
  Minor changes for nrformats=alpha (see |'nrformats'|).
  Problem with hard-coded keycode for the English pound sign. Added a define in
  ascii.h
  Disabled multibyte for EBCDIC in feature.h

6.0f (alpha):
  First compile of Vim 6 on z/OS UNIX. Some minor changes were needed.

  Finally found the reason why make from the top level didn't work (I must have
  been blind before!). The Makefile contained a list of targets in one target
  line. On all other UNIX's the macro $@ evaluates to the first target in this
  list, only on z/OS UNIX it evaluates to the last one :-(.

5.6-390d:
  Cleaned up some hacks.

5.6-390c:
  I grepped through the source and examined every spot with a character
  involved in a operation (+-). I hope I now found all EBCDIC/ASCII
  stuff, but ....

  Fixed:
    - fixed warning message in do_fixdel()
    - fixed translation from Ctrl-Char to symbolic name (like ^h to CTRL-H)
	    for :help
    - fixed yank/delete/... into register
    - fixed :register command
    - fixed viminfo register storing
    - fixed quick-access table in findoptions()
    - fixed 'g^H' select mode
    - fixed tgetstr() 'get terminal capability string', ESC and
	    Ctrl chars where wrong. (Not used on OS/390 UNIX)


  ctags:
    - added trigraphs support (used in prolog of system header files)
	    (get.c)
    - fixed sorting order with LC_COLLATE=S390 to force EBCDIC sorting.
	    (sort.c)

5.6-390b:
  Changed:
    - configure.in:
	- added test for OS/390 UNIX
	- added special compiler and linker options if building with X11
    - configure:
	- after created via autoconf hand-edited it to make the test for
	  ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX
	  needs -lX11 for this.
    - Makefile
	- Don't include the lib directories ('-L...') into the variable
	  ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX
	  compliant compiler must not accept objects/libraries and options
	  mixed. Now we can call the linker like this:

	    $(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS)

  Fixed:
    - Double quote couldn't be entered
      Missed ASCII dependencies while setting up terminal
      In ASCII 127 is the delete char, in EBCDIC codepage 1047 the value 127
      is the double quote.
    - fixed ':fixdel'

5.6-390a:
  first alpha release for OS/390 UNIX.

  Addition:
    - For the internal script language I added the feature "ebcdic".
      This can be queried with the has()-function of the internal
      script language.


 vim:tw=78:fo=tcq2:ts=8:ft=help:norl:

Generated by vim2html on 2008年 03月 27日 星期四 17:04:45 CST