/*-----------------------------------------------------------------------* File........: cuecat.i Version.....: .8 6/26/01 Description : Cuecat input translation function Author......: S.E. Southwell - BravePoint, Inc. (770) 449-9696 Copyright...: FreeFramework 2000 - http://www.freeframework.org Created.....: 2000 Notes.......: *-----------------------------------------------------------------------*/ function cuecatTrans returns char( INPUT vinput AS CHAR ). DEFINE VAR vtranfrom AS CHAR EXTENT 3 NO-UNDO. DEFINE VAR vtypes AS CHAR NO-UNDO. DEFINE VAR vchars AS INTEGER NO-UNDO. DEFINE VAR vid AS CHAR NO-UNDO. DEFINE VAR vtype AS CHAR NO-UNDO. DEFINE VAR vcode AS CHAR NO-UNDO. DEFINE VAR voutput AS CHAR NO-UNDO. DEFINE VAR vmult AS INTEGER NO-UNDO. DEFINE VAR vtypecodes AS CHAR NO-UNDO. ASSIGN vtranfrom[1] = "C3,CN,Cx,Ch,D3,DN,Dx,Dh,E3,EN" vtranfrom[2] = "n,j,f,b,D,z,v,r,T,P" vtranfrom[3] = "Z,Y,X,W,3,2,1,0,7,6" vtypes = "ISBN,ISBN,UPC,UPC,UPC-E1" vtypecodes = "cGf2,cGen,fHmg,fHmc,fGzX" . IF vinput matches ".*.*.*." THEN DO: ASSIGN vid = entry(2,vinput,".") vtype = entry(3,vinput,".") vcode = entry(4,vinput,".") voutput = "" . DO WHILE vcode ne "": ASSIGN vchars = vchars + 1 vmult = vchars MODULO 3 . CASE vmult: WHEN 1 THEN ASSIGN voutput = voutput + STRING(MAX(0,LOOKUP(substring(vcode,1,2),vtranfrom[vmult]) - 1)) substring(vcode,1,2) = "". when 2 THEN ASSIGN voutput = voutput + STRING(MAX(0,LOOKUP(substring(vcode,1,1),vtranfrom[vmult]) - 1)) substring(vcode,1,1) = "". WHEN 0 THEN ASSIGN voutput = voutput + STRING(MAX(0,LOOKUP(substring(vcode,1,1),vtranfrom[3]) - 1)) substring(vcode,1,1) = "". END CASE. END. /*do while*/ if lookup(vtype,vtypecodes) ne 0 then return entry(lookup(vtype,vtypecodes),vtypes) + ": " + voutput. else return voutput. END. ELSE DO: return ?. END. end function.