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

来源:互联网 发布:c语言例题 编辑:程序博客网 时间:2024/06/08 05:43

  获取CICS的日期信息同获取时间信息比较类似。日期信息也是依次通过CICS的命令ASKTIMEFORMATTIME得到的。不过在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”表示该日期在一年中的绝对天数。例如,对于平年的1231日,此处使用“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.

原创粉丝点击