Mainframe 常用的TSO命令

2012-03-13  杨森 

TSO命令由TSO用户在TSO环境下发出(如在主菜单下选择P.6可进入TSO命令处理工具)。用于启动、停止软件系统,检查、设置系统软硬件设备的运行情况,运行系统作业等等。由于受篇幅所限,本附录只能列出主要的TSO命令和常用的使用方法,详细情况可参考S/390随机资料《OS/390 TSO/E Commands Reference》。
1. ALLOCATE命令
使用ALLOCATE命令可为运行程序动态分配所需的VSAM、NON-VSAM数据集,也可以动态分配HFS文件。该命令可简写为ALLOC。例如使用命令: ALLOC DATASET(‘USER01.INPUT.DATA’) FILE(FILE01) OLD 可定位一个已存在的编目数据集;使用命令: ALLOC DATASET(‘USER01.MY.DATA’) DDNAME(SYSLIB) VOLUME(SYSRS2) SHR 可分配一个已存在但未编目的数据集,该数据集位于磁盘卷SYSRS2上;使用命令: ALLOC DATASET(‘USER01.NEW.DATA’) FILE(DD1) NEWSPACE(2,0) TRACKS + LIKE(‘USER01.OLD.DATA’) 可分配一个新的数据集USER01.NEW.DATA,创建该数据集时,定义的属性除空间分配参数外,其它属性和已存在的数据集USER01.OLD.DATA相同;使用命令: ALLOC DATASET(‘USER01.FILE1’,’USER01,FILE2’,’USER01.FILE3’) + FILE(OUTDD) SHR 可一次分配多个数据集。
2. ALTLIB命令
ALTLIB命令可指定执行程序库顺序,以便系统搜索REXX或CLIST程序。例如使用命令: ALTLIB DISPLAY 可显示当前系统搜索REXX或CLIST程序库的顺序;使用命令: ALTLIB ACTIVATE USER(CLIST) DATASET(‘MY.CLIST’) 可定义用户级CLIST程序库并将其添加到搜索库中去。
3. ATTRIB命令
使用ATTRIB命令可为动态分配非VSAM类数据集定义数据集属性表。定义该列表后,可在ALLOCATE命令中使用该属性表分配数据集。此外,可通过命令LISTALC STATUS显示已经定义的属性表情况,可通过FREE ATTRLIST命令删除该定义。该命令可简写为ATTR。例如使用命令: ATTR MYATTR DSORG(PS) LRECL(80) BLKSIZE(3200) RECFM(B,F) 定义了一个名为MYATTR的数据集属性表,以后可以在ALLOC命令中引用该属性表: ALLOC DATASET(‘MY.DATASET’) FILE(DD1) NEW USING(MYATTR) 这样可分配一个新的数据集MY.DATASET,其属性通过MYATTR列表定义。
4. CALL命令
CALL命令用于调用执行一个可执行程序或加载模块。一般可使用单引号标记程序的执行参数,如果要执行的是一个PL/1程序,还需要通过‘/’标记要传递给程序的参数。程序终止后,系统将显示程序的返回码,非0的返回码说明程序执行有误,可根据返回码值进行错误分析。例如使用命令: CALL CC ‘123’ 将执行username.CC.LOAD下的TEMPNAME程序,并将‘123’作为运行参数,其中username为TSO用户名(下同);使用命令: CALL MYLIB(CC) ‘123’ 将执行username.MYLIB.LOAD下的CC程序,并将‘123’作为运行参数;使用命令: CALL ‘MY.PCP.LOAD(MOD1)’ ‘/123’ 可执行MY.PCP.LOAD下的MOD1程序,它是一个PL/1程序,这里123为其执行参数;
5. CANCEL命令
CANCEL命令用来终止已经提交的批处理作业的运行。例如使用命令: CANCEL JOB0001 可终止名为JOB0001的作业的运行,成功地终止该作业后,系统会出现提示‘READY’,并在系统控制台上显示该作业被终止的信息。
6. DELETE命令
DELETE命令可用来删除数据集或分区数据集的成员。该命令可简写为DEL。例如使用命令: DEL MY.DATA/12345 NONVSAM 将删除名为username.MY.DATA的非VSAM数据集,该数据集被口令所保护,口令字为‘12345’;使用命令: DEL TEMP.* 将删除所有以username.TEMP开头的数据集。注意小心使用DELETE命令,如果不用引号标记数据集名,系统会将用户名作为第一段添加到数据集名前,可能错误地删除其它数据集。 7. EDIT命令
EDIT命令用来向系统输入数据。该命令提供一个简单的行编辑环境,通过丰富的子命令可以创建、修改、删除顺序数据集或分区数据集,也可以直接提交JCL作业。该命令可简写为E。例如使用命令: E MY.DATA 可进入userid.MY.DATA的行编辑状态。进入该状态后可输入编辑子命令,或直接按回车键开始新行的输入。由于新的OS/390系统带有功能强大的ISPF/PDF软件,提供了便捷的全屏编辑工具,因此该命令一般较为少用。这里对其子命令只做简单描述。编辑命令常用的子命令有: ALLOCATE:动态分配数据集; ATTRIB:建立非VSAM数据集的属性表,上述两条子命令功能与TSO命令ALLOC和ATTR相同,一般在提交作业或执行程序时根据程序需要使用; BOTTOM:当前编辑位置移动到数据集最后一行; CHANGE:查找并替换数据集中的字符串; CKPT:保护数据集的修改操作; COPY:拷贝数据集中的行记录; DELETE:删除行记录; DOWN:当前编辑位置向后移动一行; END:结束行编辑状态,返回TSO环境; EXEC:执行一个CLIST或REXX程序。该子命令与TSO命令EXEC功能相同; FIND:查找字符串; FREE:释放动态分配的数据集; HELP:获得子命令的联机帮助信息; INPUT:进入输入状态,无任何子命令时按回车键可直接进入输入状态,新行不输入任何字符按回车键可返回子命令接受状态; INSERT:插入一行记录; LIST:显示数据集内容; MOVE:移动行记录; PROFILE:设置用户前缀名; RENUM:为记录行编号; RUN:编译并执行程序; SAVE:保存数据集; SCAN:对数据集内容进行语法检查; SEND:向其他用户发送消息; SUBMIT:提交作业; TABSET:设置制表(Tab)键功能; TOP:当前编辑位置移动到数据集第一行; UNNUM:清除记录行编号; UP:当前编辑位置向前移动一行; VERIFY:始终显示当前行内容。
8. END命令
END命令用来标记CLIST程序的结束。CLIST程序中遇到该命令后,将结束执行。注意如果CLIST程序使用了CONTROL MAIN选项,应该使用EXIT命令来结束程序的执行。
9. EXEC命令
EXEC命令用来执行一个CLIST或REXX程序。对于存放在系统过程库中的程序,可直接输入程序名(即过程库数据集中的成员名)执行。使用EXEC命令可以执行非过程库中的CLIST或REXX程序,也可通过该命令减少搜索执行库的时间。该命令也可简写为EX。例如使用命令: EX MYTOOL(TOOL1) EXEC 将执行username.MYTOOL.EXEC下的TOOL1程序。参数EXEC说明该程序是一个REXX程序;使用命令: EX MYTOOL(TOOL2) CLIST 将执行username.MYTOOL.CLIST下的TOOL2程序,参数CLIST说明该程序是一个CLIST程序;使用命令: EX ‘USER01.PROCLIB(PROC1)’ 将执行USER01.PROCLIB下的PROC1程序,如果USER01.PROCLIB被定义为系统过程库,则可直接输入PROC1执行该程序。
10. EXECUTIL命令
EXECUTIL是一个REXX命令,可用来改变TSO地址空间属性以控制EXEC命令的执行,包括停止EXEC命令,对EXEC命令进行跟踪,改变EXEC执行库的状态等等。除了在TSO命令行下执行外,该命令可再TSO READY模式下执行。例如使用命令: EXECUTIL SEARCHDD(NO) 表示搜索执行程序时不搜索SYSEXEC指定的EXEC程序库,而只搜索SYSPROC指定的CLIST程序库;使用命令: EXECUTIL TS 表示开始跟踪EXEC的执行,使用EXECUTIL TE可结束跟踪操作。在TSO命令行下,跟踪操作将对所有EXEC进行;在TSO READY模式下,该操作只对下一条EXEC有效,并在其结束后自动停止跟踪。
11. FREE命令
FREE命令用来释放程序不再需要的数据集,或删除属性表的定义。被释放的数据集包括TSO登录时分配的数据集,通过ALLOCATE命令分配的数据集和执行系统命令时自动分配的数据集。由于用户一次能分配的数据集数目有限,并且前两类数据集无法自动释放(后一类数据集在命令意外终止时也不能自动释放),因此有必要手工释放这些数据集。FREE命令还可以用来改变SYSOUT数据集的输出队列类。例如使用命令: FREE DATASET(‘USER01.TEMP.DATA’) 可释放数据集USER01.TEMP.DATA;使用命令: FREE ATTRLIST(MYATTR) 可用来删除属性表MYATTR的定义;使用命令: FREE ALL 可释放所有动态分配的数据集和定义的属性表。
12. HELP命令
使用HELP命令可以获得TSO命令(不包括CLIST命令)的详细帮助信息,包括各命令语法、参数和操作符等。该命令只能在TSO READY模式下使用,可简写为H。例如使用命令: H ALLOCATE FUNCTION SYNTAX 可得到ALLOCATE命令的功能说明和语法描述;使用命令: H RENUM POSITIONAL(3) 可得到RENUM命令中第三个位置参数的详细说明;使用命令: H LINK OPERANDS(XREF,OVLY) 可得到LINK命令中的操作符XREF,OVLY的详细说明。此外,不带任何参数使用HELP命令可得到所有TSO命令的列表。
13. LINK命令
LINK命令用来调用打包联接服务程序。该服务程序将编译程序输出的目标代码转换为可执行的程序代码或加载模块代码。在转换过程中,可以为联接程序指定所需的参数,不过大多数情况下可使用缺省的定义。此外,如果要生成的程序结构简单,不需要和其它程序进行相互控制,或是生成结果不需要加入系统程序库中时,可考虑使用LOADGO命令代替LINK命令。例如使用命令: LINK (LINKA,LINKB) LOAD(LOADA) 可将两个已经编译的目标模块useid.LINKA.OBJ和userid.LINKB.OBJ连接为一个可执行模块userid.LOADA.LOAD。
14. LISTALC命令
LISTALC命令可列出当前已经分配的数据集以及已经定义的属性表;如果显示的数据集名前带有星号,则表示数据集还未被程序使用。该命令可简写为LISTA。例如使用命令: LISTA MEMBERS HISTORY STATUS SYSNAMES 可显示所有非配给用户的数据集,包括临时数据集等。显示时给出分区数据集成员、数据集的属性、当前状态等详细信息。
15. LISTBC命令
LISTBC命令用来显示用户消息和邮件等信息,包括操作员向所有用户发送的广播。这些消息和邮件信息缺省条件下一般保存在数据集SYS1.BRODCAST数据集中。邮件信息也可以指定保存在用户日志文件中,处在RACF的保护下。该命令可简写为LISTB。例如使用命令: LISTB 可查阅所有消息和邮件信息;使用命令: LISTB NOMAIL 可专门查阅所有广播邮件信息。
16. LISTCAT命令
LISTCAT命令用来显示目录信息。通过该命令,用户可以查阅系统主目录和用户目录内容(如果有足够的权限),从而了解数据集的编目状况,不带任何参数使用此命令将只显示用户名开头的目录和数据集。该命令可简写为LISTC。例如使用命令: LISTC CATALOG(‘HZUCAT.MCAT1’) UCAT ALIAS 可显示目录HZUCAT.MCAT下所有用户目录和别名定义信息。
17. LISTDS命令
LISTDS命令用来显示数据集的属性。对于VSAM和非VSAM类型的数据集,该命令显示内容有所不同。对非VSAM类型的数据集,该命令可显示数据集所在的磁盘卷号、记录长度、记录块大小、记录格式、组织形式以及安全方面的属性等等信息。例如使用命令: LISTDS ‘USER01.JCL.CNTL’ 可显示数据集USER01.JCL.CNTL的各种属性信息。
18. LOADGO命令
LOADGO命令可将编译成功的程序载入虚拟存储空间执行。该命令可以载入编译以后的目标模块,也可以载入连接以后的可执行模块。对于单一的可执行模块,用CALL命令代替本命令更有效。实际上,LOADGO命令的执行分为两步,首先连接目标模块,然后执行连接结果,但并不生成执行模块。该命令可简写为LOAD。例如使用命令: LOAD MYOBJ LIB(‘SYS1.LINKLIB’) NORES SIZE(44K) PRINT(*) 可连接并执行userid.MYOBJ.OBJ,执行过程中可能会使用SYS1.LINKLIB作为连接库
19. LOGOFF命令
LOGOFF命令用来结束一个终端会话,即退出TSO环境。系统将自动释放所有分配给用户的数据集。如果需要用其它用户登录系统,可直接使用LOGON命令而不必注销当前用户,系统将自动结束前一个终端会话。该命令可带参数HOLD使用,表示用户注销后终端保持与系统的连接状态。
20. LOGON命令
LOGON命令用来创建一个终端对话,即登录TSO环境。登录TSO时必须提供用户标识名、口令字、登录过程名和登录帐号等信息。例如使用命令: LOGON USER01/LEMEPASS ACCT(ACCNT1) PROC(IKJACCNT) 将试图用USER01登录,口令字为LEMEPASS,登录过程名为IKJACCNT,账号为ACCNT1。
21. OUTDES命令
OUTDES命令用来创建或重定义动态输出描述符。输出描述符定义了可供JCL作业中SYSOUT语句使用的输出属性,也可供ALLOCATE和PRINTDS命令作为输出定义参数使用。输出属性包括字符集、标题、份数、优先级等等。例如使用命令: OUTDES MULTCOPY COPIES(3) BURST CLASS(A) NEW 可定义一个名为MULTCOPY的输出描述符,该描述符定义的输出属性是分页打印3份拷贝,输出类别为A类。定义该描述符后,可在ALLOCATE命令中使用,如: ALLOC FILE(SYSPRINT) NEW OUTDES(MULTCOPY) 将定义一个名为SYSPRINT输出文件。输出属性通过描述符MULTCOPY定义。
22. OUTPUT命令
OUTPUT命令用来控制作业的输出。如删除作业的输出结果、改变作业输出类别或将输出转存到指定的数据集等等。OUTPUT命令是一个后台控制命令,一般和SUBMIT、STATUS、CANCEL等命令结合使用,并对所有以用户名为前缀的作业有效。该命令可简写为OUT。例如使用命令: OUT USER01A CLASS(A) DELETE 将删除作业名为USER01A产生的类别为A类的输出结果;使用命令: OUT USER01B CLASS(X) PRINT(*) NEXT PAUSE 该命令将在屏幕上显示名为USER01B的作业输出类别为X类的输出结果。每一个输出数据集显示结束时暂停。
23. PRINTDS命令
PRINTDS命令可按指定的格式打印顺序数据集或分区数据集成员。数据集记录长度不能操过32K。该命令可简写为PR。例如使用命令: PR DATASET(‘MY.DATA’) FOLD(72) LINES(1:100) OUTDES(MULTCOPY) 可打印数据集MY.DATA的前100行内容,对超过72列的行,超过部分换行打印。打印输出属性由描述符MULTCOPY来定义。 24. PROFILE命令
PROFILE命令用来设置用户终端环境。该命令和编辑子命令PROFILE的使用方法相同,用来定义行或字符删除标识符、设置终端的信息提示格式、语言环境等等终端显示属性。该命令可简写为PROF。例如使用命令: PROF CHAR(!) LINE(&) NOINTERCOM PLANGUAGE(FRA) 可定义字符!为字符删除标识符,字符&为行删除标识符,法语为主语言,并且不接受其他用户发来的消息(接受消息使用INTERCOM参数)。定义删除标识符后,用户在行删除标识符前输入的所有该行字符将无效,用户在字符删除标识符前输入的一个字符将无效。例如输入: MY COMMAND&HELPP! PROF 则有效的输入字符为HELP PROF。
25. PROTECT命令
PROTECT命令可用来保护非VSAM类的数据集。对VSAM类的数据集可通过RACF命令ALTER和DEFINE来保护。PROTECT命令可为数据集增加保护口令,定义访问类别。需要注意的是,已经被分配使用的数据集不能用该命令保护,除非先释放该数据集。该命令可简写为PROT。例如使用命令: PROT MY.DATA NOPWREAD PWWRITE ADD(P123456) 将用口令字P12345保护数据集userid.MY.DATA,用户试图修改该数据集是必须提供口令字,但是阅读数据集不需要提供口令。
26. RENAME命令
RENAME命令可用来改变非VSAM类数据集的名称。被更名的数据集即可以是单卷存储的普通顺序数据集或分区数据集,也可以是跨卷存储的SMS数据集。该命令可简写为REN。例如使用命令: REN *.TEXT *.JCL 可将所有以TEXT为最后一节数据集名的数据集改为以JCL为最后一节数据集名。
27. RUN命令
RUN命令用来编译、连接并执行指定的源程序。源程序可以是汇编、COBOL、PL1或FORTRAN程序。RUN命令根据数据集名最后一节判断源程序类型。也可以通过参数说明源程序类型。该命令也可简写为R。例如使用命令: R SRC.ASM 将编译运行userid.SRC.ASM,系统将认为源程序是汇编程序代码;使用命令: R MY.SRC(CODE1) COBOL 将编译并运行userid.MY.SRC(CODE1),参数COBOL说明源程序是COBOL程序代码。
28. SEND命令
SEND命令可用来向其他TSO用户、系统操作员或控制台发送消息。该命令和编辑子命令SEND的使用方法相同。应该注意的是,消息接受方的终端属性必须恰当地设置才能接受消息(参见PROFILE命令)。该命令可简写为SE。例如使用命令: SE ‘Do u have time this weekend?’ USER(USER01) NOW 可向用户USER01发送消息。如果用户USER01已经登录,则可立即收到该消息(如果使用参数LOGON代替NOW则不会立即得到消息);如果该用户目前未登录系统,则下一次登录时可收到此消息;使用命令: SE ‘Please mount an empty tape for me’ CN(CONS01) 可向名为CONS01的控制台发送消息,通知系统操作员为自己加载一空盘磁带到磁带机。
29. SMCOPY命令
SMCOPY命令用来拷贝数据集或数据流。包括数据集到数据集、数据流到数据流以及数据集和数据流之间的拷贝。如果拷贝的是TSO数据流则必须先登录到会话管理器软件(Session Manager)以后再使用此命令。该命令可简写为SMC。例如使用命令: SMC FROMDATESET(‘SYS1.CLIST(ZLOGON)’) + TODATASET(‘TEST.CLIST(ZLOGON)’) 可将数据集SYS1.CLIST下的成员ZLOGON拷贝到TEST.CLIST下;使用命令: SMC FROMDATASET(‘TEST.CMDS’) TOSTREAM(TSOIN) 可将数据集TEST.CMDS内容发送到TSO输入流中。通过这种方法可以一次提交多条TSO命令执行。
30. SMFIND命令
SMFIND命令可用来查找数据流中的字符串。使用该命令前必须登录会话管理器软件。系统将返回字符串所在的行号,该行号可通过CLIST系统变量&LASTCC获得。该命令可简写为SMF。例如使用命令: SMF ‘TIME’ FORWARD 可在TSO输出数据流中查找‘TIME’字符串。
31. SMPUT命令
SMPUT命令可向数据流中增加字符串。如果向TSOIN数据流中增加字符串,就相当于提交TSO命令执行;如果向SMIN数据流中增加字符串,则相当于执行一条会话管理命令。该命令可简写为SMP。例如使用命令: SMP ‘TIME’ TSOIN 可向TSO输入流中增加字符串‘TIME’,即相当于执行TSO下的TIME命令。
32. STATUS命令
STATUS命令用来显示已提交作业的状态。通过该命令可以了解作业是否在等待执行,或正在执行,或已经执行完毕。使用STATUS命令必须具有一定的权限。该命令也可简写为ST。例如使用命令: ST STUD01 可显示名为STUD01的所有作业的当前状态
33. SUBMIT命令
SUBMIT命令用来提交一个或多个批处理作业。也可以提交由TSO命令组成的作业以便在后台运行它们。该命令也可简写为SUB。例如使用命令: SUB (JCL(JOB1),JCL(JOB2)) 可以提交两个作业执行,两个作业的JCL源程序存放于userid.JCL.CNTL的成员JOB1和JOB2中。
34. TERMINAL命令
TERMINAL命令用来定义终端操作字符及终端属性。该命令只能用于行输入终端,而不能用于全屏输入终端。此外,使用TERMINAL命令设置的属性只在用户登录期间有效。用户注销或非正常掉线后,终端属性将恢复为缺省值。该命令可简写为TERM,例如使用命令: TERM BREAK 可允许用户输入一条命令后,可在得到系统的输出回应信息之前输入新的命令。使用命令: TERM CLEAR(‘CCCC’) 可定义一清屏字符串,输入CCCC后可清除3270终端的屏幕内容。
35. TEST命令
TEST命令用来测试执行模块、命令处理程序或标准交易程序。该命令还提供了一系列子命令,常用于调试汇编程序。例如使用命令: TEST MYPGM(PGM1) 可测试userid.MYPGM.LOAD下的PGM1执行程序;测试命令处理程序可加参数CP;测试交易程序可加参数TP。不带任何参数使用TEST命令可直接进入测试模式。进入测试模式后,可以通过部分TSO命令程序进行调试。可在测试模式下使用的TSO命令有: ALLOCATE ATTRIB CANCEL EXEC HELP LINK LISTALC LISTBC LISTCAT LISTDS PROFILE PROTECT RENAME SEND STATUS SUBMIT TERMINAL UNALLOC(FREE) 这些命令使用的方式和功能与在TSO环境下相同。此外,用户还可以通过一系列测试子命令完成调试工作。常用的测试子命令有: AND:对两变量执行逻辑“与”操作 ASSIGNMENT OF VALUES:修改虚拟存储区和寄存器的值 AT:设置测试断点 CALL:初始化各寄存器并在指定地址处载入被测试的程序 COPY:拷贝数据 DELETE:从虚拟存储器中删除载入的执行模块 DROP:从符号表中删除由EQUATE命令定义的符号 END:结束TEST命令,退出测试环境 EQUATE:在符号表中增加一个符号定义,并为该符号设置属性和地址 FREEMAIN:释放虚拟存储器中指定字节大小的空间 GETMAIN:请求虚拟存储器中指定字节大小的空间 GO:在指定的断点或地址处运行程序 LIST:显示虚拟存储区和寄存器内容 LISTDCB:显示数据控制块(DCB)内容 LISTDEB:显示数据扩展块(DEB)内容 LISTMAP:显示用户虚拟存储器的映像 LISTPSW:显示程序状态字(PSW)内容 LISTTCB:显示任务控制块(TCB)内容 LISTVP:显示向量区大小 LISTVSR:显示向量状态寄存器(VSR)内容 LOAD:将程序载入虚拟存储器执行 OFF:清除断点 OR:执行逻辑“或”操作 QUALIFY:建立符号名的基地址,解决同一载入模块中同名外部符号名问题 RUN:结束测试过程,完成程序的运行 SETVSR:设置向量状态寄存器的值 WHERE:显示一个符号名或入口对应的虚拟地址,或下一条指令的地址;也可用来显示模块和CSECT名,以及某一地址相对于CSECT的偏移项。
36. TIME命令
使用TIME命令可得到当前日期和时间、登录系统的累计时间、使用CPU的累计时间、以及使用的系统资源等。
37. TSOLIB命令
TSOLIB命令可以为执行TSO命令或运行程序提供搜索路径。系统在处理TSO命令或执行程序时,需要在系统程序库中搜索这些命令或程序。通常首先搜索用户登录程序中的STEPLIB和JOBLIB指定的程序库,其次搜索SYS1.PARMLIB的成员LPALSTnn指定的程序库,最后搜索SYS1.PARMLIB的成员LNKLSTnn指定的程序库。使用TSOLIB命令指定的程序库将作为第一个被搜索的程序库。例如使用命令: TSOLIB ACTIVATE DATASET(‘SYS1.LOADLIB2’) 将指定并激活新的程序库SYS1.LOADLIB2。可用TSOLIB DISPLAY命令显示程序搜索路径。
38. WHEN命令
WHEN命令可用来测试通过CALL命令或LOADGO命令载入的程序的返回码。并且可以根据程序返回码执行预定的操作。例如执行如下命令: CALL MYPGM WHEN SYSRC(=0) EXEC MYPGM2 WHEN SYSRC(>=8) EXEC ERROR 首先通过CALL命令载入MYPGM执行;第一条WHEN指令说明当程序返回码为0时执行MYPGM2程序;第二条WHEN指令说明当程序返回码大于或等于9时执行ERROR程序。
                                                                          ------------------《OS/390 TSO/E Commands Reference》
778°/7781 人阅读/0 条评论 发表评论

登录 后发表评论