BookmarkSubscribeRSS Feed
deleted_user
Not applicable
Hi Buddy,
I have one logic which is retrieving the content from mutiple files dynamically using "INFILE MYINFILE FILEVAR=dsn FILENAME=MYINFILE END=nd; " statement. For some cases the below code doesn't ran fine. I don't know the exact problem in the below code. I took the backup of the input files and ran with this code. For this the code ran fine. Please help to find the bug in the below code.

Sorce code:-
DATA main(KEEP=clientno date year)
adset(KEEP=client process align subset date year)
adjust(KEEP=client process_id ip_rows op_rows comment1 type date year)
drm45(KEEP=client process date comment) ;
SET one NOBS=n1;
FORMAT date DATE5. ;
len = LENGTH(dsn) ;
date = SUBSTR(dsn,len-6,3);
CALL SYMPUT('date',PUT(date,DATE5.));
year=TRIM("&year4");

IF n1 >= _N_ THEN DO;
INFILE MYINFILE FILEVAR=dsn FILENAME=MYINFILE END=nd;
IF nd ¬=1 THEN DO;
subject=' '; process=' ';
proces1=' ';
INPUT @1 subject $7.
@10 process $5.
@10 proces1 $14. ;
put subject= process= proces1=;
****************************************************************;
*** Reading Data for Adset process Email notification *****;
****************************************************************;
IF process = 'ADSET' THEN DO;
INPUT / @1 status $80.
/ @17 client $3.
/ @17 align $1.
/ @17 subset $2.;
PUT 'INSIDE ADSET: ' _n_ ;
OUTPUT adset;

END;

****************************************************************;
*** Reading Data for DRM45 process Email notification *****;
****************************************************************;
IF process = 'DRM45' THEN DO;
INPUT / @1 status $80.
/ @20 client $3.;
IF TRIM(SUBSTR(status,18,6)) = "FAILED" THEN
comment = 'ERROR ENCOUNTERED' ;
ELSE DO ;
INPUT / / / @1 rec3 $80. ;
IF INDEX(rec3,'NOT PROCESSED') ¬= 0 THEN
comment = 'ERROR ENCOUNTERED' ;
ELSE
comment = '' ;
END;

PUT 'INSIDE DRM45: ' _N_ ;
OUTPUT drm45;

END;
****************************************************************;
*** Reading Data for Adjustment set Email notification *****;
****************************************************************;

IF proces1 = "ADJUSTMENT SET" THEN DO;
comment1 = ' ';
DO UNTIL(nd);
RETAIN comment1 client process_id ip_rows op_rows;
put comment1= client= process_id= ;
INPUT @1 rec $140.;
IF INDEX(rec,'CLIENT ID') ¬= 0 THEN
client = SUBSTR(rec,18,3);
IF INDEX(rec,'PROCESS ID') ¬= 0 THEN
process_id = SUBSTR(rec,19,7);
IF INDEX(rec,'READ') ¬= 0 THEN
ip_rows = SUBSTR(rec,55,10);
IF INDEX(rec,'WRITTEN') ¬= 0 THEN
op_rows = SUBSTR(rec,55,10);
IF INDEX(rec,'ERRORS') ¬= 0 THEN
comment1 = 'ERROR ENCOUNTERED';
END ;
IF nd = 1 THEN OUTPUT adjust;
END ;
put ' end of adjustment';
****************************************************************;
*** Reading Data for PRH10 process Email notification *****;
****************************************************************;
IF subject = 'DATA' THEN DO;
put ' DATA';
DO UNTIL(nd);
INPUT @1 keyword1 $6.
@42 clientno $3. ;
IF keyword1 = 'CLIENT' THEN OUTPUT main;

END ;
END ;
END;
END;
RUN;
1 REPLY 1
Cynthia_sas
SAS Super FREQ
Hi:
This is not an ODS or Base Reporting procedure (PRINT, REPORT or TABULATE) question. It is almost impossible for anyone on the forum to look at your program and debug it without also looking at a sample of your data file(s).

This is a perfect question for Tech Support, because they can look at your data, look at your code and help you debug what's not working or suggest program alterations to make the program work better. To contact Tech Support, go to:
http://support.sas.com and in the left hand navigation pane click the link entitled on "Submit a Problem".

cynthia

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 575 views
  • 0 likes
  • 2 in conversation