Macro: PROPERTY$HELP

Module location: FMACDD line 10229 (view source)

  #IF (!0>0)
    #IFSAME !1 OF // "of" should have already been processed. This is an error
      #ERROR 302 INVALID USE OF 'OF'
      #SET ZH$ 4 // 4 means error occurred
    #ELSE
      // Check that TO is used properly.
      #IFSAME !1 TO
        #IF (!Zl & 1)
        #ELSE
          #IF (!Zh=3)  // TO already encountered. TOO many Tos
            #ERROR 302 TOO MANY 'TO'
            #SET ZH$ 4 // 4 means error occurred
          #ELSE
            #IF (!0=1) // missing param after to
              #ERROR 302 NO VALUE FOLLOWING 'TO'
              #SET ZH$ 4 // 4 means error occurred
            #ELSE
              #IF (!Zh=1) // A GET or ITEM SET without a TO yet
                #IF (!0>2)  // too many params after the to
                  #ERROR 302 TOO MANY PARAMS AFTER 'TO'
                  #SET ZH$ 4 // 4 means error occurred
                #ELSE
                  #SET ZH$ 3 // Mark as found a to
                #ENDIF
              #ELSE        // If here a non-item SET
                #SET ZH$ 3 // Mark as found a to
              #ENDIF
            #ENDIF
          #ENDIF
        #ENDIF
      #ELSE
        #IFSAME !1 ITEM
        #ELSE
          #SET ZG$ !ZG
          #IFDEF !1
            #DPUSH !1
          #ELSE
            #IFCLASS !1 0123456789ABCDEF
              #DPUSH !1
            #ELSE
              //#IFDEF MSG_!1
              //  #DPUSH MSG_!1
              //#ELSE
              //  #DPUSH |CI0
              //  #FREF MSG_!1 !a,!Zg
              //#ENDIF

              #IFDEF GET_!1 // if defined as a function
              // This would support passing of object names as parameters. Not supported
              // for now.
              //  #IF (GET_!1>$40000000) // and an object access method..we will help out
              //    // this is where we can get tricky and use access methods
              //    #IFDEF USE$NEAR$OBJECT
              //      DPUSH$EXP (obj(GET_1))
              //      //#DPUSH (obj(GET_!1))
              //    #ELSE
              //      DPUSH$EXP (!1(current_object))
              //      //#DPUSH (!1(Current_object))
              //    #ENDIF
              //  #ELSE       // if defined as a function but not an access method. This is an error
                  #DPUSH !1 // will generate an Error
              //  #ENDIF
              #ELSE       // If undefined
                // this could be msg_!1 but we will call than an error
                //#DPUSH !1 // will generate an Error
                #IFDEF MSG_!1
                  #DPUSH MSG_!1
                #ELSE
                  #DPUSH |CI0
                  #FREF MSG_!1 !a,!Zg
                #ENDIF

              #ENDIF
            #ENDIF
          #ENDIF
        #ENDIF
      #ENDIF
    #ENDIF
    #IF (!Zh<4) // 4 indicates an error occurred
      PROPERTY$HELP !2 !3 !4 !5 !6 !7 !8 !9 // as long as there is still no error
    #ENDIF
  #ELSE
    #IF (!Zh<3) // If 1 or 2, TO was never found
      #ERROR 302 MISSING 'TO' KEYWORD
    #ENDIF
  #ENDIF