Skip to content

Commit a99f52c

Browse files
compile on database 12.2 and older
1 parent 5950daf commit a99f52c

File tree

1 file changed

+43
-67
lines changed

1 file changed

+43
-67
lines changed

as_barcode.pkb

+43-67
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ is
3333
** added logo to QR in svg format
3434
** added jpeg format
3535
** Date: 2024-09-08
36-
** added some postal 4-state barcodes
37-
** * Royal Mail 4-State Customer Code
38-
** * Australia Post 4-State Customer Barcode
39-
** * Dutch PostNL KIX
36+
** added some postal 4-state barcodes
37+
** * Royal Mail 4-State Customer Code
38+
** * Australia Post 4-State Customer Barcode
39+
** * Dutch PostNL KIX
40+
** Date: 2024-10-21
41+
** compile on database 12.2 and older
4042
******************************************************************************
4143
******************************************************************************
4244
Copyright (C) 2016-2024 by Anton Scheffer
@@ -2725,18 +2727,17 @@ THE SOFTWARE.
27252727
--
27262728
procedure init_rm_alfabet
27272729
is
2730+
l_chr varchar2(1);
27282731
begin
2729-
l_4s := tp_4s
2730-
( '0' => 'TTFF', '1' => 'TDAF', '2' => 'TDFA', '3' => 'DTAF'
2731-
, '4' => 'DTFA', '5' => 'DDAA', '6' => 'TADF', '7' => 'TFTF'
2732-
, '8' => 'TFDA', '9' => 'DATF', 'A' => 'DADA', 'B' => 'DFTA'
2733-
, 'C' => 'TAFD', 'D' => 'TFAD', 'E' => 'TFFT', 'F' => 'DAAD'
2734-
, 'G' => 'DAFT', 'H' => 'DFAT', 'I' => 'ATDF', 'J' => 'ADTF'
2735-
, 'K' => 'ADDA', 'L' => 'FTTF', 'M' => 'FTDA', 'N' => 'FDTA'
2736-
, 'O' => 'ATFD', 'P' => 'ADAD', 'Q' => 'ADFT', 'R' => 'FTAD'
2737-
, 'S' => 'FTFT', 'T' => 'FDAT', 'U' => 'AADD', 'V' => 'AFTD'
2738-
, 'W' => 'AFDT', 'X' => 'FATD', 'Y' => 'FADT', 'Z' => 'FFTT'
2739-
);
2732+
for i in 1 .. 36
2733+
loop
2734+
l_chr := substr( '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, 1 );
2735+
l_4s( l_chr ) := substr( 'TTFFTDAFTDFADTAFDTFADDAATADFTFTF'
2736+
|| 'TFDADATFDADADFTATAFDTFADTFFTDAAD'
2737+
|| 'DAFTDFATATDFADTFADDAFTTFFTDAFDTA'
2738+
|| 'ATFDADADADFTFTADFTFTFDATAADDAFTD'
2739+
|| 'AFDTFATDFADTFFTT', i * 4 - 3, 4 );
2740+
end loop;
27402741
end init_rm_alfabet;
27412742
--
27422743
function apsc( p_val varchar2 )
@@ -2757,28 +2758,24 @@ THE SOFTWARE.
27572758
then
27582759
raise_application_error( -20001, 'Australian POST barcode should start with a 8 digits DPID' );
27592760
end if;
2760-
l_nc :=
2761-
tp_4s( '0' => '00', '1' => '01', '2' => '02', '3' => '10', '4' => '11'
2762-
, '5' => '12', '6' => '20', '7' => '21', '8' => '22', '9' => '30'
2763-
);
2764-
l_cc :=
2765-
tp_4s( 'A' => '000', 'B' => '001', 'C' => '002', 'D' => '010'
2766-
, 'E' => '011', 'F' => '012', 'G' => '020', 'H' => '021'
2767-
, 'I' => '022', 'J' => '100', 'K' => '101', 'L' => '102'
2768-
, 'M' => '110', 'N' => '111', 'O' => '112', 'P' => '120'
2769-
, 'Q' => '121', 'R' => '122', 'S' => '200', 'T' => '201'
2770-
, 'U' => '202', 'V' => '210', 'W' => '211', 'X' => '212'
2771-
, 'Y' => '220', 'Z' => '221', '0' => '222', '1' => '300'
2772-
, '2' => '301', '3' => '302', '4' => '310', '5' => '311'
2773-
, '6' => '312', '7' => '320', '8' => '321', '9' => '322'
2774-
, 'a' => '023', 'b' => '030', 'c' => '031', 'd' => '032'
2775-
, 'e' => '033', 'f' => '103', 'g' => '113', 'h' => '123'
2776-
, 'i' => '130', 'j' => '131', 'k' => '132', 'l' => '133'
2777-
, 'm' => '203', 'n' => '213', 'o' => '223', 'p' => '230'
2778-
, 'q' => '231', 'r' => '232', 's' => '233', 't' => '303'
2779-
, 'u' => '313', 'v' => '323', 'w' => '330', 'x' => '331'
2780-
, 'y' => '332', 'z' => '333', ' ' => '003', '#' => '013'
2781-
);
2761+
--
2762+
for i in 26 .. 35
2763+
loop
2764+
l_chr := utl_i18n.raw_to_char( to_char( i + 22, 'fm0X' ), 'US7ASCII' );
2765+
l_nc( l_chr ) := trunc( ( i - 26 ) / 3 ) || mod( i - 26, 3 );
2766+
l_cc( l_chr ) := trunc( i / 9 ) || mod( trunc( i / 3 ), 3 ) || mod( i, 3 );
2767+
end loop;
2768+
for i in 0 .. 25
2769+
loop
2770+
l_chr := utl_i18n.raw_to_char( to_char( i + 65, 'fm0X' ), 'US7ASCII' );
2771+
l_cc( l_chr ) := trunc( i / 9 ) || mod( trunc( i / 3 ), 3 ) || mod( i, 3 );
2772+
l_chr := utl_i18n.raw_to_char( to_char( i + 97, 'fm0X' ), 'US7ASCII' );
2773+
l_cc( l_chr ) := trunc( ( i + 2 ) / 7 )
2774+
|| case when mod( i + 2, 7 ) > 2 then 3 else mod( i + 2, 7 ) end
2775+
|| case when mod( i + 6, 7 ) > 2 then 3 else mod( i + 6, 7 ) end;
2776+
end loop;
2777+
l_cc( ' ' ) := '003';
2778+
l_cc( '#' ) := '013';
27822779
--
27832780
if l_len = 8
27842781
then -- Standard Customer Barcode
@@ -2840,8 +2837,6 @@ THE SOFTWARE.
28402837
then
28412838
raise_application_error( -20001, 'invalid Australian POST barcode' );
28422839
end if;
2843-
--dbms_output.put_line( length( l_val ) );
2844-
--dbms_output.put_line( replace( replace( replace( replace( l_val, '0', 'F' ), '1','A' ), '2', 'D' ), '3', 'T' ) );
28452840
return l_val;
28462841
end apsc;
28472842
--
@@ -2859,22 +2854,12 @@ THE SOFTWARE.
28592854
begin
28602855
init_rm_alfabet;
28612856
--
2862-
l_top := tp_checksum
2863-
( '0' => 1, '1' => 1, '2' => 1, '3' => 1, '4' => 1, '5' => 1
2864-
, '6' => 2, '7' => 2, '8' => 2, '9' => 2, 'A' => 2, 'B' => 2
2865-
, 'C' => 3, 'D' => 3, 'E' => 3, 'F' => 3, 'G' => 3, 'H' => 3
2866-
, 'I' => 4, 'J' => 4, 'K' => 4, 'L' => 4, 'M' => 4, 'N' => 4
2867-
, 'O' => 5, 'P' => 5, 'Q' => 5, 'R' => 5, 'S' => 5, 'T' => 5
2868-
, 'U' => 0, 'V' => 0, 'W' => 0, 'X' => 0, 'Y' => 0, 'Z' => 0
2869-
);
2870-
l_bottom := tp_checksum
2871-
( '0' => 1, '1' => 2, '2' => 3, '3' => 4, '4' => 5, '5' => 0
2872-
, '6' => 1, '7' => 2, '8' => 3, '9' => 4, 'A' => 5, 'B' => 0
2873-
, 'C' => 1, 'D' => 2, 'E' => 3, 'F' => 4, 'G' => 5, 'H' => 0
2874-
, 'I' => 1, 'J' => 2, 'K' => 3, 'L' => 4, 'M' => 5, 'N' => 0
2875-
, 'O' => 1, 'P' => 2, 'Q' => 3, 'R' => 4, 'S' => 5, 'T' => 0
2876-
, 'U' => 1, 'V' => 2, 'W' => 3, 'X' => 4, 'Y' => 5, 'Z' => 0
2877-
);
2857+
for i in 1 .. 36
2858+
loop
2859+
l_chr := substr( '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, 1 );
2860+
l_top( l_chr ) := mod( trunc( ( i + 5 ) / 6 ), 6 );
2861+
l_bottom( l_chr ) := mod( i, 6 );
2862+
end loop;
28782863
--
28792864
l_val := l_val || 'A'; -- start code
28802865
for i in 1 .. length( p_val )
@@ -5471,7 +5456,6 @@ THE SOFTWARE.
54715456
l_p := 0;
54725457
for l in 1 .. 16
54735458
loop
5474-
--dbms_output.put_line( 'inithuf: ' || l || ' ' || p_bits( l + 1 ) );
54755459
for i in 1 .. p_bits( l + 1 )
54765460
loop
54775461
l_huffm_size( l_p ) := l;
@@ -5502,7 +5486,6 @@ THE SOFTWARE.
55025486
for p in 0 .. l_huffm_size.last - 1
55035487
loop
55045488
l_tmp := p_val( p + 1 );
5505-
--dbms_output.put_line( 'inithuf: ' || p || ' ' || l_huffm_code(p) || ' ' || l_huffm_size(p) || ' ' || l_tmp );
55065489
l_DC_AC_matrix( p_idx )( l_tmp )( 0 ) := l_huffm_code( p );
55075490
l_DC_AC_matrix( p_idx )( l_tmp )( 1 ) := l_huffm_size( p );
55085491
end loop;
@@ -5591,7 +5574,9 @@ THE SOFTWARE.
55915574
--
55925575
l_huffm_buf := 0;
55935576
l_huffm_bits := 0;
5594-
l_lastDCvalue := tp_tn( 0 => 0, 1 => 0, 2 => 0 );
5577+
l_lastDCvalue( 0 ) := 0;
5578+
l_lastDCvalue( 1 ) := 0;
5579+
l_lastDCvalue( 2 ) := 0;
55955580
end init_huffman;
55965581
--
55975582
procedure init_color( p_idx pls_integer, p_rgb varchar2 )
@@ -5617,7 +5602,6 @@ THE SOFTWARE.
56175602
l_buf number := bitand( p_code, power( 2, p_size ) - 1 );
56185603
l_bits pls_integer := l_huffm_bits + p_size;
56195604
begin
5620-
--dbms_output.put_line( 'bufferIt: ' || p_code || ' ' || p_size );
56215605
l_buf := l_buf * power( 2, 24 - l_bits );
56225606
l_buf := l_buf + l_huffm_buf - bitand( l_buf, l_huffm_buf );
56235607
while l_bits >= 8
@@ -5710,12 +5694,10 @@ THE SOFTWARE.
57105694
then
57115695
huffman_buffer( l_tmp2, l_bits );
57125696
end if;
5713-
-- xyab
57145697
l_idx := l_idx + 1;
57155698
l_r := 0;
57165699
for k in 1 ..63
57175700
loop
5718-
--dbms_output.put_line( 't: ' || k || ' ' || l_natural_order( k ) || ' ' || p_dct( l_natural_order( k ) ) );
57195701
l_tmp1 := p_dct( l_natural_order( k ) );
57205702
if l_tmp1 = 0
57215703
then
@@ -5741,7 +5723,6 @@ THE SOFTWARE.
57415723
l_bits := l_bits + 1;
57425724
l_tmp1 := trunc( l_tmp1 / 2 );
57435725
end loop;
5744-
--dbms_output.put_line( ' t: ' || l_r || ' ' || l_bits || ' ' || ( 16 * l_r + l_bits ) || ' ' || l_tmp2 );
57455726
l_r := 16 * l_r + l_bits;
57465727
huffman_buffer( l_DC_AC_matrix( l_idx )( l_r )( 0 )
57475728
, l_DC_AC_matrix( l_idx )( l_r )( 1 )
@@ -5786,7 +5767,6 @@ THE SOFTWARE.
57865767
l_idx pls_integer;
57875768
l_dct tp_tn;
57885769
begin
5789-
--dbms_output.put_line( 'forwardDCT' );
57905770
for i in 0 .. 7
57915771
loop
57925772
for j in 0 .. 7
@@ -5877,9 +5857,7 @@ THE SOFTWARE.
58775857
loop
58785858
l_idx := i * 8 + j;
58795859
l_dct( l_idx ) := round( l_block( i )( j ) * l_divisors( sign( p_comp ) )( l_idx ) );
5880-
--dbms_output.put( ' ' || l_dct( l_idx ) );
58815860
end loop;
5882-
--dbms_output.put_line( '' );
58835861
end loop;
58845862
return l_dct;
58855863
end dct;
@@ -5994,8 +5972,6 @@ THE SOFTWARE.
59945972
end loop;
59955973
end loop;
59965974
end if;
5997-
--dbms_output.put_line( l_m.count || 'x' || l_m(0).count );
5998-
--dbms_output.put_line( l_m.count || 'x' || l_m(l_m.last).count );
59995975
--
60005976
init_matrix( nvl( check_int( p_parm, 'quality', 100, 1 ), 100 ) );
60015977
init_huffman;

0 commit comments

Comments
 (0)