/***************************************************************/ /* S A S S A M P L E L I B R A R Y */ /* */ /* NAME: TRABASE */ /* TITLE: SAMPLE BASE TRANTAB TABLES FOR NLS SUPPORT */ /* PRODUCT: BASE */ /* SYSTEM: ALL */ /* KEYS: NLS TRANTAB EUROPE */ /* PROCS: TRANTAB */ /* DATA: NONE */ /* */ /* SUPPORT: WINTERS,P. Herbert, P. UPDATE: 11Jun93 */ /* UPDATE: 10Nov93 MXK */ /* REF: */ /* MISC: */ /* */ /* The Purpose of this program is to build the default National*/ /* Language Tables for each operating system. This is done in */ /* several steps using a macro: */ /* */ /* STEP 1: Load the host-specific system table as a base for */ /* modifications */ /* STEP 2: Establish Operating System via SYSSCP variable, and */ /* execute relevent code for that operating system. */ /* STEP 3: For a given Operating System, load specific country */ /* based on value of COUNTRY= macro variable. */ /* */ /* The Tables that are generated for each Language/Op.Sys. are:*/ /* a. Local to Transport Format */ /* b. Transport to Local Format */ /* c. Uppercase */ /* d. Lowercase */ /* e. Character Classification (where necessary) */ /* f. Scanner Translation (where necessary) */ /* g. Sort Tables (where necessary) */ /* */ /* */ /* These are coded as examples and may be further modified. */ /* Source Code should be documented and saved to allow transfer*/ /* to future versions of the software. */ /* */ /* NOTE: The following naming conventions for tables a and b */ /* have been used: */ /* EBCDIC <-> OEM (PC-ASCII): eta, ate */ /* ISO <-> OEM (PC-ASCII): ita, ati */ /* */ /* EBCDIC used by MVS, CMS, and VSE */ /* OEM used by OS/2 (and Windows in OEM mode) */ /* equivalent to transport format */ /* ISO used by Unixes, Windows (=ANSI), and */ /* VMS (=DEC Multinational Character set) */ /* */ /* 10Nov93 MXK */ /* */ /***************************************************************/ options mprint; %macro BTABLE(country=NONE); %if &country = NONE %then %do; %put; %put; %put; %put Specify a valid Country to generate table examples; %put GERMANY FRANCE SPAIN ITALY UK; %put SWEDEN NORWAY DENMARK FINLAND; %put EXAMPLE: %nrstr(%BTABLE(COUNTRY=GERMANY)) ; %put; %put For a listing of default tables specify:; %put %nrstr(%BTABLE(COUNTRY=DEFAULT)); %put; %put; %end; %Else %if %UPCASE(&COUNTRY) = DEFAULT %then %do; * Code valid for all platforms ; proc trantab table=sasxpt nls; * Access default Local to Transport Table; list; proc trantab table=saslcl nls; * Access default Transport to Local Table; list; proc trantab table=sasucs nls; * Access default Uppercase Table ; list; proc trantab table=saslcs nls; * Access default Lowercase Table ; list; proc trantab table=sasccl nls; * Access default Displayable Character Table; list; proc trantab table=SYSCAN; rep 0000 '000102030405060708090A0B0C0D0E0F'X '101112131415161718191A1B1C1D1E1F'X '202122232425262728292A2B2C2D2E2F'X '303132333435363738393A3B3C3D3E3F'X '404142434445464748494A4B4C4D4E4F'X '505152535455565758595A5B5C5D5E5F'X '606162636465666768696A6B6C6D6E6F'X '707172737475767778797A7B7C7D7E7F'X '808182838485868788898A8B8C8D8E8F'X '909192939495969798999A9B9C9D9E9F'X 'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'X 'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'X 'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'X 'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'X 'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'X 'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'X; * Generate Default Syntax Tables; list; %end; %ELSE %DO; %* Generate Operating System Specific Tables; PROC TRANTAB TABLE=SASXPT NLS; %IF &SYSSCP = OS or &SYSSCP = CMS or &SYSSCP = VSE %THEN %DO; %if %UPCASE(&COUNTRY) = GERMANY %then %do; * German Conversion Tables for EBCDIC ; load table=sasxpt nls; rep '4A'x '8E'x; /* Large A umlaut > cent > Large A umlaut */ rep '4F'x '21'x; /* Exclamation > vert.bar > Exclamation */ rep '5A'x '9A'x; /* Large U umlaut > excl. > Large U umlaut */ rep '6A'x '94'x; /* small o umlaut > dash.bar > small o umlaut */ rep '7C'x '40'x; /* paragraph > at-sign .note stays same */ rep 'A1'x 'E1'x; /* s sharp > tilde > s sharp */ rep 'C0'x '84'x; /* small a umlaut > l.curl > small a umlaut */ rep 'D0'x '81'x; /* small u umlaut > r.curl > small u umlaut */ rep 'E0'x '99'x; /* Large O umlaut > back slash> Large O umlaut */ save table=gereta; load table=saslcl nls; rep '15'x '7C'x; /* paragraph > ND > paragraph */ rep '21'x '4F'x; /* exclamation > l.U Umlaut> exclamation */ rep '81'x 'D0'x; /* small u umlaut > ND > small u umlaut */ rep '84'x 'C0'x; /* small a umlaut > ND > small a umlaut */ rep '8E'x '4A'x; /* Large A umlaut > ND > Large A umlaut */ rep '94'x '6A'x; /* small o umlaut > ND > small o umlaut */ rep '99'x 'E0'x; /* Large O umlaut > ND > large O umlaut */ rep '9A'x '5A'x; /* Large U umlaut > ND > large U umlaut */ rep 'E1'x 'A1'x; /* s sharp > ND > s sharp */ save table=gerate; load table=sasucs nls; rep '6A'x 'E0'x ; rep 'C0'x '4A'x ; rep 'D0'x '5A'x ; save table=gerupc; load table=saslcs nls; rep 'E0'x '6A'x; rep '4A'x 'C0'x; rep '5A'x 'D0'x; save table=gerlow; load table=sasccl nls; rep 'c0'x '02'x; rep 'd0'x '02'x; rep '6a'x '02'x; rep 'a1'x '02'x; rep '4a'x '01'x; rep '5a'x '01'x; rep 'e0'x '01'x; save table=gerccl; * German sort table for EBCDIC ; load table=german; rep '00'x '000102030405060708090A0B0C0D0E0F'x; rep '10'x '101112131415161718191A1B1C1D1E1F'x; rep '20'x '202122232425262728292A2B2C2D2E2F'x; rep '30'x '303132333435363738393A3B3C3D3E3F'x; rep '40'x '40414243444546474849C14A4B4C4D58'x; rep '50'x '4E4F5051525354555657E4595A5B5C5D'x; rep '60'x '5E5F60616263646566679568696A6B6C'x; rep '70'x '6D6E6F707172737475767778797A7B7C'x; rep '80'x '7D7E808182838485868788898A8B8C8D'x; rep '90'x '8E8F9091929394969798999A9B9C9D9E'x; rep 'A0'x '9FA1A0A2A3A5A6A7A8A9AAABACADAEAF'x; rep 'B0'x 'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'x; rep 'C0'x '7FC0C2C3C4C5C6C7C8C9CACBCCCDCECF'x; rep 'D0'x 'A4D0D1D2D3D4D5D7D8D9DADBDCDDDEDF'x; rep 'E0'x 'D6E0E1E2E3E5E6E7E8E9EAEBECEDEEEF'x; rep 'F0'x 'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'x; save; %end; %else %if %UPCASE(&COUNTRY) = DENMARK or %UPCASE(&COUNTRY) = NORWAY %then %do; * Danish/Norwegian Tables for EBCDIC ; load table=sasxpt nls; rep '06'x '7D'x; /* symmetric (86) */ rep '14'x '40'x; /* symmetric (9D) */ rep '1A'x '23'x; /* symmetric (92) */ rep '1B'x '24'x; /* symmetric (8F) */ rep '21'x '7E'x; /* symmetric (81) */ rep '31'x '7B'x; /* symmetric (91) */ rep '3B'x 'E5'x; /* symmetric (9B) */ rep '4F'x '21'x; /* Exclamation > vert.bar > | Exclamation */ rep '57'x '7C'x; /* symmetric (AF-21) */ rep '5A'x 'AF'x; /* cross o > excl. > ! cross o */ rep '5B'x '8F'x; /* L. A circle > dollar > $ L. A circle */ rep '6A'x '9B'x; /* small o slash > dash.bar > : small o slash */ rep '7B'x '92'x; /* Large AE > hash > # Large AE */ rep '7C'x '9D'x; /* Large O slash > at-sign > @ Large O slash */ rep 'A1'x '81'x; /* small u umlaut > tilde > ~ small u umlaut*/ rep 'C0'x '91'x; /* small ae > l.curl > { small ae */ rep 'D0'x '86'x; /* small a circle > r.curl > } small a circle*/ save table=daneta; load table=saslcl nls; rep '21'x '4F'x; /* exclamation > small o cr> | exclamation */ rep '23'x '1A'x; /* symmetric (7B) */ rep '24'x '1B'x; /* symmetric (5B) */ rep '40'x '14'x; /* symmetric (7C) */ rep '7B'x '31'x; /* symmetric (C0) */ rep '7C'x '57'x; /* symmetric (4F-21) */ rep '7D'x '06'x; /* symmetric (D0) */ rep '7E'x '21'x; /* symmetric (A1) */ rep '81'x 'A1'x; /* small u umlaut > ND > ~ small u umlau*/ rep '86'x 'D0'x; /* small a circle > ND > } small a circl*/ rep '8F'x '5B'x; /* Large A circle > ND > $ Large A circl*/ rep '91'x 'C0'x; /* small ae > ND > { small ae */ rep '92'x '7B'x; /* Large AE > ND > # Large AE */ rep '9B'x '6A'x; /* small o slash > ND > : small o slash*/ rep '9D'x '7C'x; /* Large O slash > ND > @ Large O slash*/ rep 'AF'x '5A'x; /* cross o > ND > ! cross o */ rep 'E5'x '3B'x; /* symmetric (6A) */ save table=danate; load table=sasucs nls; rep '6A'x '7C'x; /* : small o slash > @ large O slash */ rep 'C0'x '7B'x; /* { small ae > # large AE */ rep 'D0'x '5B'x; /* } small a circle > $ large A circle */ save table=danupc; load table=saslcs nls; rep '5B'x 'D0'x; /* $ large A circle > } small a circle */ rep '7B'x 'C0'x; /* # large AE > { small ae */ rep '7C'x '6A'x; /* @ large O slash > : small o slash */ save table=danlow; %end; %else %if %UPCASE(&COUNTRY) = SWEDEN or %UPCASE(&COUNTRY) = FINLAND %then %do; * Swedish/Finnish Tables for EBCDIC ; load table=sasxpt nls; rep '4A'x '15'x; /* paragraph > cent > Paragraph */ rep '4F'x '21'x; /* Exclamation > vert.bar > Exclamation */ rep '5A'x '9A'x; /* cross o > excl. > Large U umlaut*/ rep '5B'x '8F'x; /* L. A circle > dollar > L. A circle */ rep '6A'x '94'x; /* small o umlaut > dash.bar > small o umlaut*/ rep '79'x '82'x; /* sm. e r. accent > quote > sm. e r. accnt*/ rep '7B'x '8E'x; /* Large A umlaut > hash > Large A umlaut*/ rep '7C'x '99'x; /* Large O umlaut > at-sign > Large O umlaut*/ rep 'A1'x '81'x; /* small u umlaut > tilde > small u umlaut*/ rep 'C0'x '84'x; /* small a umlaut > l.curl > small a umlaut*/ rep 'D0'x '86'x; /* small a circle > r.curl > small a circle*/ rep 'E0'x '90'x; /* l. E r. accent > backslash > l. E r. accent*/ save table=sweeta; load table=saslcl nls; rep '15'x '4A'x; /* paragraph > ND > paragraph */ rep '21'x '4F'x; /* exclamation > small o cr> exclamation */ rep '81'x 'A1'x; /* small u umlaut > ND > small u umlaut */ rep '82'x '79'x; /* small e r. accn> ND > small e r. accn */ rep '84'x 'C0'x; /* small a umlaut > ND > small a umlaut */ rep '86'x 'D0'x; /* small a circle > ND > small a circle */ rep '8E'x '7B'x; /* Large A umlaut > ND > Large A umlaut */ rep '8F'x '5B'x; /* L. A circle > ND > Large A circle */ rep '90'x 'E0'x; /* L. E r. accn > ND > L. E r. accn */ rep '94'x '6A'x; /* small o umlaut > ND > small o umlaut */ rep '99'x '7C'x; /* Large O umlaut > ND > Large O umlaut */ rep '9A'x '5A'x; /* Large U umlaut > ND > small o cross */ save table=sweate; load table=sasucs nls; rep '6A'x '7C'x; rep '79'x 'E0'x; rep 'C0'x '7B'x; rep 'D0'x '5B'x; save table=sweupd; load table=saslcs nls; rep '7C'x '6A'x ; rep 'E0'x '79'x ; rep '7B'x 'C0'x ; rep '5B'x 'D0'x ; save table=swelow; %end; %else %if %UPCASE(&COUNTRY) = FRANCE %then %do; * French Tables for EBCDIC ; load table=sasxpt nls; rep '42'x '83'x; /* small a circ. => small a circ. ( ) */ rep '43'x '84'x; /* small a diaeresis => small a diaeresis ( ) */ rep '44'x '40'x; /* at-sign => at-sign ( ) */ rep '48'x '5C'x; /* back slash => back slash ( ) */ rep '4A'x 'F8'x; /* degree sign > cent > degree sign */ rep '4F'x '21'x; /* Exclamation > vert.bar > Exclamation */ rep '51'x '7B'x; /* left curly bracket => left curly bracket ( )*/ rep '52'x '88'x; /* small e circ. => small e circ. ( ) */ rep '53'x '89'x; /* small e diaeresis => small e diaeresis ( ) */ rep '54'x '7D'x; /* right curly bracket => right curly bracket ( )*/ rep '56'x '8C'x; /* small i circ. => small i circ. ( ) */ rep '57'x '8B'x; /* small i diaeresis => small i diaeresis ( ) */ rep '58'x '8D'x; /* small i left => small i left */ rep '5A'x '15'x; /* paragraph > excl. > paragraph */ rep '6A'x '97'x; /* small u left > dash.bar > small u left */ rep '7B'x '9C'x; /* pound sterling > hash > pound sterling */ rep '7C'x '85'x; /* small a left > at-sign > small a left */ rep 'B1'x '23'x; /* sharp => sharp ( ) */ rep 'BB'x '7C'x; /* vertical bar => vertical bar ( ) */ rep 'C0'x '82'x; /* small e right > l.curl > small e right */ rep 'CB'x '93'x; /* small o circ. => small o circ. ( ) */ rep 'CC'x '94'x; /* small o diaeresis => small o diaeresis ( ) */ rep 'CD'x '95'x; /* small o left => small o left */ rep 'CE'x 'A2'x; /* small o right => small o right */ rep 'D0'x '8A'x; /* small e left > r.curl > small e left */ rep 'DB'x '96'x; /* small u circ. => small u circ. ( ) */ rep 'DC'x '81'x; /* small u diaeresis => small u diaeresis ( ) */ rep 'DE'x 'A3'x; /* small u right => small u right (:) */ rep 'E0'x '87'x; /* small c cedilla > back slash> small c cedilla */ save table=freeta; load table=saslcl nls; rep '15'x '7C'x; /* paragraph > ND > paragraph */ rep '21'x '4F'x; /* exclamation > l.U Umlaut> exclamation */ rep '23'x 'B1'x; /* sharp => sharp */ rep '40'x '44'x; /* at-sign => at-sign */ rep '83'x '42'x; /* small a circ. => small a circ. */ rep '84'x '43'x; /* small a diaeresis => small a diaeresis */ rep '5C'x '48'x; /* back slash => back slash */ rep '7B'x '51'x; /* left curly bracket => left curly bracket */ rep '7C'x 'BB'x; /* vertical bar => vertical bar */ rep '7D'x '54'x; /* right curly bracket => right curly bracket */ rep '81'x 'DC'x; /* small u diaeresis => small u diaeresis */ rep '82'x 'C0'x; /* small e right > ND > small e right */ rep '85'x '7C'x; /* small a left > ND > small a left */ rep '87'x 'E0'x; /* small c cedilla> ND > small c cedilla */ rep '88'x '52'x; /* small e circ. => small e circ. */ rep '89'x '53'x; /* small e diaeresis => small e diaeresis */ rep '8C'x '56'x; /* small i circ. => small i circ. */ rep '8B'x '57'x; /* small i diaeresis => small i diaeresis */ rep '8D'x '58'x; /* small i left => small i left */ rep '8A'x 'D0'x; /* small e left > ND > small e left */ rep '93'x 'CB'x; /* small o circ. => small o circ. */ rep '94'x 'CC'x; /* small o diaeresis => small o diaeresis */ rep '95'x 'CD'x; /* small o left => small o left */ rep '96'x 'DB'x; /* small u circ. => small u circ. */ rep '97'x '6A'x; /* small u left > ND > small u left */ rep '9C'x '7B'x; /* pound sterling > ND > pound sterling */ rep 'A2'x 'CE'x; /* small o right => small o right */ rep 'A3'x 'DE'x; /* small u right => small u right */ rep 'F8'x '4A'x; /* degree sign > ND > degree sign */ save table=freate; load table=sasucs nls ; rep '42'x 'C1'x ; /* small a circ. ( ) => A */ rep 'C0'x 'c5'x ; /* small e right ({) => E */ rep '7c'x 'c1'x ; /* small a left (@) => A */ rep '43'x 'c1'x ; /* small a diaeresis ( ) => A */ rep 'd0'x 'c5'x ; /* small e left (}) => E */ rep '52'x 'c5'x ; /* small e circ. ( ) => E */ rep '53'x 'c5'x ; /* small e diaeresis ( ) => E */ rep '56'x 'c9'x ; /* small i circ. ( ) => I */ rep '57'x 'c9'x ; /* small i diaeresis ( ) => I */ rep 'cb'x 'd6'x ; /* small o circ. ( ) => O */ rep '6a'x 'e4'x ; /* small u left (:) => U */ rep 'db'x 'e4'x ; /* small i circ. ( ) => U */ rep 'dc'x 'e4'x ; /* small u diaeresis ( ) => U */ rep 'e0'x 'c3'x ; /* small c cedilla (\) => C */ save table=freucs ; %end; %else %if %UPCASE(&COUNTRY) = ITALY %then %do; * Italian Tables for EBCDIC ; load table=sasxpt nls; rep '4F'x '21'x; /* Exclamation > vert.bar > Exclamation */ rep '5A'x '82'x; /* small e right > excl. > small e right */ rep '6A'x '95'x; /* small o left > dash.bar > small o left */ rep '79'x '97'x; /* small u left > quote > small u left */ rep '7B'x '9C'x; /* pound sterling > hash > pound sterling */ rep '7C'x '15'x; /* paragraph > at-sign > paragraph */ rep 'A1'x '8D'x; /* small i left > tilde > small i left */ rep 'C0'x '85'x; /* small a left > l.curl > small a left */ rep 'D0'x '8A'x; /* small e left > r.curl > small e left */ rep 'E0'x '87'x; /* small c cedilla > back slash> small c cedilla */ save table=itaeta; load table=saslcl nls; rep '15'x '7C'x; /* paragraph > ND > paragraph */ rep '21'x '4F'x; /* exclamation > l.U Umlaut> exclamation */ rep '82'x '5A'x; /* small e right > ND > small e right */ rep '85'x 'C0'x; /* small a left > ND > small a left */ rep '87'x 'E0'x; /* small c ced. > ND > small c ced. */ rep '8A'x 'D0'x; /* small e left > ND > small e left */ rep '8D'x 'A1'x; /* small i left > ND > small i left */ rep '95'x '6A'x; /* small o left > ND > small o left */ rep '97'x '79'x; /* small u left > ND > small u left */ rep '9C'x '7B'x; /* pound sterling > ND > pound sterling */ save table=itaate; %end; %else %if %UPCASE(&COUNTRY) = SPAIN %then %do; * Spanish Tables for EBCDIC/ASCII ; load table=sasxpt nls; rep '9A'x 'A6'x; /* ordfeminine > > ordfeminine */ rep '9B'x 'A7'x; /* ordmasculine > > ordmasculine */ rep '45'x 'A0'x; /* a acute > > a acute */ rep '51'x '82'x; /* e acute > > e acute */ rep '55'x 'A1'x; /* i acute > > i acute */ rep 'CE'x 'A2'x; /* o acute > > o acute */ rep 'DE'x 'A3'x; /* u acute > > u acute */ rep 'DC'x '81'x; /* u diar. > > u diar. */ rep '65'x 'B5'x; /* A acute > > A acute */ rep '71'x '90'x; /* E acute > > E acute */ rep '75'x 'D6'x; /* I acute > > I acute */ rep 'EE'x 'E0'x; /* O acute > > O acute */ rep 'FE'x 'E9'x; /* U acute > > U acute */ rep 'FC'x '9A'x; /* U diar. > > U diar. */ rep '6A'x 'A4'x; /* small n tilde > > small n tilde */ rep '7B'x 'A5'x; /* Large N tilde > hash > Large N tilde */ rep 'AA'x 'AD'x; /* inv. exclam. > ND > inv. exclam. */ rep 'AB'x 'A8'x; /* inv. question > ND > inv. question */ rep 'B1'x '9C'x; /* pound. sterling > ND > pound sterling */ rep 'BB'x '21'x; /* exclamation > > exclamation */ save table=spaeta; load table=saslcl nls; rep 'A0'x '45'x; /* a acute > > a acute */ rep '82'x '51'x; /* e acute > > e acute */ rep 'A1'x '55'x; /* i acute > > i acute */ rep 'A2'x 'CE'x; /* o acute > > o acute */ rep 'A3'x 'DE'x; /* u acute > > u acute */ rep '81'x 'DC'x; /* u diar. > > u diar. */ rep 'B5'x '65'x; /* A acute > > A acute */ rep '90'x '71'x; /* E acute > > E acute */ rep 'D6'x '75'x; /* I acute > > I acute */ rep 'E0'x 'EE'x; /* O acute > > O acute */ rep 'E9'x 'FE'x; /* U acute > > U acute */ rep '9A'x 'FC'x; /* U diar. > > U diar. */ rep '9C'x 'B1'x; /* pound sterling > ND > pound sterling */ rep 'A4'x '6A'x; /* small n Tilde > ND > Small n Tilde */ rep 'A5'x '7B'x; /* Large N tilde > ND > Large N tilde */ rep 'A8'x 'AB'x; /* inv. question > ND > inv. question */ rep 'AD'x 'AA'x; /* inv. exclam. > ND > inv. exclam. */ rep 'A6'x '9A'x; /* ordfeminine > > ordfeminine */ rep 'A7'x '9B'x; /* ordmasculine > > ordmasculine */ save table=spaate; load table=sasucs nls; rep '6A'x '7B'x; /* n tilde */ rep '45'x '65'x; /* a acute */ rep '51'x '71'x; /* e acute */ rep '55'x '75'x; /* i acute */ rep 'CE'x 'EE'x; /* o acute */ rep 'DE'x 'FE'x; /* u acute */ rep 'DC'x 'FC'x; /* u diar. */ save table=spaupc; load table=saslcs nls; rep '7B'x '6A'x; /* N tilde */ rep '65'x '45'x; /* A acute */ rep '71'x '51'x; /* E acute */ rep '75'x '55'x; /* I acute */ rep 'EE'x 'CE'x; /* O acute */ rep 'FE'x 'DE'x; /* U acute */ rep 'FC'x 'DC'x; /* U diar. */ save table=spalow; %end; %END; %ELSE %IF &SYSSCP = WIN or &SYSSCP = VMS or %quote(&SYSSCP) = DEVHOST or %substr(%quote(&SYSSCP),1,2) = %quote(HP) or %substr(%quote(&SYSSCP),1,3) = %quote(SUN) or %quote(&SYSSCP) = %quote(ULTRIX) or %quote(&SYSSCP) = %quote(DG UX) or %quote(&SYSSCP) = %quote(RS6000) or %quote(&SYSSCP) = %quote(AIX_370) or %quote(&SYSSCP) = %quote(AIX_ESA) or %quote(&SYSSCP) = %quote(SINIX) %THEN %DO; %if %UPCASE(&COUNTRY) = SPAIN %then %do; * Spanish Tables for ISO / ASCII (OEM) ; load table=sasxpt nls; rep 'E1'x 'A0'x; /* a acute > > a acute */ rep 'E9'x '82'x; /* e acute > > e acute */ rep 'ED'x 'A1'x; /* i acute > > i acute */ rep 'F3'x 'A2'x; /* o acute > > o acute */ rep 'FA'x 'A3'x; /* u acute > > u acute */ rep 'FC'x '81'x; /* u diar. > > u diar. */ rep 'C1'x 'B5'x; /* A acute > > A acute */ rep 'C9'x '90'x; /* E acute > > E acute */ rep 'CD'x 'D6'x; /* I acute > > I acute */ rep 'D3'x 'E0'x; /* O acute > > O acute */ rep 'DA'x 'E9'x; /* U acute > > U acute */ rep 'DC'x '9A'x; /* U diar. > > U diar. */ rep 'F1'x 'A4'x; /* small n tilde > > small n tilde */ rep 'D1'x 'A5'x; /* Large N tilde > > Large N tilde */ rep 'A1'x 'AD'x; /* inv. exclam. > > inv. exclam. */ rep 'BF'x 'A8'x; /* inv. question > > inv. question */ rep 'A3'x '9C'x; /* pound. sterling > > pound sterling */ rep 'AA'x 'A6'x; /* ord. fem. > > ord. fem. */ rep 'BA'x 'A7'x; /* ord. mas. > > ord. mas. */ save table=spaita; load table=saslcl nls; rep 'A0'x 'E1'x; /* a acute > > a acute */ rep '82'x 'E9'x; /* e acute > > e acute */ rep 'A1'x 'ED'x; /* i acute > > i acute */ rep 'A2'x 'F3'x; /* o acute > > o acute */ rep 'A3'x 'FA'x; /* u acute > > u acute */ rep '81'x 'FC'x; /* u diar. > > u diar. */ rep 'B5'x 'C1'x; /* A acute > > A acute */ rep '90'x 'C9'x; /* E acute > > E acute */ rep 'D6'x 'CD'x; /* I acute > > I acute */ rep 'E0'x 'D3'x; /* O acute > > O acute */ rep 'E9'x 'DA'x; /* U acute > > U acute */ rep '9A'x 'DC'x; /* U diar. > > U diar. */ rep '9C'x 'A3'x; /* pound. sterling > ND > pound sterling */ rep 'A4'x 'F1'x; /* small n tilde > ND > Small n tilde */ rep 'A5'x 'D1'x; /* Large N tilde > ND > Large N tilde */ rep 'A8'x 'BF'x; /* inv. question > ND > inv. question */ rep 'AD'x 'A1'x; /* inv. exclam. > ND > inv. exclam. */ rep 'A6'x 'AA'x; /* ord. fem. > > ord. fem. */ rep 'A7'x 'BA'x; /* ord. mas. > > ord. mas. */ save table=spaati; load table=sasucs nls; rep 'F1'x 'D1'x; /* n tilde */ rep 'E1'x 'C1'x; /* a acute */ rep 'E9'x 'C9'x; /* e acute */ rep 'ED'x 'CD'x; /* i acute */ rep 'F3'x 'D3'x; /* o acute */ rep 'FA'x 'DA'x; /* u acute */ rep 'FC'x 'DC'x; /* u diar. */ save table=spaupc; load table=saslcs nls; rep 'D1'x 'F1'x; /* N tilde */ rep 'C1'x 'E1'x; /* A acute */ rep 'C9'x 'E9'x; /* E acute */ rep 'CD'x 'ED'x; /* I acute */ rep 'D3'x 'F3'x; /* O acute */ rep 'DA'x 'FA'x; /* U acute */ rep 'DC'x 'FC'x; /* U diar. */ save table=spalow; %end; %if %UPCASE(&COUNTRY) = FRANCE %then %do; * French Tables for ISO / ASCII (OEM) ; load table=sasxpt nls; rep 'E0'x '85'x; /* a grave > > a grave */ rep 'E2'x '83'x; /* a circumflex > > a circumflex */ rep 'E7'x '87'x; /* c cedilla > > c cedilla */ rep 'F4'x '93'x; /* o circumflex > > o circumflex */ rep 'E9'x '82'x; /* e acute > > e acute */ rep 'E8'x '8A'x; /* e grave > > e grave */ rep 'EA'x '88'x; /* e circumflex > > e circumflex */ rep 'EB'x '89'x; /* e diaeresis > > e diaeresis */ rep 'E4'x '84'x; /* a diaeresis > > a diaeresis */ rep 'F6'x '94'x; /* o diaeresis > > o diaeresis */ rep 'FC'x '81'x; /* u diaeresis > > u diaeresis */ rep 'EF'x '8B'x; /* i diaeresis > > i diaeresis */ rep 'EE'x '8C'x; /* i circumflex > > i circumflex */ rep 'FB'x '96'x; /* u circumflex > > u circumflex */ rep 'F9'x '97'x; /* u grave > > u grave */ rep 'B0'x 'F8'x; /* degree sign > > degree sign */ rep 'A3'x '9C'x; /* pound. sterling > > pound sterling */ save table=fraita; load table=saslcl nls; rep '85'x 'E0'x; /* a grave > > a grave */ rep '83'x 'E2'x; /* a circumflex > > a circumflex */ rep '87'x 'E7'x; /* c cedilla > > c cedilla */ rep '93'x 'F4'x; /* o circumflex > > o circumflex */ rep '82'x 'E9'x; /* e acute > > e acute */ rep '8A'x 'E8'x; /* e grave > > e grave */ rep '88'x 'EA'x; /* e circumflex > > e circumflex */ rep '89'x 'EB'x; /* e diaeresis > > e diaeresis */ rep '84'x 'E4'x; /* a diaeresis > > a diaeresis */ rep '94'x 'F6'x; /* o diaeresis > > o diaeresis */ rep '81'x 'FC'x; /* u diaeresis > > u diaeresis */ rep '8B'x 'EF'x; /* i diaeresis > > i diaeresis */ rep '8C'x 'EE'x; /* i circumflex > > i circumflex */ rep '96'x 'FB'x; /* u circumflex > > u circumflex */ rep '97'x 'F9'x; /* u grave > > u grave */ rep 'F8'x 'B0'x; /* degree sign > > degree sign */ rep '9C'x 'A3'x; /* pound sterling > ND > pound sterling */ save table=fraati; load table=saslcl nls; rep '7C'x 'E0'x; /* a grave > > a grave */ rep '42'x 'E2'x; /* a circumflex > > a circumflex */ rep 'E0'x 'E7'x; /* c cedilla > > c cedilla */ rep 'CB'x 'F4'x; /* o circumflex > > o circumflex */ rep 'C0'x 'E9'x; /* e acute > > e acute */ rep 'D0'x 'E8'x; /* e grave > > e grave */ rep '52'x 'EA'x; /* e circumflex > > e circumflex */ rep '53'x 'EB'x; /* e diaeresis > > e diaeresis */ rep '43'x 'E4'x; /* a diaeresis > > a diaeresis */ rep 'CC'x 'F6'x; /* o diaeresis > > o diaeresis */ rep 'DC'x 'FC'x; /* u diaeresis > > u diaeresis */ rep '57'x 'EF'x; /* i diaeresis > > i diaeresis */ rep '56'x 'EE'x; /* i circumflex > > i circumflex */ rep 'DB'x 'FB'x; /* u circumflex > > u circumflex */ rep '6A'x 'F9'x; /* u grave > > u grave */ rep '4A'x 'B0'x; /* degree sign > > degree sign */ rep '7B'x 'A3'x; /* pound sterling > ND > pound sterling */ rep '5A'x 'A7'x; /* paragraph > > paragraph */ save table=fraeti; %end; %else %if %UPCASE(&COUNTRY) = DENMARK or %UPCASE(&COUNTRY) = NORWAY %then %do; * Danish Tables for ISO / ASCII (OEM) ; load table=sasxpt nls; rep 'C6'x '92'x; /* AE > > AE */ rep 'C5'x '8F'x; /* A overcircle > > A overcircle */ rep 'D8'x '9D'x; /* O slash > > O slash */ rep 'E6'x '91'x; /* ae > > ae */ rep 'F8'x '9B'x; /* o slash > > o slash */ rep 'E5'x '86'x; /* a overcircle > > a overcircle */ save table=danita; load table=saslcl nls; rep '92'x 'C6'x; /* AE > > AE */ rep '8F'x 'C5'x; /* A overcircle > > A overcircle */ rep '9D'x 'D8'x; /* O slash > > O slash */ rep '91'x 'E6'x; /* ae > > ae */ rep '9B'x 'F8'x; /* o slash > > o slash */ rep '86'x 'E5'x; /* a overcircle > > a overcircle */ save table=danati; %end; %else %if %UPCASE(&COUNTRY) = SWEDEN or %UPCASE(&COUNTRY) = FINLAND %then %do; * Swedish Tables for ISO / ASCII (OEM) ; load table=sasxpt nls; rep 'C4'x '8E'x; /* A umlaut > > A umlaut */ rep 'C5'x '8F'x; /* A overcircle > > A overcircle */ rep 'D6'x '99'x; /* O umlaut > > O umlaut */ rep 'C9'x '90'x; /* E acute > > E acute */ rep 'E4'x '84'x; /* a umlaut > > a umlaut */ rep 'E5'x '86'x; /* a overcircle > > a overcircle */ rep 'F6'x '94'x; /* o umlaut > > u umlaut */ rep 'E9'x '82'x; /* e acute > > e acute */ save table=sweita; load table=saslcl nls; rep '8E'x 'C4'x; /* A umlaut > > A umlaut */ rep '8F'x 'C5'x; /* A overcircle > > A overcircle */ rep '99'x 'D6'x; /* O umlaut > > O umlaut */ rep '90'x 'C9'x; /* E acute > > E acute */ rep '84'x 'E4'x; /* a umlaut > > a umlaut */ rep '86'x 'E5'x; /* a overcircle > > a overcircle */ rep '94'x 'F6'x; /* o umlaut > > u umlaut */ rep '82'x 'E9'x; /* e acute > > e acute */ save table=sweati; %end; %else %IF %UPCASE(&COUNTRY) = GERMANY %then %do; * German Tables for ISO / ASCII (OEM) ; load table=sasxpt nls; rep 'C4'x '8E'x; /* Large A umlaut > > Large A umlaut */ rep 'D6'x '99'x; /* Large O umlaut > > Large O umlaut */ rep 'DC'x '9A'x; /* Large U umlaut > > Large U umlaut */ rep 'E4'x '84'x; /* small a umlaut > > small a umlaut */ rep 'F6'x '94'x; /* small o umlaut > > small o umlaut */ rep 'FC'x '81'x; /* small u umlaut > > small u umlaut */ rep 'DF'x 'E1'x; /* s sharp > > s sharp */ save table=gerita; load table=saslcl nls; rep '8E'x 'C4'x; /* Large A umlaut > > Large A umlaut */ rep '99'x 'D6'x; /* Large O umlaut > > Large O umlaut */ rep '9A'x 'DC'x; /* Large U umlaut > > Large U umlaut */ rep '84'x 'E4'x; /* small a umlaut > > small a umlaut */ rep '94'x 'F6'x; /* small o umlaut > > small o umlaut */ rep '81'x 'FC'x; /* small u umlaut > > small u umlaut */ rep 'E1'x 'DF'x; /* s sharp > > s sharp */ save table=gerati; %end; %END; /*---------------------------------------------------------------*/ /*-- catch-all, for those SYSSCPine we havent dreamed of yet! --*/ /*---------------------------------------------------------------*/ %else %do; %put *** No default tables for &SYSSCP. Check receiving platform; %put *** ie: VMS, OS, etc....; %end; QUIT; %END; %mend; %btable;