*! v 1.0.1 PR 01Jun95. STB-34 sbe13 program define _jprxrpa /* parses "clusters" */ version 4.0 local stuff "`1'" /* string to be parsed */ local prefixs "`2'" /* string of permitted one-character prefixes */ local items "`3'" /* items in error message if #clusters > #prefixes */ local nprefix=length("`prefixs'") local i 1 while `i'<=`nprefix' { local p`i'=substr("`prefixs'",`i',1) global S_p`i' global S_c`i' local i=`i'+1 } parse "`stuff'", parse(",") global S_1 0 /* # of comma-delimited clusters */ while "`1'"!="" { if "`1'"=="," { mac shift } global S_1 = $S_1+1 local clust$S_1 "`1'" mac shift } if "`clust${S_1}'"=="" { global S_1=$S_1-1 } if $S_1>`nprefix' { noi di in red "too many `items' specified" exit 198 } /* Disentangle each prefix:string cluster */ local i 1 while `i'<=$S_1 { parse "`clust`i''", parse("=:") local prefix = lower(substr("`1'",1,1)) local j 1 local found 0 while (`j'<=`nprefix') & !`found' { if "`prefix'"=="`p`j''" { global S_p`i' `prefix' global S_c`i' "`3'" local found 1 } local j=`j'+1 } if !`found' { noi di in red "invalid `clust`i''" exit 198 } local i = `i'+1 } end