RE: date format in ksh

2001-10-29 Thread Brian MacLean



Use the /usr/sadm/bin/valdate command and 
check the return status. Examples:


--GOOD DATE--

12322:oracle@e6500a valdate -f "%e-%b-%Y" 
1-jan-200112322:oracle@e6500a echo $?0

--BAD DATE--

12322:oracle@e6500a valdate -f "%e-%b-%Y" 
41-JaN-200112322:oracle@e6500a echo $?1

The valdate command doesn't seam to like leading 0's 
(zero's) so you can just use sed to strip it off. This example should do 
most of what ya need:

12322:oracle@e6500a cat 
dateck.ksh#!/bin/ksh
vDATE="${1}"if valdate -f "%e-%b-%Y" $(echo 
"${vDATE}" | sed "s/^0//")then echo "Good date 
${vDATE}"else echo "Bad date ${vDATE}"fi


12322:oracle@e6500a dateck.ksh 41-mar-2001Bad 
date 41-mar-200112322:oracle@e6500a dateck.ksh 01-Mar-2001Good date 
01-Mar-2001

  -Original Message-From: Suhen Pather 
  [mailto:[EMAIL PROTECTED]]Sent: Thursday, October 25, 
  2001 8:00 PMTo: Multiple recipients of list 
  ORACLE-LSubject: date format in ksh
  
  List,
  
  Sorry to deviate from the topic, 
  but
  I am writing a korn shell script 
  that would exit if the date format is
  incorrect.
  
  I just need something to compare 
  the date format passed in with 
  DD-MON-.
  
  Eg. 
  I am passing an argument to my ksh 
  script being the date.
  If the date is in any other format 
  but DD-MON- the ksh must exit.
  
  Eg. sh test.ksh 02/05/1999
  
  It must 
  exit.
  
  The only format excepted should be 
  
  sh test.ksh 
  02-MON-
  
  TIA
  
  Regards
  Suhen
  
  


Re: date format in ksh

2001-10-28 Thread Jared Still

Jacques,

You could have learned Perl in the time it took to write that. :)

Jared


On Friday 26 October 2001 20:20, Jacques Kilchoer wrote:
  -Original Message-
  From: Suhen Pather [mailto:[EMAIL PROTECTED]]
 
  Thanks for the reply.
  I am passing a hardcoded date.
  I am not getting a date from the
  date command in ksh.
 
  What my ksh does is retrieves $1 and must check if the date format
  is in DD-MON-YY eg. 02-FEB-01.
  It uses the hardcoded date (passed in as argument 1) in the script.
  If the date is in another format other than above then it must exit.

 I dusted off my old C programming skills (Sorry Mr. Still I still don't
 know PERL that well). Why not write a check_date program that returns 0
 for a valid date and 1 for an invalid date?
 The date verification function is case-sensitive and only checks for the
 one format. It also assumes that two-digit years will be prefixed with
 20. Modifying it to be more user-friendly is left as an exercise to the
 alert reader.

 /*
  *  verify that date passed to function is a correct date
  *  parameter passed to function must be in the same format
  *   as shell command date +%d-%b-%y
  *  example:  check_date 26-Jan-01
  *echo $?
  *check_date 32-Jan-01
  *echo $?
  *
  *  program assumes that %b date format will return a string with 3
 characters
  */
 #include ctype.h
 #include stdio.h
 #include stdlib.h
 #include string.h
 #include time.h


 #define B_DTFMT_LEN 3
 #define DT_LEN 6 + B_DTFMT_LEN
 #define HIGH_MM 11
 #define CBASE_YEAR 1900
 #define BASE_YEAR 2000

 extern int main (int argc, char **argv)
 {
short int mm ;
struct tm tmi ;
time_t t ;
char month[B_DTFMT_LEN + 1] = { '\0' },
 day[3] = { '\0' },
 compmonth[B_DTFMT_LEN + 1] = { '\0' },
 compdate[DT_LEN + 1] = { '\0' } ;

if (argc != 2)
{
   puts (Usage - check_date \date\ (date in %d-%b-%y format)) ;
   return EXIT_SUCCESS ;
}

if (strlen (argv[1]) != DT_LEN || argv[1][2] != '-'

|| argv[1][3 + B_DTFMT_LEN] != '-'
|| ! isdigit (argv[1][0]) || ! isdigit (argv[1][1])
|| ! isdigit (argv[1][4 + B_DTFMT_LEN])
|| ! isdigit (argv[1][5 + B_DTFMT_LEN]) )

   return EXIT_FAILURE ;

strncpy (month, argv[1] + 3, B_DTFMT_LEN) ;

memset (tmi, '\0', sizeof tmi) ;
mm = -1 ;
while (strncmp (month, compmonth, B_DTFMT_LEN)  ++mm = HIGH_MM)
{
   tmi.tm_mday = 1 ;
   tmi.tm_mon = mm ;
   tmi.tm_year = 2001 ;
   strftime (compmonth, B_DTFMT_LEN + 1, %b, tmi) ;
}
if (mm  HIGH_MM)
   return EXIT_FAILURE ;

strncpy (day, argv[1], 2) ;
tmi.tm_mday = atoi (day) ;
tmi.tm_mon = mm ;
tmi.tm_year = BASE_YEAR + atoi (argv[1] + 4 + B_DTFMT_LEN) - CBASE_YEAR
 ; if ((t = mktime (tmi)) == (time_t) -1)
   return EXIT_FAILURE ;

tmi = *localtime (t) ;
strftime (compdate, DT_LEN + 1, %d-%b-%y, tmi) ;
if (strcmp (argv[1], compdate))
   return EXIT_FAILURE ;

return EXIT_SUCCESS ;
 }


