Online File

How to use this page


Rick Aster: Professional SAS Programming Shortcuts: Contents

Chapter 52
Program
Chemical elements (lookup arrays)


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;

 O /\

Global
Statements

RICK ASTER

SAS

BOOKS

Tech | Dictionary

Download | Rastinate

Rick Aster

Professional SAS Programming Shortcuts

Contents/Online Files

Corrections

Catalog Page