!xcall.bsi [102] - standard xcall definitions (defxcall)
!------------------------------------------------------------------------
!EDIT HISTORY
! [100] 14-Apr-19 / jdm / created (EMAILX)
! [101] 18-May-23 / jdm / added about a hundred defs
! [102] 30-May-23 / jdm / add ++if for backward compatibility; adjust
!                           INFLD param names to match APN tip
!------------------------------------------------------------------------
!REQUIREMENTS
!
!NOTES
!   Compiler (as of edit 1019) complains about DEFXCALL names that are 
!   keywords (e.g. AMOS, GET, ...).  So those are commented out for now.
!   Also, as of compiler 1019, there is no ++if directive that checks for
!   existence of a defxcall, so we'll use an artificial symbol here. 
!   (It's legal to process duplicate DEFXCALL statements, as long as they
!   are identical, so the point here is just to avoid redundant effort.)
!------------------------------------------------------------------------

++ifndef XCALL_DEF_INC

    define XCALL_DEF_INC = 1

    ++if COMPILER_VERSION >= 1020  ! needed to allow keywords in defxcalls...
      defxcall AMOS, cmd="" {, qflag=0, pflag=0, chainto$}
      defxcall GET, buffer {,chan, bytes'req, bytes'rcvd, timeout, flags}
    ++endif

    defxcall ANYCN, cngctl, whatno
    defxcall ASFLAG, flag
    defxcall ATEAPX, hostspec, pcdir, pcfile, flags, status
    defxcall AUI+AUI_CONTROL, opcode, ctlid {, ctext="", cstate=MBST_ENABLE, ctype, cmd="", func="", cstatus=NUL_CSTATUS, &
                srow, scol, erow, ecol, fgc=NUL_FGC, bgc=NUL_BGC, fontattr=0, fontscale=0, fontface="", &
                tooltip="", parentid=0, winclass="", winstyle=0, winstylex=0, ctype2=0}
    defxcall AUI+AUI_EVENTWAIT, parentid=0, ctlid=0, exitcode {, opflags, timer}
    defxcall AUI+AUI_ENVIRONMENT, opcode=0, guiflags
    defxcall AUI+AUI_WINDOW, opflag {,lft, top, rgt, btm, rows, cols, tsts, bsts, cid, hg, vg, monitors, winsts}
    defxcall AUI+AUI_HTMLHELP, opcode, status, hfile {,htopic, row, col}

    defxcall B64ENC, infile'or'data, och'or'outdata, status {,flag}
    defxcall BASORT, ch, reccnt, recsiz, k1siz, k1pos, k1ord {,k2siz, k2pos, k2ord, k3siz=0, k3pos=0, k3ord=0, k1typ, k2typ, k3typ, k4siz=0, k4pos=0, k4ord=0, k5siz=0, k5pos=0, k5ord=0, k6siz=0, k6pos=0, k6ord=0, k4typ, k5typ, k6typ}
    defxcall BITOPS, opcode, chfld, pos, result, result2
    defxcall BLOFSH+1, impure, key
    defxcall BLOFSH+2, impore, cleartext, ciphertext
    defxcall BLOFSH+3, impure, ciphertext, cleartext

    defxcall CGIUTL+CGIOP_STATUS, status
    defxcall CGIUTL+CGIOP_STDIN, string, status
    defxcall CGIUTL+CGIOP_GETPAR, parmname, parmval, status {,string}
    ! note that program may supply more params than are listed (up to varsub256)
    defxcall CGIUTL+CGIOP_MRGOUT, file, status {,varsub1, varsub2, varsub3, varsub4, varsub5, varsub6, varsub7, varsub8, varsub9, varsub10 }
    defxcall CGIUTL+CGIOP_STDOUT, string, status
    defxcall CGIUTL+CGIOP_GETENV, envvar, envdef, status
    defxcall CGIUTL+CGIOP_MRGFIL, file, status, outch {,varsub1, varsub2, varsub3, varsub4, varsub5, varsub6, varsub7, varsub8, varsub9, varsub10 }
    defxcall CGIUTL+CGIOP_GETPARX, file, status, skipcount, parmname1, parmvalue1{,parmname2, parmvalue2, parmname3, parmvalue3} 
    defxcall CGIUTL+CGIUP_UNESCAPE, in, out, status
    defxcall CGIUTL+CGIOP_GETREQ, status
    defxcall CGIUTL+CGIOP_GETPARARY, status, $ary() {, string}

    defxcall COMMON, snd'rcv, msgnam, var
    defxcall CONDEV, dev {,dnsflag}
    defxcall CRC16, block, crc16, blksiz
    defxcall CRYPTO, opcode, status, src, decoding, dst, encoding, cflags {,cipher, key, keybits, cmode, padding, cbsrc, iv, aad, authtag}

    defxcall DATES+DTOP_CVTFMT, result, date1, date2
    defxcall DATES+DTOP_DATEAFTER, result, date1, date2, days
    defxcall DATES+DTOP_DAYSAFTER, result, date1, date2, days
    defxcall DATES+DTOP_YWD, result, date1, date2
    defxcall DATES+DTOP_YMWD, result, date1, date2
    defxcall DATES+DTOP_EOM, result, date1, date2
    defxcall DATES+DTOP_ODTIM, result, testdate, tim, flags, outbuf'or'chan
    defxcall DATES+DTOP_IDTIM, result, inputstr, flags, outdate, outtime
    defxcall DATES+DTOP_RANGE, result, testdate, lodate, hidate, out'of'range

    defxcall DIGEST, digtype, srcdata, bytes, digest, status
    defxcall DSKCOM, snd'rcv, msgnam, var
    defxcall DSKPPN, disk, ppn
    defxcall DSTOI, xdate

    defxcall EMAILX, opflags, cfgfile$, to$, header$, body$, status {,from$="", attachments="", signature'filespec$="", errmsg$="", socket=0 ,server$="", host$="", username$="", password$=""}

    defxcall FILNAM, ch, fname
    defxcall FLOCK, action, mode, status, file, rec
    defxcall FTP2, host, user, pw, localpath, hostfile, hostdir, opcode, status, port {, emsg, privkey, passphrase}

    ! [102] See top for GET
    defxcall GETBYT, channel, buffer, bytes
    defxcall GETPRG, prgnam {,sbxnam="", svr'prgnam="", svr'prgver="", prgdir="", sbxdir=""}

    defxcall HOSTEX, cmd {,status, stdout}
    defxcall HTTP, opcode, status, flags, url, request, response {,properties, certpw}

    defxcall IDTIM, stringfmt, idate, itime, flags, status
    defxcall INFLD, row=0, col=0, xmax=10, xmin=0, type$="*]", entry$, inxctl=0 {, parentid=1, opcode=1, exitcode=0, timer=0, cmdflg=0, defpt=-1, maxpt=-1, funmap=-1, setdef="", infclr=0, hlpidx="", xmaxchrs}
    defxcall INIX, inifile, opcode, section, item {,value, defvalue}
    defxcall INMEMO, opcode, text, channel, strow, stcol, endrow, endcol, link, xpos, vspec, mmoclr, extctl
    defxcall ISMBLD, opflags, status, fspec, keysiz, keypos, recsiz, reccnt {,idadev, infile, maxrecs, idxblksiz, idxlvls, extrablks, exprecs}
    defxcall ISMPAR, ifname, ismpak {,lvl1cnt, keyalc}
    defxcall ISMROK, ch, idaalc, idaavl {, recsiz, keysiz, keypos, devdrv, idxalc, idxavl, idanxt, idxnxt, idx'lvls, idx'blk'siz, idx'type, keyalc}
    defxcall ITC, func, type, msg, retv

    defxcall JULCVT, sepdat, juldat, flag {,status}

    defxcall LOG, logstr {,qflag="", status}

    defxcall MATCH, rtncod, value, range
    defxcall MSBOXX, strow, stcol, endrow, endcol, boxcod {, boxsts, boxclr}
    defxcall MSGBOX, msg, title, btnflag, iconflag {,miscflags, rtncde, mxflags, timeout, timein, url, iconspec, btn1, btn2, btn3, btn4, btn5, tip1, tip2, tip3, tip4, tip5, fontface, fontscale, fgc, bgc}

    defxcall NFIND, string, stpos, endpos, char, pos

    defxcall OAUTH2, opcode, status, clientid$, clientsecret$, option, auth'endpoint$, token'endpoint$, challenge$, scope$, refresh'token$, response$, handle, stsmsg$ {,file$}
    defxcall ODTIM, stringfmt, odate=0, otime=0, flags

    defxcall PCKLST, row, col, answer, maxcnt, prompt, exitcode {, strow, endrow, flags, file, mmoclr}
    defxcall PUTBYT, channel, buffer, bytes

    defxcall RENAME, oldname, newname, status

    defxcall SBXINP, label="", opcode=1, row=0, col=0, xmax=10, entry, inftype="", setdef="", maxchars=10, clickcode=0, tooltip="", parentid=0, exitcode=0 {, defpt, timer, cmdflg, maxpt, infdid, labelid, changeflag}
    defxcall SIZE, fspec, count{,flags}
    defxcall SORTIT, array, reccnt, recsiz, k1siz, k1pos, k1ord {,k2siz=0, k2pos=0, k2ord=0, k3siz=0, k3pos=0, k3ord=0, k1typ, k2typ=0, k3typ=0, k4siz=0, k4pos=0, k4ord=0, k5siz=0, k5pos=0, k5ord=0, k6siz=0, k6pos=0, k6ord=0, k4typ=0, k5typ=0, k6typ=0}
    defxcall SQUEEZ, outbuf, cbout, inbuf {,cbin}
    defxcall SPOOL, file {,printer="", switches=0, copies=1, form="", lpp=0, width=0, prefix="", suffix="", overlay="", totpages}
    defxcall STRTOK, opcode, subject, fdelim, fld1 {,rdelim, fld2, fld3, fld4, fld5}
    defxcall SUBMIT, pid, stdin, stdout, stderr, executable {, arg1, arg2, arg3, arg4}

    defxcall TCPX, opcode, status, buffer, sockprt, flags {, timer, hostname}
    defxcall TIMES, opcode, elapsed
    defxcall TRIM, strvar {,flag}

    defxcall USRCNT, pcount {,lcount, mcount, ixcount}

    defxcall XFOLD, string {,mode, control}
    defxcall XLOCK, mode {,lock1, lock2, class}
    defxcall XRUNLOG, evt, jcbrec, status
    defxcall XSHLEX, objectspec {,status, action, parms, dir, showflags, waitflag, clisvr, exitstatus}
    defxcall XSTRIP, strarg {,filter, opcode}
    defxcall XTEXT, opcode=TXOP_CREATE, flags=0, src, dst, srow, scol, erow, ecol, exitcode, txtctl {,auxdata, fmtdef}
    defxcall XTREE, srow, scol, answer, array, itemcount, coldef, exitcode {, erow, ecol, flags, file, mmoclr, xtrctl, filidx, xinfo}

++endif
