Graphviz: optimize layout: Avoid blank space and edge crossings - graphviz

I have the following generated data:
graph test123 {"{}" -- "--plus"
"{}" -- "{.}"
"{}" -- "{/}"
"{}" -- "{//}"
"{}" -- "{/.}"
"{}" -- "{#}"
"{}" -- "{%}"
"{}" -- "{n}"
"{}" -- "{=perl expression=}"
"{n}" -- "{n.}"
"{n}" -- "{n/}"
"{n}" -- "{n//}"
"{n}" -- "{n/.}"
"{n.}" -- "{.}"
"{n/}" -- "{/}"
"{n//}" -- "{//}"
"{n/.}" -- "{/.}"
"{=perl expression=}" -- "--rpl"
"{=perl expression=}" -- "--parens"
"{=perl expression=}" -- "{=n perl expression=}"
"{=n perl expression=}" -- "{n}"
":::" -- "--arg-sep"
":::" -- "-a"
":::" -- "::::"
":::" -- ":::+"
":::" -- "::::+"
":::" -- "--link"
":::+" -- "::::+"
":::+" -- "--link"
"::::" -- "-a"
"::::" -- "::::+"
"::::" -- "--link"
"::::+" -- "-a"
"::::+" -- "--link"
"--null" -- "--delimiter"
"--arg-file" -- "--link"
"--arg-file" -- "{n}"
"--arg-file" -- "::::"
"--arg-file" -- "::::+"
"--arg-file" -- ":::"
"--arg-file-sep" -- "::::"
"--basefile" -- "--sshlogin"
"--basefile" -- "--transfer"
"--basefile" -- "--return"
"--basefile" -- "--cleanup"
"--basefile" -- "--workdir"
"--basenamereplace" -- "{/}"
"--basenameextensionreplace" -- "{/.}"
"--bin" -- "--group-by"
"--bin" -- "--round-robin"
"--bin" -- "--shard"
"--bg" -- "--fg"
"--bg" -- "man sem"
"--block" -- "-N"
"--block" -- "--pipe"
"--block" -- "--pipe-part"
"--block" -- "--round-robin"
"--blocktimeout" -- "--pipe"
"--cat" -- "--pipe"
"--cat" -- "--pipe-part"
"--cat" -- "--fifo"
"--cleanup" -- "--transfer"
"--cleanup" -- "--transferfile"
"--cleanup" -- "--sshlogin"
"--cleanup" -- "--return"
"--colsep" -- "--csv"
"--colsep" -- "{n}"
"--colsep" -- "--trim"
"--colsep" -- "--link"
"--compress" -- "--compress-program"
"--csv" -- "--pipe"
"--csv" -- "--link"
"--csv" -- "{n}"
"--ctag" -- "--tag"
"--ctagstring" -- "--ctag"
"--ctagstring" -- "--tagstring"
"--delay" -- "--retries"
"--delimiter" -- "--colsep"
"--dirnamereplace" -- "{//}"
"--dry-run" -- "-v"
"--env" -- "--record-env"
"--env" -- "--session"
"--env" -- "--sshlogin"
"--env" -- "command"
"--env" -- "env_parallel"
"--eta" -- "--bar"
"--eta" -- "--progress"
"--fg" -- "man sem"
"--fifo" -- "--pipe"
"--fifo" -- "--pipe-part"
"--filter-hosts" -- "--sshloginfile"
"--filter-hosts" -- "--sshlogin"
"--filter-hosts" -- "--retries"
"--group" -- "--line-buffer"
"--group" -- "--ungroup"
"--group-by" -- "--pipe"
"--group-by" -- "--pipe-part"
"--group-by" -- "--shard"
"--group-by" -- "--round-robin"
"--header" -- "--colsep"
"--header" -- "--pipe"
"--header" -- "--pipe-part"
"--hostgroups" -- "--sshlogin"
"--hostgroups" -- "$PARALLEL_HOSTGROUPS"
"--hostgroups" -- "$PARALLEL_ARGHOSTGROUPS"
"--joblog" -- "--resume"
"--joblog" -- "--resume-failed"
"--jobs" -- "--use-cores-instead-of-threads"
"--jobs" -- "--use-sockets-instead-of-threads"
"--keep-order" -- "--group"
"--keep-order" -- "--line-buffer"
"-L" -- "-N"
"-L" -- "-l"
"-L" -- "--block"
"-L" -- "-X"
"-L" -- "-m"
"-L" -- "--xargs"
"-L" -- "--pipe"
"--limit" -- "--memfree"
"--limit" -- "--load"
"--line-buffer" -- "--ungroup"
"--xapply" -- "--header"
"--xapply" -- ":::+"
"--xapply" -- "::::+"
"--load" -- "--jobs"
"--controlmaster" -- "--ssh"
"--controlmaster" -- "--sshlogin"
"-m" -- "-X"
"-m" -- "--xargs"
"--memfree" -- "--termseq"
"--memfree" -- "--retries"
"--memfree" -- "--memsuspend"
"--max-replace-args" -- "--pipe"
"--max-replace-args" -- "--block"
"--max-replace-args" -- "-m"
"--max-replace-args" -- "-X"
"--nonall" -- "--onall"
"--nonall" -- "--sshlogin"
"--onall" -- "--sshlogin"
"--output-as-files" -- "--results"
"--pipe" -- "--recstart"
"--pipe" -- "--recend"
"--pipe" -- "--pipe-part"
"--pipe" -- "-N"
"--plus" -- "--rpl"
"--progress" -- "--bar"
"--parens" -- "--rpl"
"--noswap" -- "--memfree"
"--noswap" -- "--memsuspend"
"--record-env" -- "--session"
"--recstart" -- "--regexp"
"--recstart" -- "--remove-rec-sep"
"--results" -- "--files"
"--results" -- "--tag"
"--results" -- "--header"
"--results" -- "--joblog"
"--resume" -- "--results"
"--resume" -- "--resume-failed"
"--resume" -- "--retries"
"--resume-failed" -- "--retry-failed"
"--resume-failed" -- "--retries"
"--retry-failed" -- "--joblog"
"--retry-failed" -- "--resume"
"--retry-failed" -- "--retries"
"--retries" -- "--termseq"
"--retries" -- "--sshlogin"
"--return" -- "--transfer"
"--return" -- "--transferfile"
"--return" -- "--sshlogin"
"--return" -- "--workdir"
"--round-robin" -- "--shard"
"--max-chars" -- "-X"
"--max-chars" -- "-m"
"--max-chars" -- "--xargs"
"--max-chars" -- "--max-line-length-allowed"
"--max-chars" -- "--show-limits"
"--show-limits" -- "--max-line-length-allowed"
"--semaphore" -- "man sem"
"--semaphore" -- "--bg"
"--semaphore" -- "--fg"
"--semaphore" -- "--semaphorename"
"--semaphore" -- "--semaphoretimeout"
"--semaphore" -- "--wait"
"--semaphorename" -- "man sem"
"--semaphoretimeout" -- "man sem"
"--ssh" -- "--sshlogin"
"--sshlogin" -- "--transferfile"
"--sshlogin" -- "--trc"
"--sshlogin" -- "--sshloginfile"
"--sshlogin" -- "--workdir"
"--tag" -- "--tagstring"
"--tmpdir" -- "--compress"
"--timeout" -- "--termseq"
"--verbose" -- "-v"
"--verbose" -- "-p"
"--transferfile" -- "--workdir"
"--transferfile" -- "--basefile"
"--trc" -- "--transfer"
"--trc" -- "--return"
"--trc" -- "--cleanup"
"--extensionreplace" -- "{.}"
"-v" -- "-t"
"--wait" -- "man sem"
"--xargs" -- "-X"
}
It generates a graph that is technically correct, but not very visually pleasing.
I have tried using dot, neato, fdp, and sfdp, and each of them fail in some of these ways:
node circles overlays: This can cause the text to be unreadable.
edges cross node circles: Edges should never touch a node circle.
waste of paper: There is way too much blank paper.
edge crossings: Many of the solutions have edges crossing needlessly, crossings that could be avoided by simply moving a node or adjusting the line's path.
The least crappy solution is from dot: It reaches the first 2 goals perfectly, and it seems goals 3+4 could be improved a lot if I could disable it's hierarchical mode and let it place the nodes more freely.
neato does a better job of not wasting paper, but a crap job of first two goals.
This example manually uncrosses edges. But since my graph is generated, I want something like this to happen automatically.
How can I tell the layout engines to optimize for the 4 goals - possibly by assigning a cost to each of the 4 goals?

Using neato and adding this:
graph test123 {
overlap=false;
splines=true;
sep=.1;
helps a lot: Goal 1+2 is completed. There are still many unneeded edge crossings that could trivially be solved (e.g. swap two nodes, let an edge go left of a node instead of right), but there are fewer.

Related

VHDL Pre-loading RAM Memory with MIF File

I am trying to implement memory in VHDL and when testing it on the DE2 board I want to preload the memory with generated values. I first tried doing this by reading from a text file, but that did not work because one cannot load a text file onto the FPGA board. So I turned to mif files. However, I do not know how to get vhdl/quartus ii to associate the MIF file I generated with the RAM I created.
I also tried using a 1-port RAM LPM, but because it clocks the reading as well as the writing and this causes it to not provide the data fast enough to be useful.
Below is the code for the RAM I created:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
entity instruction_memory is
port (
input_address : in std_logic_vector(31 downto 0);
opcode : out std_logic_vector(31 downto 0)
);
end instruction_memory;
architecture archInstruction_Memory of instruction_memory is
subtype word_t is std_logic_vector(31 downto 0);
type ram_t is array(0 to 4095) of Reichman_word_t;
impure function ReadMemFile(FileName : STRING) return ram_t is
file FileHandle : TEXT open READ_MODE is FileName;
variable CurrentLine : LINE;
variable TempWord : bit_vector(31 downto 0);
variable Result : ram_t := (others => (others => '0'));
begin
for i in 0 to 4095 loop
exit when endfile(FileHandle);
readline(FileHandle, CurrentLine);
read(CurrentLine, TempWord);
Result(i) := to_stdlogicvector(TempWord);
end loop;
return Result;
end function;
signal ram : ram_t := ReadMemFile("instructions_memory.txt");
attribute ram_init_file : string;
attribute ram_init_file of ram : signal is "instructions_memory.mif";
begin
opcode <= ram(to_integer(unsigned(input_address(31 downto 0))));
end archInstruction_Memory;
How can I get it preload the data in the .mif file so when I test it on the DE2 board it shows that it uses those values?
I'm using a tcl script to translate binary data (code) into a VHDL constant that can be used to generate a ROM:
package require cmdline
post_message "embed_m68k.tcl"
exec /bin/bash -c "(cd m68k; make)"
set binfile m68k/simple.bin
set fp [open $binfile r]
fconfigure $fp -translation binary
set bindata [read $fp]
close $fp
set filename simple.vhd
set date [clock format [clock seconds] -format { %a, %Y-%m-%d, %H:%M }]
set file [open $filename w]
set script [info script]
puts $file "library ieee;"
puts $file "use ieee.std_logic_1164.all;"
puts $file ""
puts $file " -- VHDL representation of $binfile"
puts $file " -- generated by $script on $date"
puts $file " -- m68k executable as preloaded RAM contents"
puts $file ""
puts $file "package m68k_binary is"
puts $file " subtype ubyte is std_logic_vector(7 downto 0);"
puts $file " type ubyte_array is array (natural range <>) of ubyte;"
puts $file ""
puts $file " constant m68k_binary : ubyte_array :="
puts $file " ("
puts -nonewline $file " "
set len [string length $bindata]
for {set i 0} {$i < $len} {incr i} {
set char [string index $bindata $i]
binary scan $char H2 byte
puts -nonewline $file "x\""
puts -nonewline $file $byte
puts -nonewline $file "\""
if { ! ([expr $i + 1] == $len) } {
puts -nonewline $file ", "
}
if { [expr ($i + 1) % 8] == 0 } {
puts $file ""
puts -nonewline $file " "
}
}
puts $file ""
puts $file " );"
puts $file "end package m68k_binary;"
close $file
You can easily include the script into your Quartus workflow using the PRE_FLOW_SCRIPT_FILE variable in your .qsf:
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:precmd.tcl"
The PRE_FLOW_SCRIPT_FILE will then automatically be executed at the beginning of the synthesis process. Just include the generated .vhd file into your project.

postgres procedura script does not read input provided by file.sh

I have an Issue running a psql script.
this is the output :
File.SQL:155: ERROR: syntax error at or near ":"
LINE 10: date_temp_Ale INTEGER := :'param_date';
i have a file.sh that is calling the "File.sql" with and Input varible.
here is the line that callsthe sql script:
line in file.sh:
echo le numero des parametres est bien 7
psql -v PGPASSWORD=$MDP -h $IP_MACHINE -f $FIC_REQ_SQL -v param_date=20180101 -U $UTILISATEUR -d $NOM_BDD -p $PORT > $FIC_LOG_EXEC_TMP 2>&1
echo Done in $FIC_LOG_EXEC_TMP
here is the line in the psql script:
line in file.sql"
--- UT 48 PURGE DES TRACES
\set ON_ERROR_STOP on
BEGIN; -- DEBUT DE TRANSACTION
DO $$
DECLARE
num_tra_err_id RECORD;
num_trace_composant RECORD;
num_trace_fonctionnelle RECORD;
num_message_id RECORD;
num_metadonnees_id RECORD;
num_Process_id RECORD;
datediff integer;
date_temp_Ale INTEGER := :'param_date';
Max_days integer := 180;
--date_limite varchar := &1;
BEGIN
i also tried to use the command " --set " in the file.sh but it didn't work.
i found a slution:
the DO statement isolate the inner code from the outer code.
to pass the info we need to store it as psql variable as follow
select set_config('psql.param_date', :param_date, false);
BEGIN; -- DEBUT DE TRANSACTION
DO
$$
DECLARE
limit_date varchar = current_setting('psql.param_date');

Redirecting PostgreSQL Notices to a Bash Array

I have a PostgreSQL statement which raises notices. I wish to redirect this output into a bash array. I have tried the following:
declare -a MYARRAY
MYARRAY=( `psql -U $db_username -h $DATABASE_HOST $DATABASE_NAME -c \
"DO \\$\\$ DECLARE
mySite varchar;
myResult RECORD;
BEGIN
RAISE NOTICE 'current_site, folder, path';
FOR mySite IN SELECT name from public.app_info
LOOP
{Confidential Data here!}
LOOP
RAISE NOTICE '%,%,%', myResult.current_site, myResult.folder, myResult.path;
END LOOP;
END LOOP;
END\\$\\$"` )
echo "These are the files"
for i in ${MYARRAY[#]}; do
echo $i
done
When I run my script my notices from the query are printed to my window but they are not added into the array. I have also tried this with a variable instead of an array, with no luck.
Notices are printed into stderr so change
END\\$\\$"` ) to END\\$\\$" 2>&1` )
but array will contain also texts like NOTICE: and DO so you have to filter them out

Formatting text in Windows Batch file and redirect to a text file

I have a windows 7 batch script which launches a test app and writes the results to a result.txt file. After each test case is executed, I am parsing the outcome of each test case and appending (>> command) the result to result.txt file.
What I need:
I need to output the results to result.txt in pretty text format. How can I do it in batch file ?
The snippet (only two test cases here for example) of my script is as below:
REM 1. AboutScreenEnglishTest:
adb shell am instrument -w -r -e debug false -e class com.innovapost.stv.ui.activity.AboutScreenEnglishTest com.innovapost.stv.test/android.support.test.runner.AndroidJUnitRunner | FIND "FAILURES!!!" > NUL
if %errorlevel% == 0 (
ECHO 01. %Date%_%Time%: AboutScreenEnglishTest -- FAILED* >> %RESULTFILENAME%
) else (
ECHO 01. %Date%_%Time%: AboutScreenEnglishTest -- PASSED >> %RESULTFILENAME%
)
REM 2. AboutScreenFrancaisTest:
adb shell am instrument -w -r -e debug false -e class com.innovapost.stv.ui.activity.AboutScreenFrancaisTest com.innovapost.stv.test/android.support.test.runner.AndroidJUnitRunner | FIND "FAILURES!!!" > NUL
if %errorlevel% == 0 (
ECHO 02. %Date%_%Time%: AboutScreenFrancaisTest -- FAILED* >> %RESULTFILENAME%
) else (
ECHO 02. %Date%_%Time%: AboutScreenFrancaisTest -- PASSED >> %RESULTFILENAME%
)
This gives me the actual result.txt file output as below:
Automated Test launched at: 2018-03-16_23:44:47.19
-------Package push and installation------------------------------------------
2018-03-16_23:44:47.21: Pushing UiTest.apk to Test Phone
2018-03-16_23:44:59.85: Installation of UiTest.apk -- SUCCESS
-------End of package push and installation-----------------------------------
Test starts here...
No. Time of test Test case title Result
--- ----------------------- ---------------------- ------
01. 2018-03-16_23:45:23.24: AboutScreenEnglishTest -- PASSED
02. 2018-03-16_23:45:34.36: AboutScreenFrancaisTest -- PASSED
03. 2018-03-16_23:45:44.69: DebugScreenEnglishTest -- PASSED
04. 2018-03-16_23:45:56.23: DebugScreenFrancaisTest -- PASSED
05. 2018-03-16_23:46:08.67: LoadDetailsEnglishTest -- FAILED*
06. 2018-03-16_23:46:20.74: LoadDetailsFrancaisTest -- FAILED*
07. 2018-03-16_23:46:35.64: LoadServiceEnglishTest -- PASSED
08. 2018-03-16_23:46:53.54: LoadServiceFrancaisTest -- PASSED
09. 2018-03-16_23:47:06.25: LoadServiceInfoEnglishTest -- FAILED*
10. 2018-03-16_23:47:20.42: LoadServiceInfoFrancaisTest -- FAILED*
11. 2018-03-16_23:47:32.47: LoginEnglishTest -- PASSED
12. 2018-03-16_23:47:46.65: LoginFrancaisTest -- PASSED
13. 2018-03-16_23:47:58.66: MenuScreenEnglishTest -- PASSED
14. 2018-03-16_23:48:12.67: MenuScreenFrancaisTest -- PASSED
15. 2018-03-16_23:48:27.14: Training_LoadDetailsEnglishTest -- FAILED*
16. 2018-03-16_23:48:43.96: Training_LoadDetailsFrancaisTest -- FAILED*
17. 2018-03-16_23:49:03.54: Training_LoadServiceEnglishTest -- PASSED
18. 2018-03-16_23:49:23.52: Training_LoadServiceFrancaisTest -- PASSED
19. 2018-03-16_23:49:38.96: Training_LoadServiceInfoEnglishTest -- FAILED*
20. 2018-03-16_23:50:33.62: Training_LoadserviceInfoFrancaisTest -- FAILED*
But I would like the result.txt should looks like this. (Note that, the 'Test case title' length varies from test case to case, and my test app is incrementally including new test cases every day):
Automated Test launched at: 2018-03-16_23:44:47.19
-------Package push and installation------------------------------------------
2018-03-16_23:44:47.21: Pushing UiTest.apk to Test Phone
2018-03-16_23:44:59.85: Installation of UiTest.apk -- SUCCESS
-------End of package push and installation-----------------------------------
Test starts here...
No. Time of test Test case title Result
--- ----------------------- ---------------------- ---------
01. 2018-03-16_23:45:23.24: AboutScreenEnglishTest -- PASSED
02. 2018-03-16_23:45:34.36: AboutScreenFrancaisTest -- PASSED
03. 2018-03-16_23:45:44.69: DebugScreenEnglishTest -- PASSED
04. 2018-03-16_23:45:56.23: DebugScreenFrancaisTest -- PASSED
05. 2018-03-16_23:46:08.67: LoadDetailsEnglishTest -- FAILED*
06. 2018-03-16_23:46:20.74: LoadDetailsFrancaisTest -- FAILED*
07. 2018-03-16_23:46:35.64: LoadServiceEnglishTest -- PASSED
08. 2018-03-16_23:46:53.54: LoadServiceFrancaisTest -- PASSED
09. 2018-03-16_23:47:06.25: LoadServiceInfoEnglishTest -- FAILED*
10. 2018-03-16_23:47:20.42: LoadServiceInfoFrancaisTest -- FAILED*
11. 2018-03-16_23:47:32.47: LoginEnglishTest -- PASSED
12. 2018-03-16_23:47:46.65: LoginFrancaisTest -- PASSED
13. 2018-03-16_23:47:58.66: MenuScreenEnglishTest -- PASSED
14. 2018-03-16_23:48:12.67: MenuScreenFrancaisTest -- PASSED
15. 2018-03-16_23:48:27.14: Training_LoadDetailsEnglishTest -- FAILED*
16. 2018-03-16_23:48:43.96: Training_LoadDetailsFrancaisTest -- FAILED*
17. 2018-03-16_23:49:03.54: Training_LoadServiceEnglishTest -- PASSED
18. 2018-03-16_23:49:23.52: Training_LoadServiceFrancaisTest -- PASSED
19. 2018-03-16_23:49:38.96: Training_LoadServiceInfoEnglishTest -- FAILED*
20. 2018-03-16_23:50:33.62: Training_LoadserviceInfoFrancaisTest -- FAILED*
set "spaces= "
REM 1. AboutScreenEnglishTest:
set "Testname=AboutScreenEnglishTest"
set "testnumber=01"
call :report
REM 2. AboutScreenFrancaisTest:
set "Testname=AboutScreenFrancaisTest"
set "testnumber=02"
call :report
....
goto :eof
:report
adb shell am instrument -w -r -e debug false -e class com.innovapost.stv.ui.activity.%testname% com.innovapost.stv.test/android.support.test.runner.AndroidJUnitRunner | FIND "FAILURES!!!" > NUL
if %errorlevel% == 0 (set "result=FAILED*"
) else (set "result=PASSED")
set "reportfor=%testname%%spaces%"
ECHO %testnumber%. %Date%_%Time%: %reportfor:~0,30% -- %result% >> %RESULTFILENAME%
goto :eof
would be my approach, appending a goodly number of spaces after the testname, then taking the first 30 characters of the result to output. I didn't count the actual number you are using. Adjust to suit.

not able to call the procedure in shell script

I have the following shell script register as host executable calling a procedure, that will call a concurrent program in oracle , when I submit the job, it has no concurrent program spawn, I am using the same method in other instance before and it will work, wonder if I missed anything.
#!/bin/ksh
#--------------------------------------------------
# Get the current date
#--------------------------------------------------
HISTDATE=`date +"%m%d%y%H%M%S"`
#--------------------------------------------------
# Input Paramenters
#--------------------------------------------------
APPSPW=${1}
USERID=${2}
USERNAME=${3}
REQID=${4}
INTERFACE_PATH=${5}
AS_OF_DATE=${6}
FILENAME=${7}
echo "+---------------------------------------------------------------------------+"
echo "| 1. Get FTP Info"
echo "+---------------------------------------------------------------------------+"
echo "Request Id : " $REQID
echo "Used Id : " $USERID
echo "User Name : " $USERNAME
echo "Interface Path : " $INTERFACE_PATH
echo "As of Date : " $AS_OF_DATE
echo "File Name : " $FILENAME
if [ -d $INTERFACE_PATH ]; then
echo "- 1.1 Folder "$INTERFACE_PATH" exists"
else
echo "- 1.1 Folder "$INTERFACE_PATH" does not exist"
exit 1
fi
echo "+---------------------------------------------------------------------------+"
echo "| 2. Check File Exist or Not"
echo "+---------------------------------------------------------------------------+"
cd $INTERFACE_PATH
V_FILENAME="${FILENAME}${AS_OF_DATE}"
for files in `ls ${V_FILENAME}*`
do
echo "File Name : " $files
INPUT_FULL_FILENAME="${INTERFACE_PATH}${files}"
if [ -s $INPUT_FULL_FILENAME ]; then
echo "File found, now proceed SQL loader"
sqlplus $APPSPW <<ENDOFSQL
connect $APPSPW
SET SERVEROUTPUT ON
DECLARE
P_ERRBUFF VARCHAR2(4000);
P_ERRCODE VARCHAR2(100);
P_FULL_PATH VARCHAR2(400);
ln_request_id NUMBER;
lv_appl_name VARCHAR2(10) := 'XHGL';
lvc_sqlloader1 VARCHAR2(30) := 'XHGL_DCASS_STG';
lv_req_status1 VARCHAR2(1);
lv_msg VARCHAR2(1000);
ln_user_id NUMBER;
ln_resp_id NUMBER;
ln_resp_appl_id NUMBER;
BEGIN
BEGIN
SELECT APPLICATION_ID
INTO ln_resp_appl_id
FROM FND_APPLICATION
WHERE APPLICATION_SHORT_NAME = 'XHGL';
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Failed to get ln_resp_appl_id');
END;
BEGIN
SELECT FND_GLOBAL.USER_ID
INTO ln_user_id
FROM DUAL;
END;
dbms_output.put_line('ln_user_id = ' || ln_user_id);
BEGIN
SELECT FND_GLOBAL.RESP_ID
INTO ln_resp_id
FROM DUAL;
END;
P_FULL_PATH := TO_CHAR('${INPUT_FULL_FILENAME}');
dbms_output.put_line('P_FULL_PATH = ' || P_FULL_PATH);
FND_GLOBAL.APPS_INITIALIZE(USER_ID => ln_user_id,
RESP_ID => ln_resp_id,
RESP_APPL_ID => ln_resp_appl_id);
XHGL_DCASS_INBOUND_PKG.SUBMIT_CCMS_STG( P_ERRBUFF, P_ERRCODE, P_FULL_PATH );
dbms_output.put_line('P_ERRBUFF = ' || P_ERRBUFF);
dbms_output.put_line('P_ERRCODE = ' || P_ERRCODE);
END;
/
exit
ENDOFSQL
fi
done
exit 0

Resources