UNKNOWN --************************************** -- Name: calproc.sql -- Description:Creates a 12 month calendar for any given year -- By: Sergio Rueda -- -- -- Inputs:year -- -- Returns:12 month calendar -- --Assumes:nothing -- --Side Effects:none --This code is copyrighted and has limited warranties. --Please see http://www.Planet-Source-Code.com/xq/ASP/txtCodeId.515/lngWId.5/qx/vb/scripts/ShowCode.htm --for details. --************************************** UNIX korn shell sample calling program: ## # creates a calendar for a given year # # Input:Year # # Output: 12 month calendar # stored in a file called CALENDAR.year # ## clear echo " " echo "Now creating file: calendar.$1" echo " " echo " set serveroutput ON size 20000 format WORD_WRAPPED execute srmcal($1); " | sqlplus -s gemsprod/gemsprod > calendar.$1 ================================================== PL/SQL PROCEDURE TO CREATE THE CALENDAR -- Written by Sergio Rueda. -- 07/10/2002 -- -- Procedure to create a 12 month calendar for any given year. -- -- create or replace procedure srmcal(ano in number) as ldom number(02); line varchar2(26); mname varchar(10); wday number(02); begin for mes in 1 .. 12 loop select substr(last_day(to_date('01-'||TO_CHAR(mes)||'-'||TO_CHAR(ano),'DD-MM-YYYY')),1,2) into ldom from dual; select to_char(to_date('01-'||TO_CHAR(mes)||'-'||TO_CHAR(ano),'DD-MM-YYYY'), 'Month') into mname from dual; select to_number( to_char(to_date('01-'||TO_CHAR(mes)||'-'||TO_CHAR(ano),'DD-MM-YYYY'),'D')) into wday from dual; -- -- dbms_output.put_line('.'); dbms_output.put_line('.'); dbms_output.put_line('. '||mname||' -- '|| ano); dbms_output.put_line('.'); dbms_output.put_line('+ SUNMONTUEWEDTHUFRISAT +'); dbms_output.put_line('+------------------------------------------------+'); -- -- for dia in 1 .. wday - 1 loop dbms_output.put( '|......'); end loop; -- -- for dia in 1 .. ldom loop if ( dia < 10) then line := '|'||dia||' '; else line := '| '||dia||' '; end if; -- -- if mod(dia + (wday - 1),7) = 0 then dbms_output.put(line || '|'); dbms_output.new_line; dbms_output.put_line('+------+------+------+------+------+------+------+ '); else dbms_output.put(line); end if; end loop; dbms_output.new_line; dbms_output.put_line('+------+------+------+------+------+------+------+ '); end loop; end; /