| 1 | TIUUPLD ; SLC/JER - ASCII Upload ;9/11/98@16:39:47 | 
|---|
| 2 | ;;1.0;TEXT INTEGRATION UTILITIES;**21**;Jun 20, 1997 | 
|---|
| 3 | MAIN ; Control branching | 
|---|
| 4 | N EOM,TIUDA,TIUERR,TIUHDR,TIULN,TIUSRC,X | 
|---|
| 5 | I '$D(TIUPRM0)!'$D(TIUPRM1) D SETPARM^TIULE | 
|---|
| 6 | S TIUSRC=$P($G(TIUPRM0),U,9),EOM=$P($G(TIUPRM0),U,11) | 
|---|
| 7 | I EOM']"",($P(TIUPRM0,U,17)'="k") W !,$C(7),$C(7),$C(7),"No End of Message Signal Defined - Contact IRM.",! Q | 
|---|
| 8 | S:TIUSRC']"" TIUSRC="R" | 
|---|
| 9 | S TIUHDR=$P(TIUPRM0,U,10) | 
|---|
| 10 | I TIUHDR']"" W $C(7),$C(7),$C(7),"No Record Header Signal Defined - Contact IRM.",! Q | 
|---|
| 11 | S TIUDA=$$MAKEBUF | 
|---|
| 12 | I +TIUDA'>0 W $C(7),$C(7),$C(7),"Unable to create a Buffer File Record - Contact IRM.",! Q | 
|---|
| 13 | I TIUSRC="R" D REMOTE(TIUDA) | 
|---|
| 14 | I TIUSRC="H" D HFS(TIUDA) | 
|---|
| 15 | I +$G(TIUERR) W $C(7),$C(7),$C(7),!,"File Transfer Error: ",$G(TIUERR),!!,"Please re-transmit the file...",! | 
|---|
| 16 | ; Set $ZB to MAIN+14^TIUUPLD:2 | 
|---|
| 17 | I +$O(^TIU(8925.2,TIUDA,"TEXT",0))>0,'+$G(TIUERR) D FILE(TIUDA) | 
|---|
| 18 | I +$O(^TIU(8925.2,TIUDA,"TEXT",0))'>0!+$G(TIUERR) D BUFPURGE^TIUPUTC(TIUDA) | 
|---|
| 19 | Q | 
|---|
| 20 | REMOTE(DA) ; Read ASCII stream from remote computer | 
|---|
| 21 | N TIUI,TIUPAC,X | 
|---|
| 22 | I '$D(TIUPRM0)!'$D(TIUPRM1) D SETPARM^TIULE | 
|---|
| 23 | S TIUPAC=$P(TIUPRM0,U,15) | 
|---|
| 24 | I TIUPAC']"",($P(TIUPRM0,U,17)'="k") W $C(7),$C(7),$C(7),"No Pace Character Defined - Contact IRM.",! Q | 
|---|
| 25 | I $P(TIUPRM0,U,17)="k" D KERMIT(DA) Q | 
|---|
| 26 | D REMHDR("ASCII") | 
|---|
| 27 | S TIUERR="" | 
|---|
| 28 | W !,$C(TIUPAC) | 
|---|
| 29 | F  R X:DTIME S:'$T X="^TIMEOUT" D  Q:TIUERR'="" | 
|---|
| 30 | . I (X="^")!(X="^^")!(X="^TIMEOUT") DO  Q | 
|---|
| 31 | . . S TIUERR="1,End of Message Signal not seen." | 
|---|
| 32 | . I X=EOM S TIUERR=0 W ! Q | 
|---|
| 33 | . I X?1."?" D HELP(X),REMHDR("ASCII") Q | 
|---|
| 34 | . ; Ignore leading white space | 
|---|
| 35 | . I (+$O(^TIU(8925.2,DA,"TEXT",0))'>0),(X="") Q | 
|---|
| 36 | . S TIUI=+$G(TIUI)+1,^TIU(8925.2,DA,"TEXT",TIUI,0)=$$STRIP(X) | 
|---|
| 37 | . W !,$C(TIUPAC) ; Send ACK to remote | 
|---|
| 38 | S ^TIU(8925.2,DA,"TEXT",0)="^^"_$G(TIUI)_"^"_$G(TIUI)_"^"_DT_"^^^^" | 
|---|
| 39 | Q | 
|---|
| 40 | REMHDR(PRTCL) ; Write Header for Remote upload | 
|---|
| 41 | W @IOF D JUSTIFY^TIUU($$TITLE^TIUU(PRTCL_" UPLOAD"),"C") | 
|---|
| 42 | W:PRTCL="ASCII" !!,"Initiate upload procedure:",! | 
|---|
| 43 | Q | 
|---|
| 44 | KERMIT(DA) ; Use Kermit Protocol Driver | 
|---|
| 45 | N XTKDIC,XTKERR,XTKMODE,DWLC | 
|---|
| 46 | D REMHDR("KERMIT") | 
|---|
| 47 | S XTKDIC="^TIU(8925.2,"_+DA_",""TEXT"",",XTKMODE=2 | 
|---|
| 48 | D RECEIVE^XTKERMIT I +$G(XTKERR) S TIUERR=$G(XTKERR) W ! | 
|---|
| 49 | Q | 
|---|
| 50 | HFS(DA) ; Read HFS file | 
|---|
| 51 | N TIUI,X | 
|---|
| 52 | I '$D(TIUPRM0)!'$D(TIUPRM1) D SETPARM^TIULE | 
|---|
| 53 | W @IOF D JUSTIFY^TIUU($$TITLE^TIUU("ASCII UPLOAD"),"C") | 
|---|
| 54 | W !!,"Select Host File:",! D ^%ZIS I POP W !,$C(7),"Device unavailable." Q | 
|---|
| 55 | F  U IO R X:DTIME Q:'$T!(X=EOM)!(X="^")!(X="^^")  D | 
|---|
| 56 | . U IO(0) W X,! | 
|---|
| 57 | . S TIUI=+$G(TIUI)+1,^TIU(8925.2,DA,"TEXT",TIUI,0)=$$STRIP(X) | 
|---|
| 58 | S ^TIU(8925.2,DA,"TEXT",0)="^^"_$G(TIUI)_"^"_$G(TIUI)_"^"_DT_"^^^^" | 
|---|
| 59 | D ^%ZISC | 
|---|
| 60 | Q | 
|---|
| 61 | STRIP(X) ; Strip control characters | 
|---|
| 62 | N I,Y | 
|---|
| 63 | ; First replace TABS w/5 spaces | 
|---|
| 64 | F I=1:1:$L(X) S:$A(X,I)=9 X=$E(X,1,(I-1))_"     "_$E(X,(I+1),$L(X)) | 
|---|
| 65 | ; Next, remove control characters | 
|---|
| 66 | S Y="" F I=1:1:$L(X) S:$A(X,I)>31 Y=Y_$E(X,I) | 
|---|
| 67 | Q Y | 
|---|
| 68 | MAKEBUF() ; Subroutine to create buffer records | 
|---|
| 69 | N DIC,DA,DR,DIE,START,X,Y | 
|---|
| 70 | S START=$$NOW^TIULC | 
|---|
| 71 | S (DIC,DLAYGO)=8925.2,DIC(0)="LX",X=""""_$J_"""" D ^DIC | 
|---|
| 72 | I +Y'>0 S DA=Y G MAKEBUX | 
|---|
| 73 | S DA=+Y,DIE=DIC,DR=".02////"_+$G(DUZ)_";.03////"_START D ^DIE | 
|---|
| 74 | MAKEBUX Q DA | 
|---|
| 75 | FILE(DA) ; Completes upload transaction, invokes filer/router | 
|---|
| 76 | N DIE,DR | 
|---|
| 77 | I '$D(^TIU(8925.2,+DA,0)) G FILEX | 
|---|
| 78 | S DIE="^TIU(8925.2,",DR=".04////"_$$NOW^TIULC D ^DIE | 
|---|
| 79 | ; Task background filer/router to process buffer record | 
|---|
| 80 | S ZTIO="",ZTDTH=$H,ZTSAVE("DA")="" | 
|---|
| 81 | S ZTRTN=$S($P(TIUPRM0,U,16)="D":"MAIN^TIUPUTD",1:"MAIN^TIUPUTC") | 
|---|
| 82 | S ZTDESC="TIU Document Filer" | 
|---|
| 83 | ; If filer is NOT designated to run in the foreground, queue it | 
|---|
| 84 | I '+$P(TIUPRM0,U,18) D  G FILEX | 
|---|
| 85 | . D ^%ZTLOAD | 
|---|
| 86 | . W !,$S($D(ZTSK):"Filer/Router Queued!",1:"Filer/Router Cancelled!") | 
|---|
| 87 | ; Otherwise, run the filer in the foreground | 
|---|
| 88 | W !!,"File Transfer Complete--Now Filing Records..." | 
|---|
| 89 | D @ZTRTN | 
|---|
| 90 | FILEX Q | 
|---|
| 91 | HELP(X) ; Process HELP for Remote upload | 
|---|
| 92 | I X="?" W !?3,"Begin file transfer using ASCII protocol upload procedure.",! | 
|---|
| 93 | I X?2."?" D | 
|---|
| 94 | . W !?3,"Consult your terminal emulator's User Manual to determine",! | 
|---|
| 95 | . W !?3,"how to set-up and initiate an ASCII protocol file transfer.",! | 
|---|
| 96 | W !?3,"Enter '^' or '^^' to exit.",! | 
|---|
| 97 | S TIUX=$$READ^TIUU("FOA","Press RETURN to continue...") | 
|---|
| 98 | Q | 
|---|