Profound.js
This section of the documentation explains how to install and use Profound.js, the Node.js low-code framework and modernization tool.
- Profound.js Overview
- Installation
- Profound.js Prerequisites
- Installing/Upgrading Profound.js
- Applying License Keys for Profound.js
- Floating Licenses
- Verifying the Installation
- Starting and Ending Profound.js Instances
- Allowing Connections in Windows Firewall
- Configuration File
- accessLog
- accessLogFormat
- accessLogRotation
- additionalStaticPaths
- appendPJSPathlist
- apiPrefix
- asyncArrayIteration
- authenticate
- autoAsyncAwait
- autoTesting
- basicAuthCredentials
- coderflow
- compression
- connectionDetails
- connectorAllowUnsafe
- connectorCredentials
- connectorIASP
- connectorIPFilter
- connectorLibrary
- connectorPassword
- connectorTimeout
- connectorURL
- connectorUser
- custom
- customAuthentication
- customHttpHeaders
- databaseConnections
- dateFormat
- dateSeparator
- db2ConnectionPoolSize
- dbDriver
- decimalFormat
- defaultMode
- deferDefine
- designer
- displayErrors
- enableAtrium
- enableAutomatedTesting
- enableConnector
- enableCORS
- enableDbDefn
- enableRDFCompile
- encryptionKey
- errorScreen
- getAttnProgram
- gitPath
- gitSupport
- host
- hotReloading
- htmlTemplate
- httpRequestAPITimeout
- ideAllowedProfiles
- initialModules
- inspector
- keepColNameCase
- localIdeSettings
- logDirectory
- logging (logging options)
- longHttpTimeout
- mailTransport
- msgFileType
- onerror
- onLicenseEvent
- onPrinterFileClose
- paiPrivateKey
- paiPublicKey
- pathlist
- pjscallKeys
- pjscallSocketTimeout
- port
- preciseDecimal
- preRouting
- profounduiIntegrationMode
- profounduiLibrary
- profounduiServerURL
- redirectHTTP
- requestSizeLimit
- runCcsid
- runMixCcsid
- saveResponseBody
- searchModulesPaths
- securePort
- setProgramSQLDefaults
- sflMsgQueueType
- shell
- shellArgs
- shortHttpTimeout
- showIBMiParmDefn
- socketInactivityTimeout
- sourceCcsid
- sslCert
- sslKey
- sslOptions
- staticFilesDirectory
- staticOptions
- swaggerStatsEnabled
- tcpKeepAlive
- timedTasks
- timeFormat
- timeout
- timeSeparator
- userdataDirectory
- widgetBackend
- workWithSessions
- wsCompressionThreshold
- wsOptions
- Configuring HTTPS/SSL
- Using Multiple Instances (IBM i)
- Replicating a Profound.js Instance (IBM i)
- Profound.js Clustering
- Setting up a Git repo for Profound.js Modules on IBM i
- Uninstalling Profound.js
- Installing Profound.js onto an offline system
- IASP Support
- Using ODBC Database Driver
- Version History
- Autostart Profoundjs with PM2
- Getting Started with Profound.js
- Customizing Built-In Profound.js Screens
- Using Workspaces
- Creating Callable Profound.js Modules
- Hello World
- Generating Profound.js Modules with JumpStart
- Remote Editing with VS Code on IBM i
- Profound.js Debugging with VS Code
- Running Profound.js Spaces Workspaces in Profound.js
- Profound.js Debugging with Chrome DevTools
- Using Low Code
- Profound.js Framework
- Visual Designer for Profound.js
- Strongly typed fields
- Promises
- Fibers
- Hot module reloading
- Error reporting and logging
- Passing parameters to an initial module
- Profound.js Connector
- Setting Up Genie on IBM i
- IBM i DB2 Record Level Access
- IBM i DB2 SQL Access
- Record Level Access via SQL
- Calling IBM i Programs
- Calling IBM i Commands
- Calling System API and Service Program Procedures
- Calling Profound.js Programs from IBM i Sessions
- Offline Capabilities
- Setting up a Connection to a Remote IBM i Instance
- Passing Parameters to Profound.js Modules
- Calling Profound.js Applications on Profound.js Spaces
- Profound.js Coding Reference
- Profound.js API List
- Array API
- pjs.moveArray()
- array.cat()
- pjs.lookup()
- pjs.lookupGT()
- array.lookupLT()
- pjs.tableLookupGT()
- pjs.elem()
- array.lookup()
- pjs.tableLookupGE()
- array.sum()
- pjs.sortArray()
- pjs.tableLookupLE()
- array.subarray()
- array.lookupGE()
- pjs.lookupLE()
- pjs.lookupGE()
- pjs.tableLookup()
- array.lookupLE()
- pjs.arrayOp()
- pjs.tableLookupLT()
- pjs.lookupLT()
- array.lookupGT()
- Call API
- Fiber Call/Wrap API
- pjs.call()
- pjs.callProc()
- pjs.callProcedure()
- pjs.defineProc()
- pjs.getRequestParm()
- pjs.httpRequest()
- pjs.import()
- pjs.lr()
- pjs.parm()
- pjs.refParm()
- pjs.registerAsyncName()
- pjs.require()
- pjs.requireModule()
- pjs.requireServiceProgram()
- pjs.runCommand()
- pjs.sendRequest()
- pjs.spawn()
- pjs.transferControl()
- profoundjs.commandLineCall()
- profoundjs.registerAPI()
- Data Area API
- Data Conversion API
- Data Structure API
- Date/Time API
- date.addDays()
- date.addHours()
- date.addMilliseconds()
- date.addMinutes()
- date.addMonths()
- date.addSeconds()
- date.addYears()
- Date.dayDiff()
- date.extractDay()
- date.extractHours()
- date.extractMicroseconds()
- date.extractMilliseconds()
- date.extractMinutes()
- date.extractMonth()
- date.extractSeconds()
- date.extractYear()
- Date.getDaysInMonth()
- date.getDaysInMonth() method
- Date.hourDiff()
- Date.isLeapYear()
- date.isLeapYear() method
- Date.microsecondDiff()
- Date.millisecondDiff()
- Date.minuteDiff()
- Date.monthDiff()
- Date.secondDiff()
- date.subtractDays()
- date.subtractHours()
- date.subtractMicroseconds()
- date.subtractMilliseconds()
- date.subtractMinutes()
- date.subtractMonths()
- date.subtractSeconds()
- date.subtractYears()
- Date.yearDiff()
- pjs.date()
- pjs.fromLilianDate()
- pjs.fromLilianSeconds()
- pjs.getDatePattern()
- pjs.getDayOfWeek()
- pjs.getTimePattern()
- pjs.getUTCOffset()
- pjs.setCurrentTime()
- pjs.testTimestamp()
- pjs.time()
- pjs.timestamp()
- pjs.toDate()
- pjs.toLilianDate()
- pjs.toLilianSeconds()
- pjs.getCurrentJobDate()
- pjs.getCurrentJobDateNumeric()
- Declaration/Initialization API
- Encryption API
- Error Handling API
- Information/Logging API
- Number API
- Memory Management API
- buffer.readInt64BE()
- buffer.readUInt64BE()
- buffer.writeInt64BE()
- buffer.writeUInt64BE()
- pjs.alloc()
- pjs.assign()
- pjs.bitAnd()
- pjs.bitChange()
- pjs.bitNot()
- pjs.bitOr()
- pjs.bitXor()
- pjs.dealloc()
- pjs.get()
- pjs.getBuffer()
- pjs.getFields()
- pjs.getFieldsArr()
- pjs.getLength()
- pjs.getOccur()
- pjs.getReference()
- pjs.getSize()
- pjs.moveHighToHighZone()
- pjs.moveHighToLowZone()
- pjs.moveLowToHighZone()
- pjs.moveLowToLowZone()
- pjs.nullInd()
- pjs.pointerString()
- pjs.realloc()
- pjs.reclaimActivationGroup()
- pjs.session
- pjs.set()
- pjs.setFields()
- pjs.setOccur()
- pjs.setSwitch()
- pjs.switch()
- pjs.testBit()
- pjs.testZone()
- Printer File API
- Record Level Access API
- file.close()
- file.delete()
- file.endOfData()
- file.equal()
- file.fetchNext()
- file.fetchNextEqual()
- file.fetchPrevious()
- file.fetchPreviousEqual()
- file.found()
- file.getConfig()
- file.getRecord()
- file.isOpen()
- file.open()
- file.positionAfter()
- file.positionTo()
- file.status()
- file.unlock()
- file.update()
- file.write()
- pjs.closeAll()
- pjs.closeFiles()
- pjs.commit()
- pjs.defineTable()
- pjs.downloadTable()
- pjs.endOfData()
- pjs.equal()
- pjs.fields()
- pjs.found()
- pjs.kds()
- pjs.rollBack()
- pjs.setEqual()
- pjs.setFound()
- pjs.uploadTable()
- SQL API
- Data API
- pjs.allocStmt()
- pjs.bindParameters()
- pjs.close()
- pjs.getConnection()
- pjs.getDB()
- pjs.getRemoteDB()
- pjs.escapeString()
- pjs.execute()
- pjs.executeDirect()
- pjs.getSQLOption()
- pjs.setConnectAttr()
- pjs.query()
- pjs.parallelQueries()
- pjs.setSQLOption()
- pjs.setStmtAttr()
- pjs.prepare()
- pjs.connect()
- pjs.disconnect()
- pjs.sqlHelper
- SQL Diagnostics
- SQL Examples
- SQL Fetch API
- String API
- boolean.toString()
- String.all()
- string.check()
- string.checkReverse()
- String.fromEbcdicHex()
- String.fromUcs2Hex()
- string.ltrim()
- string.replaceString()
- string.rtrim()
- string.scan()
- string.scanReplace()
- string.scanReverse()
- string.scanToArray()
- String.setLength()
- String.spaces()
- String.toEbcdicHex()
- string.translate()
- string.trim()
- User Interface API
- display.close()
- display.endOfData()
- display.found()
- display.isOpen()
- display.open()
- display.read()
- display.screen.execute()
- display.screen.executeMessage()
- display.screen.read()
- display.screen.use()
- display.screen.write()
- display.status()
- Grid API
- display.grid.delete()
- display.grid.getRecords()
- display.grid.every()
- display.grid.sort()
- display.grid.replaceRecords()
- display.grid.some()
- display.grid.unshift()
- display.grid.splice()
- display.grid.applyMap()
- display.grid.filter()
- display.grid.write()
- display.grid.getRecordCount()
- display.grid.addRecords()
- display.grid.reduce()
- display.grid.findIndex()
- display.grid.insert()
- display.grid.update()
- display.grid.clear()
- display.grid.setGridRecNumField()
- display.grid.forEach()
- display.grid.getCopyOfData()
- display.grid.getFieldNames()
- display.grid.getRecord()
- display.grid.map()
- display.grid.readChanged()
- display.grid.applyFilter()
- display.grid.pop()
- display.grid.shift()
- display.grid.push()
- display.grid.slice()
- display.grid.find()
- pjs.defineDisplay()
- pjs.display()
- pjs.endOfData() for displays
- pjs.messageBox()
- Server Management API
- IFS API
- Miscellaneous PJS APIs
- Array API
- Profound.js Constants
- Profound.js Directives
- Profound.js Intellisense
- Profound.js Reserved Words
- Server-side Typescript
- Profound.js Function Handling
- Handling Session Ending in PJS Modules
- Profound.js API List
- Profound.js Server performance
- Profound.js performance logging
- File Encryption
- Decimal Arithmetic
- Troubleshooting
- PJS tips
- Tip 1: How to create a workspace
- Tip 2: How to quickly call/test/debug a PJS module as a web service
- Tip 3: How to call a low-code module from an RPG program
- Tip 4: How to debug a low-code module by converting to "real" PJS code
- Tip 5: How to set entire body from input parms and get entire response into output parms (in low-code plugin Consume REST Service)
- Tip 6: How to handle variable-size array in body and response (in low-code plugin Consume REST Service)
- Tip 7: How to use commands PJSMYIP and PJSCALL to call a "regular" PJS module on your PC from IBMi system
- Tip 8: How to generate a load-all subfile PJS app from Jumpstart and call it from Genie
- Tip 9: How to call an RPG program to return multiple records for a PAPI route