您的位置:首页 > 其它

精通COBOL--16.3.7 获取CICS的日期信息

2008-04-29 11:00 260 查看

  获取CICS的日期信息同获取时间信息比较类似。日期信息也是依次通过CICS的命令ASKTIME和FORMATTIME得到的。不过在FORMATTIME中,需要指明获取的为日期信息,同时设置日期信息的相应输出格式。例如,以下程序将用于获取日期信息:
IDENTIFICATION DIVISION.
PROGRAM-ID. DATEPGM.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WKAREA.
05 LEN PIC S9(4) USAGE IS COMP.
05 ERR-CODE PIC S9(8) COMP.
05 GETDATE PIC S9(15) COMP-3. /*该变量用于接受日期数据*/
05 DATEOUT PIC X(10). /*该变量用于接受日期格式,并输出日期信息*/
01 INAREA.
05 TRANID PIC X(4).
05 FILLER PIC X.
05 REQUEST PIC X(4).
01 MSG PIC X(80).
*
PROCEDURE DIVISION.
MOVE 9 TO LEN.
EXEC CICS RECEIVE INTO(INAREA)
LENGTH(LEN)
RESP(ERR-CODE)
END-EXEC
IF ERR-CODE = DFHRESP(LENGERR)
MOVE ‘INPUT DATA TOO LONG: MAX IS 9 CHARS’
TO MSG
EXEC CICS SEND CONTROL CURSOR(1760)
END-EXEC
EXEC CICS SEND FROM(MSG)
LENGTH(40)
END-EXEC
EXEC CICS RETURN END-EXEC.
IF REQUEST = ‘DATE’
EXEC CICS ASKTIME ABSTIME(GETDATE)
END-EXEC
EXEC CICS FORMATTIME ABSTIME(GETDATE)
DATESEP
YYYYMMDD(DATEOUT)
END-EXEC
STRING ‘DATE IS: ‘ DATEOUT
DELIMITED BY SIZE INTO MSG
EXEC CICS SEND CONTROL CURSOR(80)
END-EXEC
EXEC CICS SEND FROM(MSG)
LENGTH(20)
END-EXEC
EXEC CICS RETURN END-EXEC.
GOBACK.
以上程序中,将日期的输出格式设置为了“YYYYMMDD”。其中“YYYY”代表4位数字的年份,“MM”代表2位数字的月份,“DD”代表2位数字的日期。在CICS TS版本中,一共支持以下几种日期输出格式:
q YYYYMMDD
q YYYYDDMM
q DDMMYYYY
q MMDDYYYY
q YYYYDDD
需要注意的是,最后一种格式使用“DDD”表示该日期在一年中的绝对天数。例如,对于平年的12月31日,此处使用“365”进行表示。
最后,以下这段程序综合了终端信息、时间信息、日期信息的获取与输出。将该程序连接到相应交易后,用户便可利用这一个交易,通过输入不同的请求而得到不同的信息。该程序代码如下:
IDENTIFICATION DIVISION.
PROGRAM-ID. MIXPGM.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WKAREA.
05 LEN PIC S9(4) USAGE IS COMP.
05 ERR-CODE PIC S9(8) COMP.
05 TSTAMP PIC S9(15) COMP-3.
05 TIMEOUT PIC X(8).
05 DATEOUT PIC X(10).
01 INAREA.
05 TRANID PIC X(4).
05 FILLER PIC X.
05 REQUEST PIC X(4).
01 MSG PIC X(80).
*
PROCEDURE DIVISION.
MOVE 9 TO LEN.
EXEC CICS RECEIVE INTO(INAREA)
LENGTH(LEN)
RESP(ERR-CODE)
END-EXEC
IF ERR-CODE = DFHRESP(LENGERR)
MOVE ‘INPUT DATA TOO LONG: MAX IS 9 CHARS’
TO MSG
EXEC CICS SEND CONTROL CURSOR(1760)
END-EXEC
EXEC CICS SEND FROM(MSG)
LENGTH(40)
END-EXEC
EXEC CICS RETURN END-EXEC.
*
IF REQUEST = ‘TERM’
STRING ‘TERMINAL ID IS: ‘ EIBTRMID
DELIMITED BY SIZE INTO MSG
PERFORM 100-OUTPUT-RESULT
EXEC CICS RETURN END-EXEC.
*
IF REQUEST = ‘TIME’
EXEC CICS ASKTIME ABSTIME(GETTIME)
END-EXEC
EXEC CICS FORMATTIME ABSTIME(GETTIME)
TIMESEP
TIME(TIMEOUT)
END-EXEC
STRING ‘TIME IS: ‘ TIMEOUT
DELIMITED BY SIZE INTO MSG
PERFORM 100-OUTPUT-RESULT
EXEC CICS RETURN END-EXEC.
*
IF REQUEST = ‘DATE’
EXEC CICS ASKTIME ABSTIME(GETTIME)
END-EXEC
EXEC CICS FORMATTIME ABSTIME(GETTIME)
DATESEP
DDMMYYYY(DATEOUT)
END-EXEC
STRING ‘DATE IS: ‘ DATEOUT
DELIMITED BY SIZE INTO MSG
PERFORM 100-OUTPUT-RESULT
EXEC CICS RETURN END-EXEC.
GOBACK.
100-OUTPUT-RESULT.
EXEC CICS SEND CONTROL CURSOR(80)
END-EXEC
EXEC CICS SEND FROM(MSG)
LENGTH(20)
END-EXEC.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: