Online File
Rick Aster: Professional SAS Programming Shortcuts: Contents
DATA _NULL_;
ARRAY ELSYM {109} $ 2 _TEMPORARY_ (
'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne',
'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca',
'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn',
'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr',
'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn',
'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd',
'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb',
'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg',
'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th',
'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm',
'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt');
ARRAY ELNAME {109} $ 17 _TEMPORARY_ (
'Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron',
'Carbon', 'Nitrogen', 'Oxygen', 'Fluorine', 'Neon',
'Sodium', 'Magnesium', 'Aluminum', 'Silicon', 'Phosphorus',
'Sulfur', 'Chlorine', 'Argon', 'Potassium', 'Calcium',
'Scandium', 'Titanium', 'Vanadium', 'Chromium', 'Manganese',
'Iron', 'Cobalt', 'Nickel', 'Copper', 'Zinc',
'Gallium', 'Germanium', 'Arsenic', 'Selenium', 'Bromine',
'Krypton', 'Rubidium', 'Strontium', 'Yttrium', 'Zirconium',
'Niobium', 'Molybdenum', 'Technetium', 'Ruthenium', 'Rhodium',
'Palladium', 'Silver', 'Cadmium', 'Indium', 'Tin',
'Antimony', 'Tellurium', 'Iodine', 'Xenon', 'Cesium',
'Barium', 'Lanthanum', 'Cerium', 'Praseodymium', 'Neodymium',
'Prometheum', 'Samarium', 'Europium', 'Gadolinium', 'Terbium',
'Dysprosium', 'Holmium', 'Erbium', 'Thulium', 'Ytterbium',
'Lutetium', 'Hafnium', 'Tantalum', 'Tungsten', 'Rhenium',
'Osmium', 'Iridium', 'Platinum', 'Gold', 'Mercury',
'Thallium', 'Lead', 'Bismuth', 'Polonium', 'Astatine',
'Radon', 'Francium', 'Radium', 'Actinium', 'Thorium',
'Protactinium', 'Uranium', 'Neptunium', 'Plutonium', 'Americium',
'Curium', 'Berkelium', 'Californium', 'Einsteinium', 'Fermium',
'Mendelevium', 'Nobelium', 'Lawrencium', 'Rutherfordium', 'Dubnium',
'Seaborgium', 'Bohrium', 'Hassium', 'Meitnerium');
NUMBER = 10;
SYMBOL = ELSYM{NUMBER};
PUT SYMBOL=;
NUMBER = .;
SYMBOL = 'Zn';
DO I = LBOUND(ELSYM) TO HBOUND(ELSYM) UNTIL(NUMBER);
IF SYMBOL = ELSYM{I} THEN NUMBER = I;
END;
PUT SYMBOL= NUMBER=;
NUMBER = .;
SYMBOL = 'O';
NAME = ' ';
DO I = LBOUND(ELSYM) TO HBOUND(ELSYM) UNTIL(NUMBER);
IF SYMBOL = ELSYM{I} THEN DO;
NUMBER = I;
NAME = ELNAME{NUMBER};
END;
END;
PUT SYMBOL= NUMBER= NAME=;
DECLARE HASH ELEMENT(ORDERED: 'A');
ELEMENT.DEFINEKEY('NUMBER');
ELEMENT.DEFINEDATA('NUMBER', 'SYMBOL', 'NAME');
ELEMENT.DEFINEDONE();
DO NUMBER = LBOUND(ELSYM) TO HBOUND(ELSYM);
SYMBOL = ELSYM{NUMBER};
NAME = ELNAME{NUMBER};
ELEMENT.ADD();
END;
NUMBER = 4;
ELEMENT.FIND();
PUT (NUMBER SYMBOL NAME) (=);
NUMBER = 8;
ELEMENT.FIND();
PUT (NUMBER SYMBOL NAME) (=);
RUN;