BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Shmuel
Garnet | Level 18

When I ran a dummy test step (3 files only) it worked fine:

%let zip_ref = testzip;
filename &zip_ref "~/reports/&zip_name";
ods package(&zip_ref) open nopf;
ods package(&zip_ref) add file='~/reports/BID123.html';
ods package(&zip_ref) add file='~/reports/BID124.html';
ods package(&zip_ref) add file='~/reports/BID125.html';

ods package(&zip_ref) publish archive 
  properties(
   archive_name="test_zip.zip" 
   archive_path="~/reports/"
  );
ods package(&zip_ref) close;

then I generated a program to zip more html files (26 instead 3 and I would like to zip much more).

when I ty to run the generated program I get an error, I do not understand why and how to fix it. All files exist in the same input folder.

the generated program is: 

filename zipped "~/reports/html_ziped.zip";
ods package(zipped) open nopf;
ods package(zipped) add file='BID64.html';
ods package(zipped) add file='BID129.html';
ods package(zipped) add file='B_menu.html';
ods package(zipped) add file='M_menu.html';
ods package(zipped) add file='BID123.html';
ods package(zipped) add file='BID68.html';
ods package(zipped) add file='BID65.html';
ods package(zipped) add file='P_menu.html';
ods package(zipped) add file='BID67.html';
ods package(zipped) add file='iNat_main_v3.html';
ods package(zipped) add file='BID155.html';
ods package(zipped) add file='BID125.html';
ods package(zipped) add file='A_menu.html';
ods package(zipped) add file='BID63.html';
ods package(zipped) add file='BID47.html';
ods package(zipped) add file='BID124.html';
ods package(zipped) add file='BID128.html';
ods package(zipped) add file='F_menu.html';
ods package(zipped) add file='BID172.html';
ods package(zipped) add file='BID126.html';
ods package(zipped) add file='BID71.html';
ods package(zipped) add file='BID131.html';
ods package(zipped) add file='BID66.html';
ods package(zipped) add file='R_menu.html';
ods package(zipped) add file='BID72.html';
ods package(zipped) add file='BID130.html';
ods package(zipped) publish archive properties(archive_name="html_ziped.zip" archive_path="~/reports/");
ods package(zipped) close;

Next is the log, where "pgm" is the fileref to the generated program shown above.

120        %include pgm;
 NOTE: Writing ZIPPED file: ~/reports/html_ziped.zip
 ERROR: Physical file does not exist, /pbr/biconfig/940/Lev1/SASApp/BID64.html.

When I drag the generated program to the program editor and submit I get the same error message. 

But if I submit it, as a second try, I get messages that the zip file is locked.

Next is the end of the 2nd run log:

 96         ods package(zipped) add file='BID72.html';
 97         ods package(zipped) add file='BID130.html';
 ERROR: Resource is write-locked by another thread.  File =/home/sabinun/reports/html_ziped.zip.
 ERROR: Resource is write-locked by another thread.  File =/home/sabinun/reports/html_ziped.zip.
 98         ods package(zipped) publish archive properties(archive_name="html_ziped.zip" archive_path="~/reports/");
 ERROR: File is in use, /home/sabinun/reports/html_ziped.zip.
 99         ods package(zipped) close;
 100        

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User
Your file is specified differently in between the two sets of code, so I'm guessing the files don't exist in the path specified in the second set of code.

ods package(&zip_ref) add file='~/reports/BID125.html';
VS
ods package(zipped) add file='BID125.html';

View solution in original post

4 REPLIES 4
Reeza
Super User
Your file is specified differently in between the two sets of code, so I'm guessing the files don't exist in the path specified in the second set of code.

ods package(&zip_ref) add file='~/reports/BID125.html';
VS
ods package(zipped) add file='BID125.html';
Shmuel
Garnet | Level 18

Tank you @Reeza .

Shame of me - so simple solution. My eyes mislead me.

I need just to add  the path to file to be zipped.

ballardw
Super User

The first message is probably related to all the others.

ERROR: Physical file does not exist, /pbr/biconfig/940/Lev1/SASApp/BID64.html.

Is the path in that message where you intended to write the output? Likely not I think as there is no "Reports" in the file path. The Paths to all the files needs to start at a root for your access otherwise SAS thinks that the target or source file is in the current working directory, which you likely do not have actual access to write any files to.

 

Since you seem to be using the same zip file, the one that doesn't exist, that is locked by the error process as it has not been released.

 

 

AllanBowe
Barite | Level 11
for reference, there's a macro here that might be helpful: https://core.sasjs.io/mp__zip_8sas.html
/Allan
MacroCore library for app developers
Data Workflows, Data Contracts, Data Lineage, Drag & drop excel EUCs to SAS 9 & Viya - Data Controller
DevOps and AppDev on SAS 9 / Viya / Base SAS - SASjs

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1065 views
  • 0 likes
  • 4 in conversation