1/* 2 * @progname search_source.ll 3 * @version 1.0 4 * @author Stephen Dum 5 * @category 6 * @output text 7 * @description 8 9Search source records for a particular string. 10Program prompts for the type of sub record to search 11and then for string to search for. If no sub record type is 12entered, all records are searched. Case is ignored in searches. 13 14 by Stephen Dum (stephen.dum@verizon.net) 15 Version 1 July 2006 16*/ 17 18option("explicitvars") 19 20proc main() 21{ 22 getstr(search,"Enter type of SOUR sub records searched(e.g. TITL, AUTH) <return> for all") 23 set(search,upper(search)) 24 getstr(match,"Enter string to search for") 25 set(match,lower(match)) 26 27 forsour(n,i){ 28 if (strlen(search)) { 29 /* only search children of this source where tag is search */ 30 fornodes(n,ch) { 31 if (eqstr(tag(ch),search)) { 32 set(v,value(ch)) 33 if (i,index(lower(v),match,1)) { 34 /* 35 print ("Found in ",xref(n)," ",v,"\n") 36 */ 37 print ("Found in ",xref(n),": ") 38 print (d(level(ch))," ") 39 if (strlen(xref(ch))) { 40 print (xref(ch)," ") 41 } 42 print(tag(ch)," ",lower(v),"\n") 43 } 44 } 45 } 46 } else { 47 traverse(n,ch,i) { 48 set(v,value(ch)) 49 if (i,index(lower(v),match,1)) { 50 /* 51 print ("Found in ",xref(n)," ",v,"\n") 52 */ 53 print ("Found in ",xref(n),": ") 54 print (d(level(ch))," ") 55 if (strlen(xref(ch))) { 56 print (xref(ch)," ") 57 } 58 print(tag(ch)," ",lower(v),"\n") 59 } 60 } 61 } 62 } 63} 64