Content-Type: text/html; charset=iso-8859-1; name=Attachment: 1
Content-Transfer-Encoding: quoted-printable
Content-Description: 

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Jared Still
  INET: [EMAIL PROTECTED]

Fat City Network Services-- (858) 538-5051  FAX: (858) 538-5051
San Diego, California-- Public Internet access / Mailing Lists

To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).



RE: date format in ksh

2001-10-27 Thread Deshpande, Kirti

Suhen,
If all you want is a format check (and no date validation) here is a way to
do it:

#!/usr/bin/ksh
REQD=ZZ-ZZZ-ZZ

RCVD=`echo $1| tr '[A-Z] | [a-z] | [0-9]' '[Z*]'`   

if [ $REQD = $RCVD ]
then
  echo Input Format is Okay
else
  echo Input Format is WRONG
fi


HTH,

Regards,

- Kirti Deshpande 
  Verizon Information Services
   http://www.superpages.com

 -Original Message-
 From: Suhen Pather [SMTP:[EMAIL PROTECTED]]
 Sent: Friday, October 26, 2001 7:40 PM
 To:   Multiple recipients of list ORACLE-L
 Subject:  RE: date format in ksh
 
 Jared,
 
 Thanks for the reply.
 I am passing a hardcoded date.
 I am not getting a date from the 
 date command in ksh.
 
 What my ksh does is retrieves $1 and must check if the date format
 is in DD-MON-YY eg. 02-FEB-01.
 It uses the hardcoded date (passed in as argument 1) in the script.
 If the date is in another format other than above then it must exit.
 
 Regards
 Suhen
 
 
 
 
 
 date +%d-%b-%Y
 
 man date.
 
 You may have to look at the man page on a system with more
 recent documentation, such as linux.  The man page on
 Solaris is incomplete.
 
 JARed
 
 
 
 
  
 
 Suhen Pather
 
 Suhen.Pather@strandba   To: Multiple
 recipients
 of list ORACLE-L [EMAIL PROTECTED]
 gs.com.au   cc:
 
 Sent by: Subject: date format
 in
 ksh
 [EMAIL PROTECTED]
 
  
 
  
 
 10/25/01 08:00 PM
 
 Please respond to
 
 ORACLE-L
 
  
 
  
 
 
 
 
 
 List,
 
 
 
 
 
 Sorry to deviate from the topic, but
 
 
 I am writing a korn shell script that would exit if the date format is
 
 
 incorrect.
 
 
 
 
 
 I just need something to compare the date format passed  in with
 DD-MON-.
 
 
 
 
 
 Eg.
 
 
 I am passing an argument to my ksh script being the date.
 
 
 If the date is in any other format but DD-MON- the ksh must exit.
 
 
 
 
 
 Eg.  sh test.ksh 02/05/1999
 
 
 
 
 
 It must exit.
 
 
 
 
 
 The only format excepted should be
 
 
 sh test.ksh 02-MON-
 
 
 
 
 
 TIA
 
 
 
 
 
 Regards
 
 
 Suhen
 
 
 
 
 
 
 
 
 
 
 
 
 -- 
 Please see the official ORACLE-L FAQ: http://www.orafaq.com
 -- 
 Author: Suhen Pather
   INET: [EMAIL PROTECTED]
 
 Fat City Network Services-- (858) 538-5051  FAX: (858) 538-5051
 San Diego, California-- Public Internet access / Mailing Lists
 
 To REMOVE yourself from this mailing list, send an E-Mail message
 to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
 the message BODY, include a line containing: UNSUB ORACLE-L
 (or the name of mailing list you want to be removed from).  You may
 also send the HELP command for other information (like subscribing).
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Deshpande, Kirti
  INET: [EMAIL PROTECTED]

