MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Date validation in cobol
Goto page Previous  1, 2
 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming
View previous topic :: View next topic  
Author Message
shekar123
Advanced


Joined: 22 Jul 2005
Posts: 528
Topics: 90
Location: Bangalore India

PostPosted: Thu Nov 03, 2005 5:23 pm    Post subject: date validation in COBOL Reply with quote

Bithead,

I have only one occurance of CEEDAYS in my load module DVLDPGM when i opened in Browse mode.Thanks.
_________________
Shekar
Grow Technically
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Thu Nov 03, 2005 5:26 pm    Post subject: Reply with quote

Shekhar123,

Run the following job as is and see if you get the right output.

Code:

//STEP0100 EXEC PGM=IGYCRCTL                     
//STEPLIB  DD DSN=SYS1.SIGYCOMP,                 
//            DISP=SHR                           
//SYSPRINT  DD SYSOUT=*                         
//SYSTERM   DD SYSOUT=*                         
//SYSUT1    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSUT2    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSUT3    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSUT4    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSUT5    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSUT6    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSUT7    DD UNIT=DISK,SPACE=(CYL,(10,2))     
//SYSLIN    DD DSN=&&LOADSET,                   
//             DISP=(MOD,PASS),                 
//             UNIT=DISK,                       
//             SPACE=(CYL,(1,1),RLSE)           
//SYSIN    DD  *                                 
        IDENTIFICATION DIVISION.                         
        PROGRAM-ID.    SAMPLE                             
        DATE-COMPILED.                                   
        ENVIRONMENT DIVISION.                             
        DATA DIVISION.                                   
        WORKING-STORAGE SECTION.                         
                                                         
        01 WS-INP-DATE          PIC 9(08) VALUE 20051103.
        01 WS-OUTPUT            PIC S9(9) COMP.           
        01 WS-FORMAT            PIC X(08).               
                                                         
        01  WS-FC-CODE.                                   
            05 FC-SEVERITY      PIC S9(4) COMP.           
            05 FC-MESSAGE       PIC S9(4) COMP.           
            05 FILLER           PIC X(08).               
                                                         
        PROCEDURE DIVISION.                               
                                                         
             MOVE 'YYYYMMDD'  TO WS-FORMAT               

                                                         
             CALL 'CEEDAYS' USING                       
                            WS-INP-DATE,                 
                            WS-FORMAT,                   
                            WS-OUTPUT,                   
                            WS-FC-CODE                   
                                                         
             IF FC-SEVERITY = 00                         
                DISPLAY 'THE DATE IS A VALID DATE'       
             ELSE                                       
                DISPLAY 'THE DATE IS NOT A VALID DATE'   
             END-IF                                     
             GOBACK.                                     
                                                         
