Focal Point
[CLOSED] ATODBL in a -SET command

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/270104005

August 02, 2010, 10:36 AM
Al_C
[CLOSED] ATODBL in a -SET command
I am accepting a date from the parameter screen as YYYYMMDD.

Since several of our DB files contain the year, and I can use that date to create the DB table names I need to access. I also wanted to use that year as an index for a loop to process several 'year' tables but after using the EDIT function to get the year I cannot do integer math.

I have tried using ATODBL to convert the edited field to a numeric value but get errors no matter what I use in the 3rd parameter

any help on a 'general strategy' for doing this would be appreciated

Code:

-DEFAULT &ST_DATE = '20100701';
-DEFAULT &END_DATE = '20100730';
-SET &START_YEAR = ATODBL(EDIT(&ST_DATE,'9999'),'04,'I4');
-* &START_YEAR IN PARAMETER 3 DOESN'T WORK EITHER (this works great in a DEFINE)
-SET &END_YEAR = EDIT(&END_DATE,'9999');

-******************************************************

-* TABLES PRIOR TO 2005 WERE A DIFFERENT FORMAT, SO 2005 IS THE EARLIEST ACCEPTABLE YEAR FOR THIS REPORT
-SET &LOOP_YEAR = IF START_YEAR GE 2005 THEN START_YEAR ELSE 2005;


-LOOP1START

IF &START_YEAR GT &END_YEAR THEN GOTO LOOP1EXIT

-SET &TA_FILENAME = 'TA_'||&LOOP_YEAR;
-* IF ONLY 1 YEAR TO PROCESS GIVE IT A STATIC NAME, IF MORE THAN 1 YEAR TO PROCESS WE WILL USE MATCH FILE
-* TO MERGE/CONCAT SUBSEQUENT FILES INTO THE FIRST FILE
-SET &TA_OUT_FILENAME = IF &LOOP_YEAR EQ &START_YEAR THEN 'TA_OUT_FILE' ELSE 'TA_'||&LOOP_YEAR||'_OUT';
-SET &TA_TABLE_NAME_ID = &TA_FILENAME||'_ID';

DEFINE FILE &TA_FILENAME
ID/A7 = GETTOK(&TA_TABLE_NAME_ID,27,1,'*',7,ID);
AWARD/A10 = GETTOK(&TA_TABLE_NAME_ID,27,2,'*',5,AWARD);
TERM/A10 = GETTOK(&TA_TABLE_NAME_ID,27,3,'*',10,TERM);
FA_AWD_FLAG/A1 = IF TA_TERM_AMOUNT GT 0 THE 'Y' ELSE 'N';
END

TABLE FILE &TA_FILENAME
HANKID
AWARD
TERM
TA_TERM_AMOUNT
ON TABLE PCHOLD FORMAT HTML
-*ON TABLE HOLD AS &TA_OUT_FILENAME
END

-* PERFORM MERGE HERE


-* INCREMENT & RETURN TO TOP OF LOOP

-**** THIS LINE GENERATES A PARAMETER MISMATCH *****
-SET &LOOP_YEAR = &LOOP_YEAR + 1;

-GOTO LOOP1START


-LOOP1EXIT

This message has been edited. Last edited by: Kerry,


WebFOCUS 7.6.9
Windows
all output (Excel, HTML, PDF)
August 02, 2010, 10:44 AM
mrguru
quote:
-SET &START_YEAR = ATODBL(EDIT(&ST_DATE,'9999'),'04,'I4');



You don't need to do ATODBL - just:

  
-SET &START_YEAR = EDIT(&ST_DATE,'9999');



WF 8.2.01M
8.2.01M Reporting Server
Windows 2012 Srvr R2
PDF,Excel, HTML
Graphs - a lot of graphs
August 03, 2010, 08:55 AM
jgelona
Or try using
-SET &START_YEAR=&ST_DATE/10000;

Remember, by default amper variables are just alphanumeric strings. When doing simple arithmetic using numeric strings, the results are always truncated intergers.


In FOCUS since 1985. Prod WF 8.0.08 (z90/Suse Linux) DB (Oracle 11g), Self Serv, Report Caster, WebServer Intel/Linux.