Fat City Network Services-- (858) 538-5051  FAX: (858) 538-5051
San Diego, California-- Public Internet access / Mailing Lists

To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).



Re: date format in ksh

2001-10-26 Thread Jared . Still


date +%d-%b-%Y

man date.

You may have to look at the man page on a system with more
recent documentation, such as linux.  The man page on
Solaris is incomplete.

JARed




   
 
Suhen Pather   
 
Suhen.Pather@strandba   To: Multiple recipients of list 
ORACLE-L [EMAIL PROTECTED]
gs.com.au   cc:   
 
Sent by: Subject: date format in ksh   
 
[EMAIL PROTECTED]   
 
   
 
   
 
10/25/01 08:00 PM  
 
Please respond to  
 
ORACLE-L   
 
   
 
   
 




List,





Sorry to deviate from the topic, but


I am writing a korn shell script that would exit if the date format is


incorrect.





I just need something to compare the date format passed  in with
DD-MON-.





Eg.


I am passing an argument to my ksh script being the date.


If the date is in any other format but DD-MON- the ksh must exit.





Eg.  sh test.ksh 02/05/1999





It must exit.





The only format excepted should be


sh test.ksh 02-MON-





TIA





Regards


Suhen













--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author:
  INET: [EMAIL PROTECTED]

Fat City Network Services-- (858) 538-5051  FAX: (858) 538-5051
San Diego, California-- Public Internet access / Mailing Lists

To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).



RE: date format in ksh

2001-10-26 Thread Suhen Pather

Jared,

Thanks for the reply.
I am passing a hardcoded date.
I am not getting a date from the 
date command in ksh.

What my ksh does is retrieves $1 and must check if the date format
is in DD-MON-YY eg. 02-FEB-01.
It uses the hardcoded date (passed in as argument 1) in the script.
If the date is in another format other than above then it must exit.

Regards
Suhen





date +%d-%b-%Y

man date.

You may have to look at the man page on a system with more
recent documentation, such as linux.  The man page on
Solaris is incomplete.

JARed




 

Suhen Pather

Suhen.Pather@strandba   To: Multiple recipients
of list ORACLE-L [EMAIL PROTECTED]
gs.com.au   cc:

Sent by: Subject: date format in
ksh
[EMAIL PROTECTED]

 

 

10/25/01 08:00 PM

Please respond to

ORACLE-L

 

 





List,





Sorry to deviate from the topic, but


I am writing a korn shell script that would exit if the date format is


incorrect.





I just need something to compare the date format passed  in with
DD-MON-.





Eg.


I am passing an argument to my ksh script being the date.


If the date is in any other format but DD-MON- the ksh must exit.





Eg.  sh test.ksh 02/05/1999





It must exit.





The only format excepted should be


sh test.ksh 02-MON-





TIA





Regards


Suhen












--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Suhen Pather
  INET: [EMAIL PROTECTED]

Fat City Network Services-- (858) 538-5051  FAX: (858) 538-5051
San Diego, California-- Public Internet access / Mailing Lists

To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).



