10 !Program CDATE.BAS !************************************************************************ !************************************************************************ !************** Program : See Date **************** !************ Author : Vic Blosser ************** !************** **************** !************************************************************************ !************************************************************************ !======================================================================== VERSION$ = "V1.1" PROGID$ = "CDATE" !========================================================================== ! WRITTEN: 24-Mar-93 ! ! REVISION #1: ! MADE BY : ! PURPOSE : ! ! DATE : ! !========================================================================== !========================================================================== ! PURPOSE: TO CALCULATE A NEW DATE FROM A SPECIFIED DATE BY A GIVEN ! QUANITY ! PROGRAM SPECIFICATIONS RECEIVED FROM GAR KO ! !========================================================================== !============================================================================ !Include external definitions !============================================================================ %INCLUDE "GRP$INC:DEF_EXT_SUBPROGRAMS.BAS" %INCLUDE "GRP$INC:DEF_VARIABLES.BAS" %INCLUDE "GRP$MGMT:MGMT_SUPP.BAS" %INCLUDE "$RMSDEF" %FROM %LIBRARY "SYS$LIBRARY:BASIC$STARLET" %INCLUDE "$STSDEF" %FROM %LIBRARY "SYS$LIBRARY:BASIC$STARLET" %INCLUDE "$HLPDEF" %FROM %LIBRARY "SYS$LIBRARY:BASIC$STARLET" !============================================================================ !============================================================================ DECLARE BASIC$QUADWORD binary_time1, binary_time2, binary_time3, & binary_time4, binary_time5 DECLARE INTEGER per !============================================================================ !Declare external functions !============================================================================ EXTERNAL LONG FUNCTION LIB$PUT_OUTPUT (STRING BY DESC) EXTERNAL LONG FUNCTION LIB$GET_INPUT (STRING BY DESC,STRING BY DESC,) EXTERNAL INTEGER FUNCTION & CLI$PRESENT,CLI$GET_VALUE EXTERNAL SUB SYS$BINTIM(STRING BY DESC,BASIC$QUADWORD BY REF) EXTERNAL SUB LIB$DAY_OF_WEEK (BASIC$QUADWORD BY REF,INTEGER) EXTERNAL SUB LBR$OUTPUT_HELP (,LONG BY REF,STRING BY DESC, & STRING BY DESC,LONG BY REF,) EXTERNAL SUB CALC_DATE %INCLUDE "GRP$INC:DEF_FUNCTIONS.BAS" !========================================================================== out_loc = LOC(LIB$PUT_OUTPUT) in_loc = LOC(LIB$GET_INPUT) !========================================================================== !============================================================================ !Main program !============================================================================ IF CLI$PRESENT('HELP') AND 1% THEN GOSUB give_help ELSE IF CLI$PRESENT('PERIOD') AND 1% THEN CALL CLI$GET_VALUE ("PERIOD",A$) WHEN ERROR IN per = INTEGER(A$) USE per = 0 END WHEN ELSE per = 0 END IF IF CLI$PRESENT('DATE') AND 1% THEN CALL CLI$GET_VALUE("DATE",start_dte$) ELSE start_dte$ = NOW$ END IF IF CLI$PRESENT('FUNCTION') AND 1% THEN CALL CLI$GET_VALUE ("FUNCTION",C$) ELSE C$ = "ADD" END IF SELECT LEFT$(C$,3) CASE "SUB" func$ = "-" CASE ELSE func$ = "+" END SELECT IF CLI$PRESENT('TYPE') AND 1% THEN CALL CLI$GET_VALUE ("TYPE",D$) ELSE D$ = "WEEKS" END IF type_per$ = LEFT$(D$,1) task$ = func$ + STR$(per) + type_per$ CALL CALC_DATE(LEFT$(start_dte$,11),task$,new_dte$,DATE_ERR) new_dte$ = new_dte$ + " 00:00:00.00" CALL SYS$BINTIM (new_dte$,binary_time1) CALL LIB$DAY_OF_WEEK(binary_time1,DAY_NUM%) day$ = WEEKDAY_NAME$(DAY_NUM%) PRINT day$ + " " + LEFT$(new_dte$,11) END IF GOTO TERMINATE !============================================================================ !give help !============================================================================ give_help: CALL LBR$OUTPUT_HELP(LOC(LIB$PUT_OUTPUT),80,help_text$, & "SYS$CALIB:CDATE.HLB",HLP$M_PROMPT, & LOC(LIB$GET_INPUT)) RETURN !============================================================================ !End program !============================================================================ TERMINATE: END