/*                                                       
//STEP0200    EXEC PGM=LOADER,                               
//             PARM=('LIST,LET,XREF,DCBS,'),                 
//             COND=(5,LT,STEP0100)                           
//SYSLIB   DD DSN=SYS1.SCEELKED,                             
//            DISP=SHR                                       
//SYSLIN      DD   DSNAME=*.STEP0100.SYSLIN,DISP=(OLD,DELETE)
//SYSLOUT     DD   SYSOUT=*                                   
//SYSABOUT    DD   SYSOUT=*                                   
//SYSDBOUT    DD   SYSOUT=*                                   
//SYSUDUMP    DD   SYSOUT=*                                   
/*                                                           


Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
shekar123
Advanced


Joined: 22 Jul 2005
Posts: 528
Topics: 90
Location: Bangalore India

PostPosted: Thu Nov 03, 2005 5:55 pm    Post subject: date validation in COBOL Reply with quote

Kolusu,

I tried running the JCL as is but still the desired output is not coming.


Code:

********************************* TOP OF DATA **********************************
THE DATE IS NOT A VALID DATE                                                   
******************************** BOTTOM OF DATA ********************************


_________________
Shekar
Grow Technically
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Thu Nov 03, 2005 6:05 pm    Post subject: Reply with quote

shekar123,

Did you make any changes in the JCL. If so list them .

Can you change the IF to the following

Code:

             IF FC-SEVERITY = 00                         
                DISPLAY 'THE DATE IS A VALID DATE'
             ELSE                                       
                DISPLAY 'FC SEVERITY: '  FC-SEVERITY
                DISPLAY 'FC MESSAGE : '  FC-MESSAGE 
                DISPLAY 'THE DATE IS NOT A VALID DATE'   
             END-IF 
                                   



And show me the sysout

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
shekar123
Advanced


Joined: 22 Jul 2005
Posts: 528
Topics: 90
Location: Bangalore India

PostPosted: Thu Nov 03, 2005 6:29 pm    Post subject: date validation in COBOL Reply with quote

Kolusu,

I made the changes and here is what i have.FYI ,I have seen the PDS CEE.SCEELKED in which i do not find any member by name LOADER.


My JCL
------

Code:

//TECH022R JOB TEST#,'SR',CLASS=A,NOTIFY=&SYSUID,MSGLEVEL=(1,1)         
//STEP0100 EXEC PGM=IGYCRCTL                                           
//STEPLIB  DD DSN=TECH022.SIGYCOMP,                                     
//            DISP=SHR                                                 
//SYSPRINT  DD SYSOUT=*                                                 
//SYSTERM   DD SYSOUT=*                                                 
//SYSUT1    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSUT2    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSUT3    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSUT4    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSUT5    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSUT6    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSUT7    DD UNIT=SYSDA,SPACE=(CYL,(10,2))                           
//SYSLIN    DD DSN=&&LOADSET,                                           
//             DISP=(MOD,PASS),                                         
//             UNIT=SYSDA,                                             
//             SPACE=(CYL,(1,1),RLSE)                                   
//SYSLIB   DD  DSN=CEE.SCEELKED,DISP=SHR                               
//SYSIN    DD  *                                                       
        IDENTIFICATION DIVISION.                                       
        PROGRAM-ID.    SAMPLE.                                         
        DATE-COMPILED.                                                 
        ENVIRONMENT DIVISION.                                           
        DATA DIVISION.                                                 
        WORKING-STORAGE SECTION.                                       
                                                                       
        01 WS-INP-DATE          PIC 9(08) VALUE 20051103.               
        01 WS-OUTPUT            PIC S9(9) COMP.                         
        01 WS-FORMAT            PIC X(08).                             
        01  WS-FC-CODE.                                                 
            05 FC-SEVERITY      PIC S9(4) COMP.                         
            05 FC-MESSAGE       PIC S9(4) COMP.                         
            05 FILLER           PIC X(08).                             
                                                                       
       PROCEDURE DIVISION.                                             
                                                                       
            MOVE 'YYYYMMDD'  TO WS-FORMAT                             
                                                                       
            CALL 'CEEDAYS' USING                                       
                           WS-INP-DATE,                               
                           WS-FORMAT,                                 
                           WS-OUTPUT,                                 
                           WS-FC-CODE                                 
            IF FC-SEVERITY = 00                                       
               DISPLAY 'THE DATE IS A VALID DATE'                   
            ELSE           
               DISPLAY 'FC SEVERITY: '  FC-SEVERITY                   
               DISPLAY 'FC MESSAGE : '  FC-MESSAGE                                             
               DISPLAY 'THE DATE IS NOT A VALID DATE'                 
            END-IF                                                     
             GOBACK.                                                   
/*                                                                     
//STEP0200    EXEC PGM=LOADER,                                         
//             PARM=('LIST,LET,XREF,DCBS,'),                           
//             COND=(5,LT,STEP0100)                                     
//SYSLIB   DD DSN=CEE.SCEELKED,                                         
//            DISP=SHR                                                 
//SYSLIN      DD   DSNAME=*.STEP0100.SYSLIN,DISP=(OLD,DELETE)           
//SYSLOUT     DD   SYSOUT=*                                             
//SYSABOUT    DD   SYSOUT=*                                             
//SYSDBOUT    DD   SYSOUT=*                                             
//SYSUDUMP    DD   SYSOUT=*                                             




OUTPUT
------

Code:

********************************* TOP OF DATA **********************************
FC SEVERITY: 0003                                                               
FC MESSAGE : 2518                                                               
THE DATE IS NOT A VALID DATE                                                   
******************************** BOTTOM OF DATA ********************************


_________________
Shekar
Grow Technically
Back to top
View user's profile Send private message
Grant
Beginner


Joined: 02 Dec 2002
Posts: 45
Topics: 1
Location: Sydney, NSW, Australia

PostPosted: Mon Mar 06, 2006 5:54 pm    Post subject: CEEDAYS Reply with quote

I have found that you will get unpredictable results if you do not pass the first two parameters to CEEDAYS as varying length character strings. Using fixed length strings will work most of the time, but every now and again it seems to spit the dummy.
Refer to the Language Reference Manual Programming Reference for more info...
Back to top
View user's profile Send private message
Jaya
Beginner


Joined: 02 Sep 2005
Posts: 77
Topics: 10
Location: Cincinnati

PostPosted: Tue Mar 07, 2006 3:58 am    Post subject: Reply with quote

Yes Grant! it works after changing the input string and format information to variable length fields.

I ran the following code to test them.
Code:
//STEP0100 EXEC PGM=IGYCRCTL                                           
//STEPLIB  DD DSN=SYS1.SIGYCOMP,                                       
//            DISP=SHR                                                 
//SYSPRINT  DD SYSOUT=*                                                 
//SYSTERM   DD SYSOUT=*                                                 
//SYSUT1    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSUT2    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSUT3    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSUT4    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSUT5    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSUT6    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSUT7    DD UNIT=DISK,SPACE=(CYL,(10,2))                             
//SYSLIN    DD DSN=&&LOADSET,                                           
//             DISP=(MOD,PASS),                                         
//             UNIT=DISK,                                               
//             SPACE=(CYL,(1,1),RLSE)                                   
//SYSIN    DD  *                                                       
        IDENTIFICATION DIVISION.                                       
        PROGRAM-ID.    SAMPLE                         
        DATE-COMPILED.                               
        ENVIRONMENT DIVISION.                         
        DATA DIVISION.                               
        WORKING-STORAGE SECTION.                     
                                                     
        01 WS-INP-DATE.                               
            02  VSTRING-LENGTH      PIC S9(4) BINARY.
            02  VSTRING-TEXT.                         
                03  VSTRING-CHAR    PIC X             
                         OCCURS 0 TO 256 TIMES       
                         DEPENDING ON VSTRING-LENGTH 
                         OF WS-INP-DATE.             
        01 WS-OUTPUT            PIC S9(9) COMP.       
        01  PICSTR.                                   
            02  VSTRING-LENGTH      PIC S9(4) BINARY.
            02  VSTRING-TEXT.                         
                03  VSTRING-CHAR    PIC X             
                         OCCURS 0 TO 256 TIMES       
                         DEPENDING ON VSTRING-LENGTH 
                         OF PICSTR.                         
                                                           
        01  WS-FC-CODE.                                     
            05 FC-SEVERITY      PIC S9(4) COMP.             
            05 FC-MESSAGE       PIC S9(4) COMP.             
            05 FILLER           PIC X(08).                 
        PROCEDURE DIVISION.                                 
                                                           
      *************************************************     
      ** SPECIFY INPUT DATE AND LENGTH               **     
      *************************************************     
                MOVE 8 TO VSTRING-LENGTH OF WS-INP-DATE.   
                MOVE '20050231'                             
                    TO VSTRING-TEXT OF WS-INP-DATE.         
      *************************************************     
      ** SPECIFY A PICTURE STRING THAT DESCRIBES     **     
      ** INPUT DATE, AND THE PICTURE STRING'S LENGTH.**     
      *************************************************     
                MOVE 85 TO VSTRING-LENGTH OF PICSTR.       
                MOVE 'YYYYMMDD'                               
                        TO VSTRING-TEXT OF PICSTR.           
             CALL 'CEEDAYS' USING                             
                            WS-INP-DATE,                     
                            PICSTR,                           
                            WS-OUTPUT,                       
                            WS-FC-CODE                       
                                                             
             DISPLAY 'WS-INP-DATE=>' WS-INP-DATE             
             DISPLAY 'PICSTR=>' PICSTR                       
             DISPLAY 'WS-OUTPUT=>' WS-OUTPUT                 
             DISPLAY 'FC-SEVERITY=>' FC-SEVERITY             
             IF FC-SEVERITY = 00                             
                DISPLAY 'THE DATE IS A VALID DATE'           
             ELSE                                             
                DISPLAY 'THE DATE IS NOT A VALID DATE'       
             END-IF                                           
             GOBACK.                                         
/*                                                           
//STEP0200    EXEC PGM=LOADER,                                     
//             PARM=('LIST,LET,XREF,DCBS,'),                       
//             COND=(5,LT,STEP0100)                               
//SYSLIB   DD DSN=SYS1.SCEELKED,                                   
//            DISP=SHR                                             
//SYSLIN      DD   DSNAME=*.STEP0100.SYSLIN,DISP=(OLD,DELETE)     
//SYSLOUT     DD   SYSOUT=*                                       
//SYSABOUT    DD   SYSOUT=*                                       
//SYSDBOUT    DD   SYSOUT=*                                       
//SYSUDUMP    DD   SYSOUT=*                                       
/*                                                                 
//                                                                 


Thanks,
Jaya.
_________________
"Great spirits have always encountered violent opposition from mediocre minds."
-Albert Einstein
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming All times are GMT - 5 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group