Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: CIAUBC39

CIAUBC39.m

Go to the documentation of this file.
  1. CIAUBC39 ;MSC/IND/PLS - Converts barcode 39 to HPCL-compatible format ;04-May-2006 08:19;DKM
  1. ;;1.2;CIA UTILITIES;;Mar 20, 2007
  1. ;;Copyright 2000-2006, Medsphere Systems Corporation
  1. ;=================================================================
  1. ; Inputs:
  1. ; TXT = Data string to print in bar code
  1. ; ORN = Orientation of bar code/Check Digit
  1. ; 0 = portrait/no check digit(default)
  1. ; 1 = landscape/no check digit
  1. ; 2 = portrait/check digit
  1. ; 3 = landscape/check digit
  1. ; HGT = Height of bar code in dots (1/300 inch)
  1. ; HOR = Horizontal position on page in dots
  1. ; VER = Vertical position on page in dots
  1. ; WID = Width of bar in dots (3=default)
  1. ; Purpose:
  1. ; Accepts a barcode 39 string and writes an HPCL-compatible
  1. ; string that will display the barcode on an HP laser printer.
  1. ; A barcode font cartridge is not required. The print position
  1. ; on entry is restored upon exit.
  1. ;=================================================================
  1. BC(TXT,ORN,HGT,HOR,VER,WID) ;
  1. N DD,CHK,CH,ZDD,C,P,Z1,Z2,Z3,Z4,Z5,X
  1. S X=0 X ^%ZOSF("RM")
  1. S CHK=$S($G(ORN)>1:1,1:0),ORN=$S($G(ORN)#2:1,1:0)
  1. S TXT=$TR(TXT,"*",""),CH="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+Z"
  1. S DD="" F ZDD=1:1:$L(TXT) S DD=DD_$S(CH[$E(TXT,ZDD):$E(TXT,ZDD),1:"") ;STRIP UNPRINTABLE CHARACTERS
  1. S TXT=DD I +$G(CHK) S TXT=$$CHK(TXT) ;ADD CHECKSUM CHARACTER
  1. S TXT="*"_TXT_"*" ;ADD START AND STOP CODES
  1. S C=$C(27)_"*c",P=$C(27)_"*p+",WID=$G(WID,3),HGT=$G(HGT,60),ORN=''$G(ORN)+1
  1. W $C(27),"&f0S" ;Push cursor position
  1. W:$D(HOR) $C(27)_"*p"_+HOR_"X"
  1. W:$D(VER) $C(27)_"*p"_+VER_"Y"
  1. W C_HGT_$E("BA",ORN)
  1. F Z=1:1:$L(TXT) D
  1. .S Z1=$S($E(TXT,Z)="*":$P($T(99),";",4),1:$P($T(@($F(CH,$E(TXT,Z))-2)),";",4)),Z4=15,Z5=0
  1. .F Z2=1:1:$L(Z1) D
  1. ..S Z3=+$E(Z1,Z2),Z4=Z4-Z3,Z3=Z3*WID
  1. ..Q:'Z3
  1. ..I Z2#2 W C_Z3_$E("ab",ORN)_"0P" S Z5=Z3
  1. ..E W P_(Z3+Z5)_$E("XY",ORN) S Z5=0
  1. .S Z4=Z4*WID+Z5
  1. .W P_(Z5+WID)_$E("XY",ORN)
  1. W $C(27),"&f1S" ;Pop cursor position
  1. Q ""
  1. CHK(X) ;CALCULATE CHECK DIGIT AND RETURN STRING TO PRINT
  1. Q:X="" ""
  1. N CHK,Y
  1. S CHK=0,Y=X
  1. F Q:X="" S CHK=$F(CH,$E(X))-2+CHK,X=$E(X,2,255)
  1. S CHK=$E(CH,CHK#43+1)
  1. Q Y_CHK
  1. 0 ;;0;111331311
  1. 1 ;;1;311311113
  1. 2 ;;2;113311113
  1. 3 ;;3;313311111
  1. 4 ;;4;111331113
  1. 5 ;;5;311331111
  1. 6 ;;6;113331111
  1. 7 ;;7;111311313
  1. 8 ;;8;311311311
  1. 9 ;;9;113311311
  1. 10 ;;A;311113113
  1. 11 ;;B;113113113
  1. 12 ;;C;313113111
  1. 13 ;;D;111133113
  1. 14 ;;E;311133111
  1. 15 ;;F;113133111
  1. 16 ;;G;111113313
  1. 17 ;;H;311113311
  1. 18 ;;I;113113311
  1. 19 ;;J;111133311
  1. 20 ;;K;311111133
  1. 21 ;;L;113111133
  1. 22 ;;M;313111131
  1. 23 ;;N;111131133
  1. 24 ;;O;311131131
  1. 25 ;;P;113131131
  1. 26 ;;Q;111111333
  1. 27 ;;R;311111331
  1. 28 ;;S;113111331
  1. 29 ;;T;111131331
  1. 30 ;;U;331111113
  1. 31 ;;V;133111113
  1. 32 ;;W;333111111
  1. 33 ;;X;131131113
  1. 34 ;;Y;331131111
  1. 35 ;;Z;133131111
  1. 36 ;;-;131111313
  1. 37 ;;.;331111311
  1. 38 ;; ;133111311
  1. 39 ;;$;131313111
  1. 40 ;;/;131311131
  1. 41 ;;+;131113131
  1. 42 ;;%;111313131
  1. 99 ;;*;131131311