home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / b037_1 / !MUMPS_MMP_SYS_PRG < prev    next >
Encoding:
Text File  |  1993-06-24  |  17.9 KB  |  369 lines

  1. Routines saved at: Sat, 11 Dec 1992 13:28
  2. Comment: SYS PROGS
  3. %DAT
  4. %DAT ;Verweij; 7 Nov 1992 ;Omzetting $H getal => Datum  %TUM => %DAT;
  5.  S %F=" "
  6. A S %H=%TUM>21608+%TUM+1460,%L=%H\1461,%YR=%H#1461
  7.  S %Y=%L*4+1837+(%YR\365),%D=%YR#365+1
  8.  S %M=1 I %YR=1460 S %D=366,%Y=%Y-1
  9.  F %I=31,%Y#4=0+28,31,30,31,30,31,31,30,31,30,31 Q:%D'>%I  S %D=%D-%I,%M=%M+1
  10.  I %F=""!(%F="-") S:$L(%D)=1 %D="0"_%D S:$L(%M)=1 %M="0"_%M S %Y=$E(%Y,3,4)
  11.  S:%F?2A %D=%F_", "_%D,%F=" "
  12.  S:%F=" " %M=$E("JanFebMrtAprMeiJunJulAugSepOktNovDec",%M*3-2,%M*3)
  13.  S %DAT=%D_%F_%M_%F_%Y
  14.  K %H,%L,%YR,%Y,%M,%E,%D,%I,%F Q
  15. C S %F="-" G A
  16. D S %F=$P("Do,Vr,Za,Zo,Ma,Di,Wo",",",%TUM#7+1) G A
  17. Z S %F="" G A
  18.  
  19. %ED
  20. %ED ;(C) Verweij  Heerde Holland; 7 Nov 1992 ; THE Program Editor;
  21.  K ^% S ^%=$E($T(%E),4,255)
  22.  F I=1:1 S T=$T(%E+I) Q:T=""  S S=$F(T," "),^%($E(T,1,S-2))=$E(T,S,255)
  23.  W !,"Start the Editor with    X ^%" D ^%EDT Q
  24.  Q
  25.  ;
  26. %E X:$T(+0)="" ^%(41) F %0=1:0 S %2=$T(+%0) X ^%(66) W !,%4," ",%5 R !,">>",%1 X:%1="." ^%(99) Q:%1="."  X ^%("%F")
  27. %F X ^%($S(%1="?":0,%1="&":11,%1="^":12,%1="#":10,%1[$C(9):9,%1="*":8,%1="@":7,%1=";":6,%1=":":5,%1?1"+".N:4,%1?1"-".N:4,$F(%1," ")>1:3,%1?1E.E:2,1:1))
  28. 0 F %11=100:1 Q:'$D(^%(%11))  W !,^%(%11)
  29. 1 F %11=0:0 R "  R: ",%3 Q:%3=""  X:%3["..." ^%(16) X:%3="END" ^%(17) Q:%3="END"  W:%2'[%3 " ??",*7 Q:%3=""!(%2'[%3)  X ^%(18)
  30. 2 X ^%(22) Q:%7=""  W:$T(+(%4+%6))="" " ??",*7 Q:$T(+(%4+%6))=""  S %0=%4+%6
  31. 3 S:$E(%1,$L(%1))=" " %1=$E(%1,1,$L(%1)-1) W ! X:%1="ZS" ^%(31),^%(32),^%(33) X %1
  32. 4 S:$L(%1)=1 %1=%1_1 S %1=%0+%1 S:%1<1 %1=1 W:$T(+%1)="" " ??",*7 Q:$T(+%1)=""  S %0=%1
  33. 5 R "Change every: ",%3 Q:%3=""  R " To: ",%4 F %1=1:1 S %2=$T(+%1) Q:%2=""  X:%3["..." ^%(16) I %2[%3 X ^%(51) ZR +%1 ZI %2 W !,%2
  34. 6 R "Search for: ",%3 Q:%3=""  F %1=1:1 S %2=$T(+%1) Q:%2=""  I %2[%3 S %0=%1 X ^%(66) W !,%4," ",%5,! F %6=1:0 S %6=$F(%2,%3,%6) Q:%6=0  W ?%6+%7-$L(%3)-2,"|"
  35. 7 W "Move labeL +",%0,"  after label: " R %1 Q:%1=""  X ^%(22) Q:%7=0  S %7=%4+%6 Q:%7=%0  S %9=$T(+%7) ZR +%0,+(%7-(%0<%7)) ZI %9,%2 S %0=%7+1-(%0<%7)
  36. 8 S %9=$P(%2," ") S:%9="" %9="+"_%0 W "Delete ",%9," N// " R %1 Q:$F("JjyY",%1)<2  ZR +%0 S %0=%0-1 S:%0=0 %0=1
  37. 9 W !,"Inserted ..." S %7=$P(%1,$C(9))_" "_$P(%1,$C(9),2) ZR +%0 ZI %2,%7 S %0=%0+1
  38. 10 W !,"Line ",%0," duplicated" S %3=" "_$E(%2,$F(%2," "),255) ZI %3 S %0=%0+1
  39. 11 S %3=$P(%2," ") S:%3="" %3="+"_%0 W !,"Join Line ",%3," together with Line " R %1 Q:%1=""  X ^%(22) Q:%7=""!(%0=%6)  S %5=%4+%6,%7=$T(+%5) W:%7="" " ??",*7 Q:%7=""  ZR +%5 S %2=%2_%7 S %0=%0-(%5<%0*1) ZR +%0 ZI %2
  40. 12 S %3=$P(%2," ") S:%3="" %3="+"_%0 W !,"Break Line ",%4," after " R %3 Q:%3=""  S %4=$E(%2,1,$F(%2,%3)-1),%5=$P(%2,%3,2,255) S:$E(%5)'=" " %5=" "_%5 ZR +%0 ZI %4,%5
  41. 16 S %5=$F(%3,"..."),%6=$E(%3,1,%5-4),%7=$E(%3,%5,255) S %5=$L(%6),%6=$F(%2,%6)-%5 Q:%6<1  S %8=256 S:%7'="" %8=$F(%2,%7,%6+%5) Q:'%8  S %3=$E(%2,%6,%8-1)
  42. 17 R " W: ",%4 S %8=$L(%2)+$L(%4) W:%8>255 *7,!,"Too long" Q:%8>255  S %2=%2_%4 ZR +%0 ZI %2
  43. 18 S %5=$F(%2,%3),%6=$E(%2,1,%5-$L(%3)-1) R "  W: ",%4 S %7=$E(%2,%5,255),%8=$L(%6)+$L(%4)+$L(%7) W:%8>255 *7,"Too long" Q:%8>255  S %2=%6_%4_%7 ZR +%0 ZI %2
  44. 22 S %3=$P(%1,"+"),%4=$P(%1,"+",2) S:%3["-" %3=$P(%1,"-"),%4=$E(%1,$F(%1,"-")-1,255) S (%6,%7)=0 I %3'="" F %6=1:1 S %7=$T(+%6) I %7=""!($P(%7," ")=%3) W:%7="" *7," ??" Q
  45. 31 S %9=+$H>21608+$H+1460,%8=%9\1461,%7=%9#1461,%6=%8*4+1837+(%7\365),%4=%7#365+1,%5=1 I %7=1460 S %4=366,%6=%6-1
  46. 32 F %3=31,%6#4=0+28,31,30,31,30,31,31,30,31,30,31 Q:%4'>%3  S %4=%4-%3,%5=%5+1
  47. 33 S %5=$E("JanFebMrtAprMeiJunJulAugSepOktNovDec",%5*3-2,%5*3),%9=$T(+1),$P(%9,";",3)=" "_%4_" "_%5_" "_%6_" " ZR +1 ZI %9
  48. 41 W *7,"Geen Programma. Laadt ..." R % Q:%=""  ZL @%
  49. 51 F %5=1:0 S %5=$F(%2,%3,%5) Q:%5=0  S %2=$E(%2,1,%5-$L(%3)-1)_%4_$E(%2,%5,255),%5=%5-$L(%3)+$L(%4)
  50. 66 S %4=$F(%2," "),%5=$E(%2,%4,255),%7=$L(%4),%4=$E(%2,1,%4-2) S:%4="" %4="+"_%0,%7=$L(%4)+1
  51. 99 K %,%0,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11
  52.  
  53. %EDT
  54. %EDT ;(C) Verweij  Heerde Holland; 7 Nov 1992 ;Program Editor Text;
  55.  F I=1:1 S X=$T(%E+I) Q:X=""  S ^%(99+I)=$E(X,3,255)
  56.  W !,"For Information type     ?",! Q
  57. %E ; Text
  58.  ; After the Prompt  ' >> ' give one of the following :
  59.  ; ?       - To get these Help messages
  60.  ; Label   - Goto line <Label>
  61.  ; +/- [n] - [n] lines up or down
  62.  ; <CR>    - Edit present line   ... > for skip until  END > add at end of line
  63.  ; :       - Change every occurrence of the string
  64.  ; ;       - Search for a string
  65.  ; *       - Delete present line
  66.  ; @       - Move present line after Label
  67.  ; #       - Duplicate present line
  68.  ; &       - Join present line together with other line
  69.  ; ^       - Break present line after given place in 2 new lines
  70.  ; <TAB>   - Insert line after present line
  71.  ; .       - Leave the Editor
  72.  ; Command - Direct execution   must include at least one <SPACE>
  73.  
  74. %FL
  75. %FL ;HHV; 18 Nov 1992 ;First line list;
  76.  D ^%RSEL S %N="" F  S %N=$O(^UTILITY($I,%N)) Q:%N=""  X "ZL @%N S %T=$T(+1) W !,$P(%T,"" ""),?10,$P(%T,"" "",2,255)"
  77.  Q
  78.  Q
  79.  
  80. %G
  81. %G ;(C) Verweij Heerde; 7 Nov 1992 ;Global print/edit;
  82.  S %A="A",%S="View ",DEV=0,$ZT="%ER"
  83. I U 0 W !,%S,"Global ^" R %G I %G="" K %A,%G,%S,%R,%P,%N,%H,%I,%L,%J,%V,%W Q
  84.  I %G="?" W ! S %N="",%T=0 F %I=0:1 S %N=$O(@("^ G("""_%N_""")")) I $E(%N)'=" " W:%N="" !!?8,%T,"  ","Global",$S(%T=1:"",1:"s") G:%N="" I W $E(%N_"          ",1,10) S %T=%T+1
  85.  I %G="??" G X
  86.  O DEV G:DEV'=0 S
  87.  I $E(%G,1,2)="ED" S %S="Edit ",%A="E" G I
  88.  I $E(%G,1,2)="VI" S %S="View ",%A="A" G I
  89.  I $E(%G)'?1U&($E(%G)'?1"%") W *7 G I
  90. S U DEV S %G="^"_%G G:'$F(%G,"(") B I '$F(%G,")") G:$E(%G,$L(%G))=":" V S %L=1,%N(%L)="",%G(1)=%G G:$E(%G,$L(%G))=","!($E(%G,$L(%G))="(") C S %G=%G_")" D:$D(@%G)#10=1 @%A S %G(1)=$E(%G,1,$L(%G)-1)_"," G C
  91.  I $D(@%G)#10=0 W *7 G I
  92.  D @%A G I
  93. V S %G=$E(%G,1,$L(%G)-1),%W=$F(%G,"(") I %G["," F %V=0:0 S %V=$F(%G,",",%V) Q:%V=0  S %W=%V
  94.  S %L=1,%G(%L)=$E(%G,1,%W-1),%N(1)=$E(%G,%W,255) S:$E(%N(1),$L(%N(1)))="""" %N(1)=$E(%N(1),2,$L(%N(1))-1) G CC
  95. B I '$D(@%G) W *7 G I
  96.  D:$D(@%G)#10=1 @%A S %L=1,%G(%L)=%G_"(",%N(%L)=""
  97. C S %G=%G(%L)_""""_%N(%L)_""")" S %N(%L)=$O(@%G) I %N(%L)="" S %L=%L-1 G:%L=0 I G C
  98. CC S %G=%G(%L)_""""_%N(%L)_""")" I $D(@%G)#10=1 D @%A
  99.  I $D(@%G)\10=1 S %L=%L+1,%G(%L)=$E(%G,1,$L(%G)-1)_",",%N(%L)=""
  100.  G C
  101. A S %P=@%G W !,%G,?15," = ",%P
  102.  Q
  103. E S %H=@%G F %R=0:0 W !,%G," = ",%H,! R "   R: ",%I Q:%I=""  G:%I="*" G D:%I["..." D D:%I="END" F I %I'="END" W:%H'[%I *7 I %H[%I S %J=$F(%H,%I),%I(1)=$E(%H,1,%J-$L(%I)-1),%I(3)=$E(%H,%J,255) R "   W: ",%I(2) S %H=%I(1)_%I(2)_%I(3),@%G=%H
  104.  Q
  105. D S %I(5)=$F(%I,"..."),%I(6)=$E(%I,1,%I(5)-4),%I(7)=$E(%I,%I(5),255),%I(6)=$F(%H,%I(6))-$L(%I(6)),%I(7)=$F(%H,%I(7),%I(6)) S:%I(7)=%I(6) %I(7)=256 S %I=$E(%H,%I(6),%I(7)-1)
  106.  Q
  107. F R "  W: ",%I(1) W:$L(%I(1))+$L(%H)>255 *7," Too long" Q:$L(%I(1))+$L(%H)>255  S %H=%H_%I(1),@%G=%H Q
  108. G R "Delete Y/N ",%R Q:$F("JjYy",%R)<2  K @%G Q
  109. %ER W *7,"  <fout>" G %G
  110. ED S %A="E",%S="Edit ",DEV=0 G I
  111. X W !!?2,"The global may be specified as follows :",!
  112.  W !?5,"Globalname",?24,"- display entire global (all nodes)"
  113.  W !?5,"Name (subscripts",?24,"- display specified level and all descendents"
  114.  W !?5,"Name (subscripts:",?24,"- display from specified level till end",!?27,"all subscripts + their descendants"
  115.  W !?5,"Name (subscripts) ",?24,"- display specified level only"
  116.  W !!?2,"Character subscripts need be enclosed in quotes"
  117.  W !!?5,"Use '?' ",?24,"- for a Globaldirectory",!?5,"    '??'",?24,"- to get these Helpmessages"
  118.  W !!?2,"To edit a Global, type ED. or use ED^%G direct"
  119.  W !!?5,"Edit global",?24,"- R:  > old text",!?24,"- W:  > new text"
  120.  W !?5,"Use in old text",?24,"- ... > for skip until  ",!?24,"- END > add at end of line"
  121.  W !?5,"Use  '*'",?24,"- To delete displayed level and all descendents",!
  122.  G I
  123.  
  124. %GD
  125. %GD ;HHV; 7 Nov 1992 ;Global directory;
  126.  S %N="",%T=0 F  S %N=$O(^ G(%N)) Q:%N=""  I $E(%N)'=" " W $E(%N_"         ",1,10) S %T=%T+1
  127.  W !!?8,%T," globals."
  128.  Q
  129.  
  130. %GDEL
  131. %GDEL ;HHV; 9 Dec 1992 ;Global delete for Archimedes MUMPS;
  132.  D ^%GSEL W !,"Deleting ..." D DELETE
  133.  Q
  134. DELETE W ! S %G="" F  S %G=$O(^UTILITY($I,%G)) Q:%G=""  K @("^"_%G) W $E(%G_"         ",1,10)
  135.  Q
  136.  
  137. %GR
  138. %GR ;HHV; 7 Nov 1992 ;Global restore for Archimedes MUMPS;
  139. R R !,"Inputfile:",%F Q:%F=""  O 5:(%F:"r")
  140.  U 5 R %SAVED,%COMMENT U 0 W !,%SAVED,!,%COMMENT,!,"Restore Y/n" R %R I %R="N"!(%R="n") C 5 Q
  141.  D GLOBALS
  142.  C 5 U 0 W !,"File closed."
  143.  Q
  144. GLOBALS S %N="" F  U 5 R %G,%D Q:%G="**"  D SETGL
  145.  Q
  146. SETGL I %N="" U 0 W !,"Processing ",%G S %N=%G
  147.  I %G'="*" S @%G=%D
  148.  E  S %N=""
  149.  Q
  150.  
  151. %GS
  152. %GS ;HHV; 18 Nov 1992 ;Global save for Archimedes MUMPS;
  153.  S %DEV=5
  154.  R !,"Outputfile:",%FL Q:%FL=""  O %DEV:(%FL:"w") C %DEV
  155.  U 0 R !,"Comment: ",%COMMENT D ^%GSEL S %T=$P($H,",",2),%HR=%T\60\60,%SC=%T\60#60 S:$L(%HR)=1 %HR="0"_%HR S:$L(%SC)=1 %SC="0"_%SC
  156.  O %DEV:(%FL:"w") U %DEV S %TUM=+$H D ^%DAT W "Globals saved at: ",$P("Fri^Sat^Sun^Mon^Tue^Wed^Thu","^",+$H#7+1),", ",%DAT," ",%HR,":",%SC,!,"Comment: ",%COMMENT,! D SAVE C %DEV U 0 W !,"File closed."
  157.  Q
  158. SAVE U 0 W ! S %GF="" F  S %GF=$O(^UTILITY($I,%GF)) Q:%GF=""  U %DEV S %G="^"_%GF D B W "*",!,"*",! U 0 W $E(%GF_"         ",1,10)
  159.  U %DEV W "**",!,"**",!,!,! Q
  160.  ;Here starts the part that saves an entire global
  161. B I '$D(@%G) Q
  162.  D:$D(@%G)#10=1 A S %L=1,%G(%L)=%G_"(",%N(%L)=""
  163. C S %G=%G(%L)_""""_%N(%L)_""")" S %N(%L)=$O(@%G) I %N(%L)="" S %L=%L-1 Q:%L=0  G C
  164.  S %G=%G(%L)_""""_%N(%L)_""")" I $D(@%G)#10=1 D A
  165.  I $D(@%G)\10=1 S %L=%L+1,%G(%L)=$E(%G,1,$L(%G)-1)_",",%N(%L)=""
  166.  G C
  167. A S %P=@%G W %G,!,%P,!
  168.  Q
  169.  
  170. %GSEL
  171. %GSEL ;HHV; 19 Nov 1992 ;Global selector for Archimedes MUMPS;
  172.  K ^UTILITY($I)
  173. GLOB U 0 R !,"Globals: ",%G Q:%G=""  S SELECT=1 S:$E(%G)="-" SELECT=0,%G=$E(%G,2,255)
  174.  I %G="^D" W ! D ^%GD G GLOB
  175.  I %G="^L" W ! D LIST G GLOB
  176.  I %G["*" D WILDCARD G GLOB
  177.  S WR=0 D SETKILL G GLOB
  178. LIST S %G="",%T=0 F  S %G=$O(^UTILITY($I,%G)) Q:%G=""  D WRITE S %T=%T+1
  179.  W !!?8,%T," globals selected."
  180.  Q
  181. WILDCARD W ! S (%GS,%G)=$P(%G,"*",1),%L=$L(%GS),WR=1 D SETKILL F  S %G=$O(^ G(%G)) Q:%G=""!($E(%G,1,%L)'=$E(%GS,1,%L))  D SETKILL
  182.  Q
  183. SETKILL Q:$E(%G)=" "!('$D(^ G(%G)))
  184.  I SELECT S ^UTILITY($I,%G)=""
  185.  E  K ^UTILITY($I,%G)
  186.  D:WR WRITE
  187.  Q
  188. WRITE W $E(%G_"         ",1,10)
  189.  Q
  190.  
  191. %JOBMON
  192. %JOBMON ;HHV; 19 Nov 1992 ; Monitor all jobs in the system;
  193.  S %S=","
  194.  F  D DISPLAY R *%R:1 Q:%R'=-1
  195.  Q
  196. DISPLAY W #,"JobNr",?7,"UCI",?11,"Routine",?20,"Status",?27,"Psize",?33,"Pdev",?38,"Open",!
  197.  S %JL=$V(9),%N=$L(%JL,%S) ; get list of JOB numbers
  198.  F %T=1:1:%N S %JN=$P(%JL,%S,%T) D DISPJOB
  199.  Q
  200. DISPJOB S %J=$V(9,%JN) Q:%J=""  S %UCI=$P(%J,%S,1),%ROUT=$P(%J,%S,2),%STAT=$P(%J,%S,3),%PSIZE=$P(%J,%S,4),%PDEV=$P(%J,%S,5)
  201.  W !,$J(%JN,5),?7,%UCI,?11,%ROUT,?20,$S(%STAT=0:"Input",1:"Interp"),?27,$J(%PSIZE,5),?33,$J(%PDEV,4),?38 F %O=6:1 Q:$P(%J,%S,%O)=""  W $J($P(%J,%S,%O),3)
  202.  
  203. %RCHANGE
  204. %RCHANGE ;HHV; 11 Dec 1992 ;Routine search/replace for Archimedes MUMPS;
  205.  S %(1)="ZL @%F S %FND=0 F %I=1:1 S %T=$T(+%I) ZS:%T=""""&(%FND)  Q:%T=""""  I %T[%S S %GO=1 X %(3),%(2),%(4) X:%ASK %(5) I %GO S %FND=1 ZR +%I ZI %TC"
  206.  S %(2)="S %TC=%T F I=1:1:$L(%TC,%S)-1 S %TC=$P(%TC,%S)_%C_$P(%TC,%S,2,255)"
  207.  S %(3)="W !,%F,""+"",%I,!,$P(%T,"" "",1),?10,$P(%T,"" "",2,255),!"
  208.  S %(4)="W !,$P(%TC,"" "",1),?10,$P(%TC,"" "",2,255),!"
  209.  S %(5)="R !,""OK Y//"",%GO S %GO=$F(""N n NO no"",%GO)<2"
  210.  D ^%RSEL R !,"Search string: ",%S Q:%S=""  R !,"Change to: ",%C Q:%C=%S  R !,"Confirm changes N// ",%ASK S %ASK=$F("Y y YES yes",%ASK)>1
  211.  D CHANGE
  212.  Q
  213. CHANGE S %F="" F  S %F=$O(^UTILITY($I,%F)) Q:%F=""  X %(1)
  214.  Q
  215.  
  216. %RD
  217. %RD ;HHV; 7 Nov 1992 ;Routine directory;
  218.  S %N="",%T=0 F  S %N=$O(^ S(%N)) Q:%N=""  W $E(%N_"         ",1,10) S %T=%T+1
  219.  W !!?8,%T," routines."
  220.  Q
  221.  
  222. %RDEL
  223. %RDEL ;HHV; 17 Nov 1992 ;Routine delete for Archimedes MUMPS;
  224.  D ^%RSEL W !,"Deleting ..." D DELETE
  225.  Q
  226. DELETE W ! S %F="" F  S %F=$O(^UTILITY($I,%F)) Q:%F=""  ZD @%F W $E(%F_"         ",1,10)
  227.  Q
  228.  
  229. %RM
  230. %RM ;(C) Verweij Heerde ; 18 Nov 1992 ; Routine mover ;
  231.  S %R=$P($T(R)," ",2,255) F %4=1:1:3 S %R(%4)=$P($T(R+%4)," ",2,255)
  232.  X %R K %R,%P,%0,%2,%3,%4,%5,%6,%7,%8,%10 Q
  233. R R !,"Copy from program: ",%4 Q:%4=""  ZL @%4 S %0=%4 R "   First line: ",%5 X %R(1) S %7=%5 R "   Last line: ",%5 X %R(1) S %8=%5 X %R(2) R !,"Insert in program: ",%4 Q:%4=""  ZL @%4 R "   After line: ",%5 X %R(1) X %R(3) W !,%4,"  saved" ZS
  234.  S %6=0 S:%5["-" %6="-"_$P(%5,"-",2),%5=$P(%5,"-",1) S:%5["+" %6="+"_$P(%5,"+",2),%5=$P(%5,"+",1) F %2=1:1 S %3=$T(+%2) Q:%3=""  I $P(%3," ",1)=%5 S %5=%2+%6 Q
  235.  S %6=0 F %2=%7:1:%8 S %6=%6+1,%P(%6)=$T(+%2)
  236.  S %10=$T(+%5) ZR +%5 ZI %10 F %2=1:1 Q:'$D(%P(%2))  ZI %P(%2)
  237.  
  238. %RR
  239. %RR ;Routine restore for ARM MUMPS; 10 Dec 1992 
  240.  S %RR="ZR  F  U 5 R %R ZS:%R=""""  Q:%R=""""  ZI %R"
  241. R R !,"Inputfile:",%F Q:%F=""  O 5:(%F:"r")
  242.  U 5 R %SAVED,%COMMENT U 0 W !,%SAVED,!,%COMMENT,!,"Restore Y/n" R %R I %R="N"!(%R="n") C 5 Q
  243.  W !,"Restoring ...",! D FILES
  244.  C 5 U 0 W !,"File closed."
  245.  Q
  246. FILES F  U 5 R %FN Q:%FN=""  D:%FN="%RR" ITSELF I %FN'="%RR" X %RR U 0 W $E(%FN_"         ",1,10)
  247.  Q
  248. ITSELF U 0 W !,"%RR can't restore itself",!
  249.  F  U 5 R %R Q:%R=""
  250.  Q
  251.  
  252. %RS
  253. %RS ;HHV; 10 Dec 1992 ;Routine save for Archimedes MUMPS;
  254.  S %RS="U %DEV ZL @%F F %I=0:1 Q:$T(+%I)=""""  W !,$T(+%I)"
  255.  S %DEV=5
  256.  R !,"Outputfile:",%FL Q:%FL=""  O %DEV:(%FL:"w") C %DEV
  257.  U 0 R !,"Comment: ",%COMMENT D ^%RSEL S %T=$P($H,",",2),%HR=%T\60\60,%SC=%T\60#60 S:$L(%HR)=1 %HR="0"_%HR S:$L(%SC)=1 %SC="0"_%SC
  258.  O %DEV:(%FL:"w") U %DEV S %TUM=+$H D ^%DAT W "Routines saved at: ",$P("Fri^Sat^Sun^Mon^Tue^Wed^Thu","^",+$H#7+1),", ",%DAT," ",%HR,":",%SC,!,"Comment: ",%COMMENT D SAVE C %DEV U 0 W !,"File closed."
  259.  Q
  260. SAVE U 0 W ! S %F="" F  S %F=$O(^UTILITY($I,%F)) Q:%F=""  X %RS U %DEV W ! U 0 W $E(%F_"         ",1,10)
  261.  U %DEV W !,!,!,! Q
  262.  
  263. %RSE
  264. %RSE ;HHV; 17 Nov 1992 ;Routine string search for Archimedes MUMPS;
  265.  D ^%RSEL R !,"Search string: ",%S D SEARCH
  266.  Q
  267. SEARCH S %F="" F  S %F=$O(^UTILITY($I,%F)) Q:%F=""  X "ZL @%F F %I=1:1 S %T=$T(+%I) Q:%T=""""  I %T[%S W !,%F,""+"",%I,!,$P(%T,"" "",1),?10,$P(%T,"" "",2,255),!"
  268.  Q
  269.  
  270. %RSEL
  271. %RSEL ;HHV; 19 Nov 1992 ;Routine selector for Archimedes MUMPS;
  272.  K ^UTILITY($I)
  273. FILE U 0 R !,"Routines: ",%F Q:%F=""  S SELECT=1 S:$E(%F)="-" SELECT=0,%F=$E(%F,2,255)
  274.  I %F="^D" W ! D ^%RD G FILE
  275.  I %F="^L" W ! D LIST G FILE
  276.  I %F["*" D WILDCARD G FILE
  277.  S WR=0 D SETKILL G FILE
  278. LIST S %F="",%T=0 F  S %F=$O(^UTILITY($I,%F)) Q:%F=""  D WRITE S %T=%T+1
  279.  W !!?8,%T," routines selected."
  280.  Q
  281. WILDCARD W ! S (%FS,%F)=$P(%F,"*",1),%L=$L(%FS),WR=1 D SETKILL F  S %F=$O(^ S(%F)) Q:%F=""!($E(%F,1,%L)'=$E(%FS,1,%L))  D SETKILL
  282.  Q
  283. SETKILL Q:'$D(^ S(%F))
  284.  I SELECT S ^UTILITY($I,%F)=""
  285.  E  K ^UTILITY($I,%F)
  286.  D:WR WRITE
  287.  Q
  288. WRITE W $E(%F_"         ",1,10)
  289.  Q
  290.  
  291. %SYSMAN
  292. %SYSMAN ;HHV; 11 Dec 1992 ;System manager;
  293.  S %SYSDEV=10 D NEWUSER
  294.  F  D DISK,LOGIN ;H 1
  295. DISK ZF 2 ;Flush oldest dirty block;
  296.  Q
  297. LOGIN O 10::0 I $T U 10 R *R:0 I R'=-1 S %SYSDEV=10 D NEWUSER
  298.  Q
  299. NEWUSER O %SYSDEV U %SYSDEV W !,"Archimedes MUMPS login: " R %LOGIN W ! C %SYSDEV Q:%LOGIN=""  ZH:%LOGIN="STOP"  S %SYSUCI=$P(%LOGIN,":",1),%SYSPRG=$P(%LOGIN,":",2)
  300.  I %SYSUCI'?3U W "Invalid UCI name" G NEWUSER
  301.  I %SYSPRG'?1.E W "Invalid login ID" G NEWUSER
  302.  S $ZT="NUERR" ; Jump to NUERR when JOB generates error
  303.  I %SYSPRG="*" J :(%SYSUCI:40:%SYSDEV:1):0 I '$T G NEWUSER
  304.  I %SYSPRG'="*" J @("^"_%SYSPRG):(%SYSUCI:20:%SYSDEV:1):0 I '$T G NEWUSER
  305.  Q
  306. NUERR W "***Error: ",$ZE,! Q
  307.  
  308. %TUM
  309. %TUM ;Verweij; 7 Nov 1992 ;Omzet. Datum => $H getal  %DAT => %TUM;
  310.  I %DAT'?4N&(%DAT'?6N)&(%DAT'?1.2N1P1.2N)&(%DAT'?1.2N1P1.2N1P2.4N)&(%DAT'?1"H"1"+"1N.N)&(%DAT'?1"H"1"-"1N.N)&(%DAT'="H") S %TUM="" G OUT
  311.  G:%DAT'["H" A
  312.  S %I=+$H,%K=$P(%DAT,"H",2) S:%K'?1P1N.N %K="+0" S @("%TUM=%I"_%K) K %I,%K Q
  313. A I %DAT?4N!(%DAT?6N) S %D=$E(%DAT,1,2),%M=$E(%DAT,3,4),%Y="" S:%DAT?6N %Y=$E(%DAT,5,6) G B
  314.  F %D=1:1 Q:%D>$L(%DAT)  S %Y=$E(%DAT,%D) I %Y?1P Q
  315.  S %D=$P(%DAT,%Y,1),%M=$P(%DAT,%Y,2),%Y=$P(%DAT,%Y,3) G:%Y?4N C
  316. B S %DT=+$H,%H=%DT>21608+%DT,%L=%H\1461,%YR=%H#1461,%Z=%L*4+1841+(%YR\365) S:%Y'?2N %Y=%Z S:%Y?2N %Y=$E(%Z,1,2)_%Y
  317. C I %M>12!(%M+0<1)!(%D+0<1)!(%D+(%M=2*2)-(%Y#4=0*%M=2)-((%M>7+%M)#2)>30) S %TUM="" G OUT
  318.  S %TUM=%D+$P("0,31,59,90,120,151,181,212,243,273,304,334",",",%M)+(%M>2&(%Y#4=0)&(%Y#100'=0))+(%Y-1841*365)+(%Y-1841\4)-(%Y>1900) I %TUM<0 S %TUM="" G OUT
  319. OUT K %D,%H,%DT,%M,%Y,%YR,%Z,%L Q
  320.  
  321. %UCIMAN
  322. %UCIMAN ;HHV; 10 Dec 1992 ; UCI manager ;
  323. START    W !,"UCI manager",!!,"1) Create UCI",!,"2) Rename UCI",!,"3) Delete UCI",!,"4) List UCI's",!!,"Choice: " R %CH Q:%CH=""  D CREATE:%CH=1,RENAME:%CH=2,DELETE:%CH=3,LIST:%CH=4 G START
  324. CREATE R !!,"Enter name for new UCI: ",%UCI Q:%UCI=""  I %UCI'?3U D UPP3 G CREATE
  325.  ZU %UCI:1
  326.  Q
  327. RENAME R !!,"Enter name of UCI to rename: ",%UCI Q:%UCI=""  I %UCI'?3U D UPP3 G RENAME
  328.  S %CH=$V(13) I %CH'[%UCI D NEXIST G DELETE
  329.  R !,"Enter new name: ",%RUCI Q:%RUCI=""  I %RUCI'?3U D UPP3 G RENAME
  330.  ZU %UCI:(2:%RUCI)
  331.  Q
  332. DELETE R !!,"Enter name of UCI to delete: ",%UCI Q:%UCI=""  I %UCI'?3U D UPP3 G DELETE
  333.  S %CH=$V(13) I %CH'[%UCI D NEXIST G DELETE
  334.  ZU %UCI:3
  335.  Q
  336. LIST W !!,"UCI list",!! S %UCI=$V(13) F %CH=1:1:$L(%UCI,",") W $E($P(%UCI,",",%CH)_"          ",1,10)
  337.  W !!,$L(%UCI,",")," UCI's.",!!
  338.  Q
  339. UPP3 W !,"UCI names exist of 3 uppercase letters",! Q
  340. NEXIST W !,"UCI does not exist",! Q
  341.  
  342. DEFDEV
  343. DEFDEV ;Verweij; 6 Nov 1991 ; Device definition ;
  344.  K (PW,POS,POSC,U,INE,INO) W #?20,$P($T(+1),";",4) S U="^"
  345.  D HELP
  346. BEG W !!?13,"<?> Device nr " R NR Q:NR=""  I NR="?" D LIST G DEFDEV
  347.  S SW=0 S:$E(NR)="-" NR=$E(NR,2,55),SW=1 I NR'?1.2N!(NR=0) W *7," <1-2 figures> " R R G BEG
  348.  I $D(^%DEV(NR)) S EVA=$G(^%DEV(NR,"D")) W "   ",$P(EVA,U,1),"     ",$S($P(EVA,U,2)="P":"Printer",1:"Terminal")
  349.  E  W "  niet gedefinieerd"
  350.  I SW R !!?15,"Verwijderen ",V K:$F("YyJj",V)>1 ^%DEV(NR) G DEFDEV
  351. PT R !!?5,"(P)rinter (T)erminal ",PT G:PT="" BEG I "PT"'[PT!(PT'?1U) W *7," <P or T> " R R G PT
  352.  W !?50,"Available" D PRIL
  353. AK W !!?10,$S(PT=" P":"Printer",1:"Terminal")," number " R TT#4 G:TT="" DEFDEV I $G(D(TT))="" W *7 G AK
  354.  S ^%DEV(NR)=^%DEV(PT,D(TT)),^%DEV(NR,"D")=D(TT)_"^"_PT
  355.  G DEFDEV
  356. PRIL W ! S N="" F I=1:1 S N=$O(^%DEV(PT,N)) Q:N=""  S D(I)=N W !?50,I,"   ",N
  357.  Q
  358. LIST W #?20,"List ",$P($T(+1),";",4),!! S N=0
  359. LST F I=1:1 S N=$O(^%DEV(N)) Q:N=""  I N?1.2N S EVA=^(N,"D") W !?15,$J(N,3),$J($P(EVA,U,1),20),"     ",$S($P(EVA,U,2)="P":"Printer",1:"Terminal") I $Y>21 R !?75,"<Cr>",R#1,#
  360.  R !!?20,"<Cr> ",R#1 Q
  361. HELP W !!?4,"Geef nummer van het te definieren Device, waarna huidige",!?4,"definitie wordt opgegeven.",!?4,"Met '?' wordt een lijst van bestaande devices gegeven."
  362.  W !?4,"Indien een '-' voor het Device nummer wordt geplaatst, kan",!?4,"het Device uit het bestand worden verwijderd."
  363.  ;R !!?4,"<Cr>",R#1 Q
  364.  Q
  365.  
  366.  
  367.  
  368.  
  369.