睡眠时间
CALL 也是一种扩展 COBOL 功能的方法,也是一种允许代码重用的方法。它还可以提供对系统功能的访问。
此示例说明了为 IBM Mainframe COBOL 提供睡眠功能的方法。请记住,这样做的要求很少,通常当某人认为他们因某种原因需要睡觉时,这是错误的。
ILBOWAT0 来自 Mainframes 上旧的 COBOL 特定运行时代。BXP1SLP 和 BXP4SLP 是 Unix 系统服务(USS)例程,可以被任何语言使用。实际上它们是 Unix睡眠请求。
当前的 IBM Mainframe Runtime(语言环境(LE))提供了语言间通信,而 CEE3DLY LE 服务则显示在另一个示例中,使用 z / OS 语言环境线程延迟服务 。
ILBOWAT0 已经存在了很长时间(可能超过 40 年),你可能仍会遇到它。它的用途应该用 CEE3DLY 或 BXP1SLP 代替,以较适合特定要求为准。
有时你需要让程序进入睡眠状态,或者导致 Job 暂停一段时间(在 FTP 或 NDM 步骤之后),这通常作为单独的作业运行,你需要睡眠/循环查找生成的数据集。
这是一个可爱的小 COBOL 程序来执行上述任务,调用 OS / VS 中可用的 COBOL 睡眠程序以及其他传统和当前大型机操作环境。
IDENTIFICATION DIVISION.
PROGRAM-ID. SLEEPYTM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WAIT-PARM.
05 WAIT-TIME PIC S9(8) COMP VALUE 90.
05 WAIT-RESPONSE PIC S9(8) COMP VALUE 0.
05 WAIT-PROGRAM-24BIT PIC X(8) VALUE 'ILBOWAT0'.
05 WAIT-PROGRAM-31BIT PIC X(8) VALUE 'BPX1SLP '.
05 WAIT-PROGRAM-64BIT PIC X(8) VALUE 'BPX4SLP '.
PROCEDURE DIVISION.
GENESIS.
DISPLAY 'START CALLING WAIT PROGRAM'
CALL WAIT-PROGRAM-24BIT USING WAIT-TIME WAIT-RESPONSE
DISPLAY 'END CALLING WAIT PROGRAM'
GOBACK
PERIOD .