I'd start without base64 decode just to check how ftp works.

I think this would be enough to work (1st argument in Store is a full filename and second is a stream you want to put there):

ClassMethod DecodeBase64HL7ToFileFaxing(base64 As %Stream.GlobalBinary, Ancillary As %String, FileName As %String) As %String
{
    set ftp=##class(%Net.FtpSession).%New()
    if 'ftp.Connect("xxxxx","xxxxx","xxxxxx") $$$LOGINFO("Unable to connect to inteng11")
    if 'ftp.Store(FileName, base64) $$$LOGINFO("Unable to write file")
    if 'ftp.Logout() $$$LOGINFO("Failed to logout")
    quit $$$OK
}

Here's how you can define your own errors.

Create messages.xml with your error messages:

<?xml version="1.0" encoding="UTF-8"?>
<MsgFile Language="en">
    <MsgDomain Domain="asd">
        <Message Id="-1" Name="ErrorName1">Your error 1</Message>
        <Message Id="-2" Name="ErrorName2">Some other error 2 %1 %2</Message>
    </MsgDomain>
</MsgFile>

Import it into Cache:

do ##class(%MessageDictionary).Import("messages.xml")

It will result in two globals being populated:

  • ^CacheMsg
USER>zw ^CacheMsg 
^CacheMsg("asd","ru",-2)="Some other error 2" 
^CacheMsg("asd","ru",-1)="Your error 1"
  •   ^CacheMsgNames
USER>zw ^CacheMsgNames 
^CacheMsgNames("asd",-2)="ErrorName2" 
^CacheMsgNames("asd",-1)="ErrorName1"

Next we generate CustomErrors include file (docs):

USER>Do ##class(%MessageDictionary).GenerateInclude("CustomErrors",,"asd",1) 
Generating CustomErrors.INC ...

Here's what CustomErrors.inc looks like:

#define asdErrorName2 "<asd>-2"
#define asdErrorName1 "<asd>-1"

Now we can use new custom errors:

Include CustomErrors

Class demo.test [ Abstract ]
{

ClassMethod test(A As %Integer) As %Status
{
  if A=1 Quit $$$ERROR($$$asdErrorName1)
  if A=2 Quit $$$ERROR($$$asdErrorName2,"f","6")
  Quit $$$OK
}

}

Results in:

USER>d $system.OBJ.DisplayError(##class(demo.test).test(1))

ERROR <asd>-1: Your error 1

USER>d $system.OBJ.DisplayError(##class(demo.test).test(2))

ERROR <asd>-2: Some other error 2 f 6

Text is not mine, translated from here.