| Throwing darts is entertaining but 'divide and conquer' is more
rewarding. Break up the one batch job into many, doing one report
at a time (on the problem node). But even before this, I would
suspect the FOCUS/DCL code, so post it if possibile.
|
|
Hi,
following you can see the DCL/FOCUS procedure that causes the problem
I explained.
In my environment it works while in other 2 countries it doesn't.
-** # **
-**************************************************************************
-**
-*******************************************************************
-** SET FOCUS DEFAULT DIRECTORIES **
-*******************************************************************
EX FOC_DIR.FEX
-RUN
-*******************************************************************
-** SET FOCUS PARAMATERS AND REPORT NAME FOR HEADING **
-*******************************************************************
EX FOC_SET.FEX
-RUN
-SET &&REP_NAME='System Support Services Summary';
-*******************************************************************
-** CHECK IF TABLES AND DATA FILES ARE AVAILABLE **
-*******************************************************************
EX FINDFILE.FEX
-RUN
-IF &&STATUS EQ 'ABORT' GOTO ERR_MSG;
-*******************************************************************
-** READ TABLES AND CONVERT INTO SAVE FILES FOR DECODING **
-*******************************************************************
EX ISSR_TAB.FEX
-RUN
-IF &&STATUS EQ 'ABORT' GOTO ERR_MSG;
-*******************************************************************
-** READ VARIABLES FROM PARAMETER FILE - LEVEL AND CURRENCY **
-*******************************************************************
EX READPARM.FEX
-RUN
-SET &FACTOR = IF &&LEVEL EQ AREA THEN DOLLAR ELSE
-IF &&LEVEL EQ COUNTRY THEN &&CURRENCY ELSE DOLLAR;
-*******************************************************************
-** READ VARIABLES FROM THE FLAG FILE - FISCAL MONTH AND YEAR **
-*******************************************************************
EX READFLAG.FEX
-RUN
-*******************************************************************
-** FILE DEFINITION - OFFLINE **
-*******************************************************************
-SET &EXT=.WRK;
-SET &NAME=SUM;
-SET &DIR=ISSRDB$$D_REP:;
FI OFFLINE CLEAR
FI OFFLINE DISK &DIR&NAME&&MONTH&&YEAR&EXT
-*******************************************************************
-** READ SMARTSYS.DAT PICK UP NECESSARY FIELDS --> ISSRHLD1 **
-*******************************************************************
-STEP1
DEFINE FILE SMARTSYS
MULTIPLIER/P9.6=DECODE CURRENCY(&FACTOR ELSE 0);
GRS_REV/I9=(HW_GROSS_REV * MULTIPLIER) + .5;
NET_HW /I9=(HW_NET_REV * MULTIPLIER) + .5;
NET_SW /I9=(SW_NET_REV * MULTIPLIER) + .5;
SSRCAT/A2 = DECODE HW_AGMT(AGREMENT ELSE 'XX');
WARR/I6 =IF HW_OPTSTAT EQ 'W' THEN 1 ELSE 0;
DSS_BSS/I6 =IF(HW_OPTSTAT EQ 'K')AND(SSRCAT EQ 'BA' OR 'BS' OR 'BO' OR
'B-' OR 'DO' OR 'D+' OR 'DE' OR 'DS')THEN 1 ELSE 0;
SYS_REV/I9 =IF(HW_OPTSTAT EQ 'K')AND(SSRCAT EQ 'BA' OR 'BS' OR 'BO' OR
'B-' OR 'DO' OR 'D+' OR 'DE' OR 'DS')THEN GRS_REV ELSE 0;
TOT_NOR/I9 =IF(HW_OPTSTAT EQ 'K')AND(SSRCAT EQ 'BA' OR 'BS' OR 'BO' OR
'B-' OR 'DO' OR 'D+' OR 'DE' OR 'DS')THEN
(NET_HW+NET_SW) ELSE 0;
END
-RUN
TABLE FILE SMARTSYS
SUM WARR DSS_BSS SYS_REV TOT_NOR
BY SERVICE_CC
BY SYSTYPE
ON TABLE HOLD AS ISSRHLD1
END
-RUN
-IF &LINES NE 0 GOTO STEP2;
-IF &READS EQ 0 THEN GOTO ERR_MSG ELSE GOTO NO_REC_MSG;
-*******************************************************************
-** EXTRACT OPTION STATUS 'K' AND 'W' FROM SMARTOPT.DAT **
-** AND ALL SOFTWARE OPTIONS --> ISSRHLD2 **
-*******************************************************************
-STEP2
DEFINE FILE SMARTOPT
SW_FORMAT/A3 = IF (OPTPACK EQ ' ' AND (EDIT(OPTION,'9$$$$') EQ 'Q'))
THEN 'OLD' ELSE 'NEW';
TEST/A1 = IF (OPTPACK EQ 'QT' OR 'QU' OR 'QV') THEN 'Y' ELSE
IF SW_FORMAT EQ 'OLD' THEN 'Y'
ELSE 'N';
MULTIPLIER/P9.6=DECODE CURRENCY(&FACTOR ELSE 0);
END
-RUN
TABLE FILE SMARTOPT
PRINT OPTPACK OPTION OPTVAR GROS_REV OPTSTAT OPTQTY
SW_FORMAT MULTIPLIER
BY SERVICE_CC
BY SYSTYPE
IF TEST EQ 'Y'
IF OPTSTAT EQ 'W' OR 'K'
ON TABLE HOLD AS ISSRHLD2
END
-RUN
-VMS DELETE/LO [ISSRDB010.EXE]FOC*.FTM;*
-*******************************************************************
-** READ ISSRHLD2 TO CALC "LAYERED SOTWARE WARRANTY" **
-** --> ISSRHLD3 **
-*******************************************************************
-STEP3
DEFINE FILE ISSRHLD2
UPI/A3 = IF SW_FORMAT EQ 'OLD' THEN (EDIT(OPTION,'$$999')) ELSE
IF SW_FORMAT EQ 'NEW' THEN (EDIT(OPTION,'999$$')) ELSE ' ';
SW_P_TYPE/A1 = DECODE UPI(UPITABLE ELSE 'X');
LAY_SOFT/I6 = IF (OPTVAR EQ 'L9') AND (SW_FORMAT EQ 'OLD')
THEN OPTQTY ELSE
IF (EDIT(OPTVAR,'9$') EQ 'L') AND (SW_FORMAT EQ 'NEW')
THEN OPTQTY ELSE 0;
END
-RUN
TABLE FILE ISSRHLD2
SUM LAY_SOFT
BY SERVICE_CC
BY SYSTYPE
IF OPTSTAT EQ 'W'
IF SW_P_TYPE EQ 'L' OR 'X'
ON TABLE HOLD AS ISSRHLD3
END
-RUN
-*******************************************************************
-** READ ISSRHLD2 TO CALC SOFTWARE CLASSIFICATIONS : **
-** COUNT / GROSS REVENUE TOTALS --> ISSRHLD4 **
-*******************************************************************
-STEP4
DEFINE FILE ISSRHLD2
GRS_REV/I9 = (GROS_REV * MULTIPLIER) + .5;
SSS/I6 = IF (OPTVAR EQ 'L9') AND (SW_FORMAT EQ 'OLD')
THEN OPTQTY ELSE
IF (EDIT(OPTVAR,'9$') EQ 'L') AND (SW_FORMAT EQ 'NEW')
THEN OPTQTY ELSE 0;
SSS_REV/I9 = IF (OPTVAR EQ 'L9') AND (SW_FORMAT EQ 'OLD')
THEN GRS_REV ELSE
IF (EDIT(OPTVAR,'9$') EQ 'L') AND (SW_FORMAT EQ 'NEW')
THEN GRS_REV ELSE 0;
MDDS/I6 = IF (EDIT(OPTVAR,'9$') EQ 'E') AND (SW_FORMAT EQ 'OLD')
THEN OPTQTY ELSE
IF (EDIT(OPTVAR,'9$') EQ 'E') AND (SW_FORMAT EQ 'NEW')
THEN OPTQTY ELSE 0;
MDDS_REV/I9 = IF (EDIT(OPTVAR,'9$') EQ 'E') AND (SW_FORMAT EQ 'OLD')
THEN GRS_REV ELSE
IF (EDIT(OPTVAR,'9$') EQ 'E') AND (SW_FORMAT EQ 'NEW')
THEN GRS_REV ELSE 0;
DS/I6 = IF OPTVAR EQ 'KZ' THEN OPTQTY ELSE 0;
DS_REV/I9 = IF OPTVAR EQ 'KZ' THEN GRS_REV ELSE 0;
SMS/I6 = IF ((EDIT(OPTVAR,'9$') EQ 'S') AND (OPTION EQ 'VFM99'
AND SW_FORMAT EQ 'NEW')) THEN OPTQTY ELSE 0;
SMS_REV/I9 = IF ((EDIT(OPTVAR,'9$') EQ 'S') AND (OPTION EQ 'VFM99'
AND SW_FORMAT EQ 'NEW')) THEN GRS_REV ELSE 0;
SUIS/I6 = IF ((EDIT(OPTVAR,'9$') EQ 'R') AND (OPTION EQ 'VFN99'
AND SW_FORMAT EQ 'NEW')) THEN OPTQTY ELSE 0;
SUIS_REV/I9 = IF ((EDIT(OPTVAR,'9$') EQ 'R') AND (OPTION EQ 'VFN99'
AND SW_FORMAT EQ 'NEW')) THEN GRS_REV ELSE 0;
END
TABLE FILE ISSRHLD2
SUM SSS SSS_REV MDDS MDDS_REV DS DS_REV SMS SMS_REV SUIS SUIS_REV
COMPUTE SSO_REV/I9=SSS_REV+MDDS_REV+DS_REV;
COMPUTE VAS_REV/I9=SMS_REV+SUIS_REV;
BY SERVICE_CC
BY SYSTYPE
IF OPTSTAT EQ 'K'
ON TABLE HOLD AS ISSRHLD4
END
-RUN
-*******************************************************************
-** MERGE HOLD FILES ISSRHLD1 ISSRHLD3 ISSRHLD4 **
-** --> ISSRHLD5 **
-*******************************************************************
-STEP5
MATCH FILE ISSRHLD1
PRINT WARR DSS_BSS SYS_REV TOT_NOR
BY SERVICE_CC
BY SYSTYPE
RUN
FILE ISSRHLD3
PRINT LAY_SOFT
BY SERVICE_CC
BY SYSTYPE
ON MATCH HOLD AS ISSRHLD5 OLD-OR-NEW
RUN
FILE ISSRHLD4
PRINT SSS MDDS DS SSO_REV SMS SUIS VAS_REV
BY SERVICE_CC
BY SYSTYPE
ON MATCH HOLD AS ISSRHLD5 OLD-OR-NEW
END
-RUN
-IF &LINES NE 0 GOTO STEP6;
-IF &READS EQ 0 THEN GOTO ERR_MSG ELSE GOTO NO_REC_MSG;
-*******************************************************************
-** SET UP A COUNTER TO TAKE CARE OF EXECUTION LOGIC. **
-** IF FOR AREA LEVEL : EXECUTE 'AREA' AND 'COUNTRY'. **
-** IF FOR COUNTRY : EXECUTE 'COUNTRY','REGION' AND 'DISTRICT'**
-*******************************************************************
-STEP6
-SET &COUNTER = IF &&LEVEL EQ 'COUNTRY' THEN 2 ELSE 1;
-REPORT
-SET &&MAINSORT=DECODE &COUNTER(1 AREA 2 COUNTRY 3 REGION 4 DISTRICT
-ELSE WAYOUT);
-IF &&MAINSORT EQ WAYOUT GOTO TIDYUP;
-SET &TABLE = EDIT (&&MAINSORT,'9999$$$$');
-******************************************************************
-** CHECK IF ANY OF THE FOLLOWING FILES DO NOT EXISTS: **
-** AREANAME.FTM; COUNNAME.FTM; REGINAME.FTM; DISTNAME.FTM; **
-** EXAMPLE: **
-** SOME COUNTRIES DO NOT HAVE ANY REGIONS, SO THE PROGRAM **
-** WILL NOT BE ABLE TO FIND THE FILE "REGINAME.FTM" AND **
-** WILL THEN GO TO THE LABEL "CALC_COUNTER". **
-******************************************************************
-SET &FTM=.FTM;
-VMS STATE &TABLE&&NAME&FTM
-IF &RETCODE NE 0 GOTO CALC_COUNTER;
-*******************************************************************
-** READ ISSRHLD5 , SORT , PERFORM CHECKS , ALLOW FOR LOOP **
-** --> ISSRHLD6 **
-*******************************************************************
DEFINE FILE ISSRHLD5
SYS_GROUP/A18 = DECODE SYSTYPE(GROUPS ELSE 'NO CODE');
MAINSORT/A4 = DECODE SERVICE_CC(&&MAINSORT ELSE 'NONE');
VALIDATE/A6 = ''''|MAINSORT|'''';
END
TABLE FILE ISSRHLD5
SUM WARR DSS_BSS SYS_REV LAY_SOFT SSS MDDS DS SSO_REV SMS
SUIS VAS_REV TOT_NOR
COMPUTE TOT_REV/I9=SYS_REV+SSO_REV+VAS_REV;
BY MAINSORT
BY SYS_GROUP
IF VALIDATE IS (&TABLE&&NAME)
IF MAINSORT NE 'NONE'
IF SYS_GROUP IS (ISSRGRP)
IF SYS_GROUP NE 'NO CODE'
ON TABLE HOLD AS ISSRHLD6
END
-RUN
-IF &LINES EQ 0 GOTO CALC_COUNTER;
-*******************************************************************
-** FORMAT REPORT FROM ISSRHLD6 : SORT ORDER/GROUPS/HEADING **
-** **
-*******************************************************************
DEFINE FILE ISSRHLD6
SORTORDER/I3 = DECODE SYS_GROUP(ORDER ELSE 99);
SUBTOT/I2 = DECODE SYS_GROUP(SYSUBTOT ELSE 99);
SORTNAME/A35=DECODE MAINSORT(&TABLE&&NAME ELSE 'Unknown &&MAINSORT code');
END
TABLE FILE ISSRHLD6
HEADING
-INCLUDE ISSRHEAD
" <28 System Support "
" <27 |--------------| <45 Layered <56 System Support Options
<85 Value Added Services <109 Total "
"<1 System <20 System <30 ALL <37 Gross <45 Software
<54 |-------------------------|<83 |---------------------|<109 Gross<121 Total"
"<1 Group <19 Warranty <28 DSS+BSS <37 Revenue <45 Warranty <55 SSS MDDS
<70 DS <73 Gross Rev <86 SMS SUIS Gross Rev <109 Revenue <122 NOR "
"-----------------------------------------------------------------------
<72 ------------------------------------------------------ "
SUM WARR IN +2 AS '' DSS_BSS IN +1 AS '' SYS_REV IN +1 AS ''
LAY_SOFT IN +1 AS '' SSS IN +1 AS '' MDDS IN +1 AS ''
DS IN +1 AS '' SSO_REV IN +1 AS '' SMS IN +1 AS ''
SUIS IN +1 AS '' VAS_REV IN +1 AS '' TOT_REV IN +1 AS ''
TOT_NOR IN +1 AS ''
BY MAINSORT NOPRINT PAGE-BREAK
BY SUBTOT NOPRINT
BY SORTORDER NOPRINT
BY SYS_GROUP IN 1 AS ''
ON SUBTOT SUBFOOT
"-----------------------------------------------------------------------
<72 ------------------------------------------------------ "
"Sub total <21 <ST.WARR <ST.DSS_BSS <ST.SYS_REV <ST.LAY_SOFT <ST.SSS <ST.MDDS
<66 <ST.DS <ST.SSO_REV <ST.SMS <ST.SUIS <ST.VAS_REV <ST.TOT_REV <ST.TOT_NOR"
" "
ON MAINSORT SUBFOOT
" "
"-----------------------------------------------------------------------
<72 ------------------------------------------------------ "
" Total <21 <ST.WARR <ST.DSS_BSS <ST.SYS_REV <ST.LAY_SOFT <ST.SSS <ST.MDDS
<66 <ST.DS <ST.SSO_REV <ST.SMS <ST.SUIS <ST.VAS_REV <ST.TOT_REV <ST.TOT_NOR"
"=======================================================================
<72 ====================================================== "
FOOTING BOTTOM
-INCLUDE ISSRFOOT
END
-RUN
-************************
-** CALCULATE COUNTER **
-************************
-CALC_COUNTER
-SET &COUNTER = &COUNTER + 1;
-IF &COUNTER EQ 5 GOTO TIDYUP;
-IF &&LEVEL EQ 'AREA' AND &COUNTER EQ 3 GOTO TIDYUP;
-GOTO REPORT;
-********************
-** TIDY UP **
-********************
-TIDYUP
-****************************************************
-* DELETE STATEMENTS NEEDED FOR FOCUS VERSION 1.31A *
-****************************************************
-VMS DELETE *.FTM;*
-VMS DELETE ISSR*.MAS;*
-VMS STATE &DIR&NAME&&MONTH&&YEAR&EXT
-IF &RETCODE NE 0 THEN GOTO NO_REC_MSG;
-VMS RENAME &DIR&NAME&&MONTH&&YEAR&EXT &DIR*.LST /NOLOG
-TYPE ******************************************************
-TYPE ** NORMAL END OF JOB **
-TYPE ** -------------------- **
-TYPE ** REPORT : &&REP_NAME
-TYPE ** PROGRAM : K_SUM.FEX **
-TYPE ** SYSTEM : I.S.S.R. **
-TYPE ** **
-TYPE ** Normal End of Job **
-TYPE ******************************************************
-QUIT FOCUS 4
-****************************
-** NO RECORDS MESSAGE **
-****************************
-NO_REC_MSG
-****************************************************
-** DELETE ROUTINE - NEEDED FOR FOCUS VERSION 1.31A *
-****************************************************
-VMS STATE ISSRDB$$D_EXE:ISSR*.MAS
-IF &RETCODE NE 0 THEN GOTO SKIP1;
-VMS DELETE ISSR*.MAS;*
-SKIP1
-VMS STATE ISSRDB$$D_EXE:*.FTM
-IF &RETCODE NE 0 THEN GOTO SKIP2;
-VMS DELETE *.FTM;*
-SKIP2
-**************************
-* END OF DELETE ROUTINE *
-**************************
-TYPE ******************************************************
-TYPE ** NO RECORDS **** NO RECORDS **** NO RECORDS **
-TYPE ** **
-TYPE ** REPORT : &&REP_NAME
-TYPE ** PROGRAM : K_SUM.FEX **
-TYPE ** SYSTEM : I.S.S.R. **
-TYPE ** **
-TYPE ** REPORT NOT PRODUCED. NO RECORDS SELECTED. **
-TYPE ** **
-TYPE ** NO RECORDS **** NO RECORDS **** NO RECORDS **
-TYPE ******************************************************
-QUIT FOCUS 8
-**********************************
-** ERROR MESSAGE - ABORT **
-**********************************
-ERR_MSG
-****************************************************
-** DELETE ROUTINE - NEEDED FOR FOCUS VERSION 1.31A *
-****************************************************
-VMS STATE ISSRDB$$D_EXE:ISSR*.MAS
-IF &RETCODE NE 0 THEN GOTO SKIP3;
-VMS DELETE ISSR*.MAS;*
-SKIP3
-VMS STATE ISSRDB$$D_EXE:*.FTM
-IF &RETCODE NE 0 THEN GOTO SKIP4;
-VMS DELETE *.FTM;*
-SKIP4
-**************************
-* END OF DELETE ROUTINE *
-**************************
-TYPE ******************************************************
-TYPE ** * ERROR *** ABEND *** ERROR *** ABEND * **
-TYPE ** **
-TYPE ** REPORT : &&REP_NAME
-TYPE ** PROGRAM : K_SUM.FEX **
-TYPE ** SYSTEM : I.S.S.R. **
-TYPE ** **
-TYPE ** A problem has occurred during the execution **
-TYPE ** of this program, resulting in an abnormal **
-TYPE ** end of job. **
-TYPE ** **
-TYPE ** * ABEND *** ERROR *** ABEND *** ERROR * **
-TYPE ******************************************************
-QUIT FOCUS 0
|
|
Try the following in an attempt to isolate the problem.
1) When executing the fexes, try adding ECHO=ALL after the FEXname
which is executed.
2) Place -TYPE statements within your -REPORT loop to display useful
text along with the values of important (control) variables.
for ex. -TYPE Current Value of COUNTER = &COUNTER
-TYPE Current Value of LEVEL = &&LEVEL
3) use the following to confirm file specs of the files being
referenced.
? FILEDEF
-RUN
4) I'd suggest using parenthesis in your compound statement prior to
the -GOTO REPORT; statement. FOCUS doesn't always interpret these
correctly.
Instead of : IF & A eq 3 and &b eq 3 then ...
Use : IF (&A eq 3) and (&B eq 3) then ...
5) Run this in batch and direct output to a log for subsequent review.
Chances are something will be amiss.
6) As Telly liked to say, "Chow, baby!"
|
|
Oggetto: I: Focus Library 5.2.3 Problem
Hello,
I discovered a problem with the library FUSELIB.EXE of Focus 5.2.3.
After the installation of the new Focus 5.2.3 library, we
have reproduced the same problem here in Milan.
Before installing this library we hadn't this problem.
It is a bug of Focus Library 5.2.3. Is it true ?
Do you know if this problem is known and how has been solved ? Does a patch
exist to solve this problem ?
Any helps would be VERY appreciated.
Thanks very much for your collaboration.
Best Regards, Cinzia.
|