RE: date format in ksh

2001-10-26 Thread Jacques Kilchoer
Title: RE: date format in ksh





 -Original Message-
 From: Suhen Pather [mailto:[EMAIL PROTECTED]]
 
 Thanks for the reply.
 I am passing a hardcoded date.
 I am not getting a date from the 
 date command in ksh.
 
 What my ksh does is retrieves $1 and must check if the date format
 is in DD-MON-YY eg. 02-FEB-01.
 It uses the hardcoded date (passed in as argument 1) in the script.
 If the date is in another format other than above then it must exit.



I dusted off my old C programming skills (Sorry Mr. Still I still don't know PERL that well). Why not write a check_date program that returns 0 for a valid date and 1 for an invalid date?

The date verification function is case-sensitive and only checks for the one format. It also assumes that two-digit years will be prefixed with 20. Modifying it to be more user-friendly is left as an exercise to the alert reader.

/*
* verify that date passed to function is a correct date
* parameter passed to function must be in the same format
* as shell command date +%d-%b-%y
* example: check_date 26-Jan-01
* echo $?
* check_date 32-Jan-01
* echo $?
*
* program assumes that %b date format will return a string with 3 characters
*/
#include ctype.h
#include stdio.h
#include stdlib.h
#include string.h
#include time.h



#define B_DTFMT_LEN 3
#define DT_LEN 6 + B_DTFMT_LEN
#define HIGH_MM 11
#define CBASE_YEAR 1900
#define BASE_YEAR 2000


extern int main (int argc, char **argv)
{
 short int mm ;
 struct tm tmi ;
 time_t t ;
 char month[B_DTFMT_LEN + 1] = { '\0' },
 day[3] = { '\0' },
 compmonth[B_DTFMT_LEN + 1] = { '\0' },
 compdate[DT_LEN + 1] = { '\0' } ;


 if (argc != 2)
 {
 puts (Usage - check_date \date\ (date in %d-%b-%y format)) ;
 return EXIT_SUCCESS ;
 }


 if (strlen (argv[1]) != DT_LEN || argv[1][2] != '-'
 || argv[1][3 + B_DTFMT_LEN] != '-'
 || ! isdigit (argv[1][0]) || ! isdigit (argv[1][1])
 || ! isdigit (argv[1][4 + B_DTFMT_LEN])
 || ! isdigit (argv[1][5 + B_DTFMT_LEN]) )
 return EXIT_FAILURE ;


 strncpy (month, argv[1] + 3, B_DTFMT_LEN) ;


 memset (tmi, '\0', sizeof tmi) ;
 mm = -1 ;
 while (strncmp (month, compmonth, B_DTFMT_LEN)  ++mm = HIGH_MM)
 {
 tmi.tm_mday = 1 ;
 tmi.tm_mon = mm ;
 tmi.tm_year = 2001 ;
 strftime (compmonth, B_DTFMT_LEN + 1, %b, tmi) ;
 }
 if (mm  HIGH_MM)
 return EXIT_FAILURE ;


 strncpy (day, argv[1], 2) ;
 tmi.tm_mday = atoi (day) ;
 tmi.tm_mon = mm ;
 tmi.tm_year = BASE_YEAR + atoi (argv[1] + 4 + B_DTFMT_LEN) - CBASE_YEAR ;
 if ((t = mktime (tmi)) == (time_t) -1)
 return EXIT_FAILURE ;


 tmi = *localtime (t) ;
 strftime (compdate, DT_LEN + 1, %d-%b-%y, tmi) ;
 if (strcmp (argv[1], compdate))
 return EXIT_FAILURE ;


 return EXIT_SUCCESS ;
}





date format in ksh

2001-10-25 Thread Suhen Pather








List,



Sorry to deviate from the topic, but

I am writing a korn shell script that would exit if the date
format is

incorrect.



I just need something to compare the date format passed  in with DD-MON-.



Eg. 

I am passing an argument to my ksh script being the date.

If the date is in any other format but DD-MON- the ksh
must exit.



Eg.  sh test.ksh 02/05/1999



It must exit.



The only format excepted should be 

sh test.ksh 02-MON-



TIA



Regards

Suhen